5 use Drupal\Core\DependencyInjection\Container;
13 use MockChain\Options;
14 use PHPUnit\Framework\TestCase;
15 use Sae\Sae as Engine;
27 ->add(SchemaRetriever::class,
"getAllIds", [
"1"]);
30 $this->assertEquals(json_encode([
"1" =>
"blah"]), json_encode($service->getSchemas()));
40 $this->assertEquals(json_encode(
"blah"), json_encode($service->getSchema(
"1")));
48 ->add(Sae::class,
"getInstance", Engine::class)
49 ->add(Engine::class,
"get", [json_encode(
"blah")]);
53 $this->assertEquals(json_encode([
"blah"]), json_encode($service->getAll(
"dataset")));
61 ->add(Sae::class,
"getInstance", Engine::class)
62 ->add(Engine::class,
"get", json_encode(
"blah"));
66 $this->assertEquals(json_encode(
"blah"), $service->get(
"dataset",
"1"));
76 (
object) [
"title" =>
"hello"],
81 ->add(Sae::class,
"getInstance", Engine::class)
82 ->add(Engine::class,
"get", json_encode($dataset));
86 $this->assertEquals(json_encode([(
object) [
"title" =>
"hello"]]),
87 json_encode($service->getResources(
"dataset",
"1")));
95 ->add(Sae::class,
"getInstance", Engine::class)
96 ->add(Engine::class,
"post",
"1");
100 $this->assertEquals(
"1", $service->post(
"dataset", json_encode(
"blah")));
108 ->add(Sae::class,
"getInstance", Engine::class)
109 ->add(Engine::class,
"get",
"1");
113 $this->expectException(ExistingObjectException::class);
114 $service->post(
"dataset",
'{"identifier":1,"title":"FooBar"}');
122 ->add(Sae::class,
"getInstance", Engine::class)
123 ->add(Engine::class,
"put",
"1")
124 ->add(Engine::class,
"get",
"1");
128 $info = $service->put(
"dataset",
"1", json_encode(
"blah"));
129 $this->assertEquals(
"1", $info[
'identifier']);
136 $existing =
'{"identifier":"1","title":"Foo"}';
137 $updating =
'{"identifier":"2","title":"Bar"}';
140 ->add(Sae::class,
"getInstance", Engine::class)
141 ->add(Engine::class,
"get", $existing);
145 $this->expectExceptionMessage(
"Identifier cannot be modified");
146 $service->put(
"dataset",
"1", $updating);
153 $data =
'{"identifier":"3","title":"FooBar"}';
155 ->add(Sae::class,
"getInstance", Engine::class)
156 ->add(Engine::class,
"get",
new \Exception())
157 ->add(Engine::class,
"put",
"3")
158 ->add(Engine::class,
"post",
"3");
161 $info = $service->put(
"dataset",
"3", $data);
162 $this->assertEquals(
"3", $info[
'identifier']);
169 $existing =
'{"identifier":"1","title":"Foo"}';
172 ->add(Sae::class,
"getInstance", Engine::class)
173 ->add(Engine::class,
"get", $existing);
176 $this->expectException(UnmodifiedObjectException::class);
177 $service->put(
"dataset",
"1", $existing);
184 $existing =
'{"identifier":"1","title":"Foo"}';
193 ->add(Sae::class,
"getInstance", Engine::class)
194 ->add(Engine::class,
"get", $existing);
197 $this->expectException(UnmodifiedObjectException::class);
198 $service->put(
"dataset",
"1", $updating);
206 ->add(Sae::class,
"getInstance", Engine::class)
207 ->add(Engine::class,
"patch",
"1")
208 ->add(Engine::class,
"get",
"1");
212 $this->assertEquals(
"1", $service->patch(
"dataset",
"1", json_encode(
"blah")));
219 $data =
'{"identifier":"1","title":"FooBar"}';
222 ->add(Sae::class,
"getInstance", Engine::class)
223 ->add(Engine::class,
"get",
new \Exception());
226 $this->expectException(MissingObjectException::class);
227 $service->patch(
"dataset",
"1", $data);
235 ->add(Sae::class,
"getInstance", Engine::class)
236 ->add(Engine::class,
"delete",
"1")
237 ->add(Engine::class,
"get",
"1");
241 $this->assertEquals(
"1", $service->delete(
"dataset",
"1"));
248 $catalog = (object) [
249 "@id" =>
"http://catalog",
252 $dataset = (object) [
"foo" =>
"bar"];
255 ->add(SchemaRetriever::class,
"retrieve", json_encode($catalog))
256 ->add(Sae::class,
"getInstance", Engine::class)
257 ->add(Engine::class,
"get", [json_encode($dataset), json_encode($dataset)]);
260 $catalog->dataset = [
264 $this->assertEquals($catalog, $service->getCatalog());
271 $options = (
new Options())
272 ->add(
'dkan_schema.schema_retriever', SchemaRetriever::class)
273 ->add(
'dkan_metastore.sae_factory', Sae::class)
276 return (
new Chain($this))
277 ->add(Container::class,
"get", $options)
278 ->add(SchemaRetriever::class,
"retrieve", json_encode(
"blah"));