5 use Drupal\Core\Database\Query\SelectInterface;
8 use PHPUnit\Framework\TestCase;
9 use Drupal\Core\Serialization\Yaml;
12 use MockChain\Options;
15 use Symfony\Component\DependencyInjection\ContainerInterface;
26 $dataset = json_encode([
29 'identifier' =>
'dist-1234',
32 'description' =>
'Description',
38 $mockChain = $this->getCommonMockChain()
39 ->add(Service::class,
"get", $dataset)
40 ->add(DataModifierManager::class,
'getDefinitions', [])
41 ->add(SelectInterface::class,
'fetchCol', []);
44 $response = $controller->getDatasetSpecific(1);
46 $spec =
'{"openapi":"3.0.1","info":{"title":"API Documentation","version":"Alpha"},"tags":[],"paths":{"\/random\/prefix\/api\/1\/metastore\/schemas\/dataset\/items\/1":{"get":{"summary":"Get this dataset","tags":["Dataset"],"parameters":[{"name":"identifier","in":"path","description":"Dataset uuid","required":true,"schema":{"type":"string"},"example":"1"}],"responses":{"200":{"description":"Ok"}}}},"\/random\/prefix\/api\/1\/datastore\/sql?query=[SELECT * FROM dist-1234];":{"get":{"summary":"Query resources","tags":["SQL Query"],"parameters":[{"name":"query","in":"query","description":"SQL query","required":true,"schema":{"type":"string"},"example":"[SELECT * FROM dist-1234];"}],"responses":{"200":{"description":"Ok"}}}}},"components":{"parameters":{"query":{"name":"query","in":"query","description":"SQL query","required":true,"schema":{"type":"string"},"example":"[SELECT * FROM DATASTORE-UUID];"}}}}';
47 $this->assertEquals($spec, $response->getContent());
54 $mockChain = $this->getCommonMockChain()
55 ->add(Service::class,
"get",
"{}")
56 ->add(DataModifierManager::class,
'getDefinitions', [[
'id' =>
'foobar']])
57 ->add(DataModifierManager::class,
'createInstance', DataModifierBase::class)
58 ->add(DataModifierBase::class,
'requiresModification', TRUE);
61 $response = $controller->getDatasetSpecific(1);
63 $spec =
'{"openapi":"3.0.1","info":{"title":"API Documentation","version":"Alpha"},"tags":[],"paths":{"\/random\/prefix\/api\/1\/metastore\/schemas\/dataset\/items\/1":{"get":{"summary":"Get this dataset","tags":["Dataset"],"parameters":[{"name":"identifier","in":"path","description":"Dataset uuid","required":true,"schema":{"type":"string"},"example":"1"}],"responses":{"200":{"description":"Ok"}}}}},"components":{"parameters":{"query":{"name":"query","in":"query","description":"SQL query","required":true,"schema":{"type":"string"},"example":"[SELECT * FROM DATASTORE-UUID];"}}}}';
64 $this->assertEquals($spec, $response->getContent());
70 private function getCommonMockChain() {
71 $serializer =
new Yaml();
73 $yamlSpec = file_get_contents(__DIR__ .
"/docs/dkan_api_openapi_spec.yml");
75 $mockChain =
new Chain($this);
76 $mockChain->add(ContainerInterface::class,
'get',
77 (
new Options)->add(
'dkan_api.docs', Docs::class)
78 ->add(
'dkan_metastore.service', Service::class)
79 ->add(
'plugin.manager.dkan_common.data_modifier', DataModifierManager::class)
82 ->add(Docs::class,
"getJsonFromYmlFile", $serializer->decode($yamlSpec));