5 use Drupal\Core\Database\Connection;
6 use Drupal\Core\Database\Query\ConditionInterface;
7 use Drupal\Core\Database\Query\SelectInterface;
8 use Drupal\Core\Database\StatementInterface;
9 use Drupal\Core\DependencyInjection\Container;
10 use Drupal\Core\Routing\RouteMatchInterface;
14 use MockChain\Options;
15 use PHPUnit\Framework\TestCase;
27 'public dataset object' => [
29 (object) [
'accessLevel' =>
'public'],
33 'resource object with non-public parent dataset' => [
35 (
object) [
'identifier' =>
'1',
'data' => [
'foo' =>
'bar']],
36 [
'{"accessLevel":"non-public"}'],
39 'resource json string with public parent dataset' => [
41 '{"identifier":"1","data":{"foo":"bar"}}',
42 [
'{"accessLevel":"public"}'],
45 'resource uuid with public parent dataset' => [
47 '6b1f0bb4-60cd-5b27-8e03-5fecff4c7e2a',
48 [
'{"accessLevel":"non-public"}'],
59 ->add(StatementInterface::class,
'fetchCol', $datasets);
62 $container->getMock(),
64 'non_public_resource_protector',
68 $this->assertEquals($expected, $plugin->requiresModification($schema, $data));
76 'dataset json string without resources' => [
81 'dataset object with empty distribution array' => [
83 (object) [
"foo" =>
"bar",
"distribution" => []],
84 (
object) [
"foo" =>
"bar",
"distribution" => []],
96 'non_public_resource_protector',
100 $this->assertEquals($expected, $plugin->modify($schema, $data));
107 $pluginMessage =
"Resource hidden since dataset access level is non-public.";
109 $options = (
new Options())
110 ->add(
'database', Connection::class)
111 ->add(
'current_route_match', RouteMatchInterface::class)
114 return (
new Chain($this))
115 ->add(Container::class,
'get', $options)
116 ->add(Connection::class,
'select', SelectInterface::class)
117 ->add(SelectInterface::class,
'condition', ConditionInterface::class)
118 ->add(ConditionInterface::class,
'condition', ConditionInterface::class)
119 ->add(ConditionInterface::class,
'fields', SelectInterface::class)
120 ->add(SelectInterface::class,
'execute', StatementInterface::class)
121 ->add(StatementInterface::class,
'fetchCol', [])
122 ->add(DataModifierBase::class,
'message', $pluginMessage);