4 use Drupal\Component\DependencyInjection\Container;
6 use Procrastinator\Result;
7 use Symfony\Component\HttpFoundation\Request;
8 use Symfony\Component\HttpFoundation\JsonResponse;
9 use Symfony\Component\HttpFoundation\RequestStack;
10 use Contracts\Mock\Storage\MemoryFactory;
12 use PHPUnit\Framework\TestCase;
14 use Symfony\Component\DependencyInjection\ContainerInterface;
30 $container = $this->getMockBuilder(ContainerInterface::class)
32 ->disableOriginalConstructor()
33 ->getMockForAbstractClass();
35 $container->method(
'get')
38 $this->equalTo(
'dkan_harvest.service'),
39 $this->equalTo(
'dkan_harvest.logger_channel'),
40 $this->equalTo(
'request_stack')
43 ->will($this->returnCallback([$this,
'containerGet']));
53 case 'dkan_harvest.service':
54 return new Harvester(
new MemoryFactory());
58 $stack = $this->getMockBuilder(RequestStack::class)
59 ->disableOriginalConstructor()
60 ->setMethods([
'getCurrentRequest'])
63 $stack->method(
"getCurrentRequest")->willReturn($this->request);
76 $response = $controller->index();
77 $this->assertEquals(JsonResponse::class, get_class($response));
78 $this->assertEquals($response->getContent(), json_encode([]));
85 $this->request =
new Request();
87 $response = $controller->register();
88 $this->assertEquals(JsonResponse::class, get_class($response));
89 $this->assertEquals($response->getContent(), json_encode([
"message" =>
"Harvest plan must be a php object."]));
96 $request = $this->getMockBuilder(Request::class)
97 ->setMethods([
'getContent'])
98 ->disableOriginalConstructor()
102 'identifier' =>
'test',
103 'extract' => [
'type' =>
"blah",
"uri" =>
"http://blah"],
104 'load' => [
'type' =>
'blah'],
107 $request->method(
'getContent')->willReturn(json_encode($plan));
109 $this->request = $request;
112 $response = $controller->register();
113 $this->assertEquals(JsonResponse::class, get_class($response));
114 $this->assertEquals($response->getContent(), json_encode([
"identifier" =>
"test"]));
116 $response = $controller->index();
117 $this->assertEquals(JsonResponse::class, get_class($response));
124 $options = (
new Options())
125 ->add(
"request_stack", RequestStack::class)
126 ->add(
"dkan_harvest.service", Harvester::class)
129 $container = (
new Chain($this))
130 ->add(Container::class,
"get", $options)
131 ->add(RequestStack::class,
'getCurrentRequest', Request::class)
132 ->add(Request::class,
'getContent', json_encode((
object) [
'plan_id' =>
'test']))
133 ->add(Harvester::class,
"runHarvest", Result::class)
136 $controller = Api::create($container);
137 $response = $controller->run();
138 $this->assertEquals(JsonResponse::class, get_class($response));