-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathReadAnyFieldDescriptionTest.php
120 lines (108 loc) · 3.57 KB
/
ReadAnyFieldDescriptionTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
namespace SilverStripe\AnyField\Tests\GraphQL;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\AnyField\GraphQL\AnyFieldDescriptionResolver;
use SilverStripe\Dev\FunctionalTest;
use SilverStripe\LinkField\Models\ExternalLink;
use SilverStripe\LinkField\Models\EmailLink;
class ReadAnyFieldDescriptionTest extends FunctionalTest
{
public function testListOfLinks()
{
$links = [
[
'ID' => '1',
'Title' => 'My update link',
'ExternalUrl' => 'http://www.google.co.nz',
'dataObjectClassKey' => ExternalLink::class,
],
[
'Title' => 'My new email address',
'OpenInNew' => 1,
'Email' => '[email protected]',
'ID' => 'aebc8afd-7fbc-4503-bc8f-3fd459a3f2de',
'dataObjectClassKey' => EmailLink::class
]
];
$expected = [
[
'id' => '1',
'title' => 'My update link',
'description' => 'http://www.google.co.nz',
'__typename' => 'AnyFieldDescription'
],
[
'id' => 'aebc8afd-7fbc-4503-bc8f-3fd459a3f2de',
'title' => 'My new email address',
'description' => '[email protected]',
'__typename' => 'AnyFieldDescription'
]
];
$this->logInWithPermission('CMS_ACCESS_CMSMain');
$graphql = $this->graphql(
'ReadAnyFieldDescription',
<<<GRAPHQL
query ReadAnyFieldDescription(\$dataStr: String!) {
readAnyFieldDescription(dataStr: \$dataStr) {
id
description
title
__typename
}
}
GRAPHQL,
['dataStr' => json_encode($links)]
);
$this->assertEquals(
$expected,
$graphql['data']['readAnyFieldDescription'],
'List of links should have been resolved to the expected description'
);
}
public function testSingleLink()
{
$link = [
'ID' => '1',
'Title' => 'My update link',
'ExternalUrl' => 'http://www.google.co.nz',
'dataObjectClassKey' => ExternalLink::class,
];
$expected = [
[
'id' => '1',
'title' => 'My update link',
'description' => 'http://www.google.co.nz',
'__typename' => 'AnyFieldDescription'
]
];
$this->logInWithPermission('CMS_ACCESS_CMSMain');
$graphql = $this->graphql(
'ReadAnyFieldDescription',
<<<GRAPHQL
query ReadAnyFieldDescription(\$dataStr: String!) {
readAnyFieldDescription(dataStr: \$dataStr) {
id
description
title
__typename
}
}
GRAPHQL,
['dataStr' => json_encode($link)]
);
$this->assertEquals(
$expected,
$graphql['data']['readAnyFieldDescription']
);
}
private function graphql(string $ops, string $query, array $vars = []): array
{
$response = $this->post('/admin/graphql', '', ['content-type' => 'application/json'], null, json_encode([
'query' => $query,
'operationName' => $ops,
'variables' => $vars
]));
$body = json_decode($response->getBody(), true);
return $body;
}
}