File tree 5 files changed +83
-3
lines changed
test/Field/Page/Fieldtype/FieldtypeOptions
5 files changed +83
-3
lines changed Original file line number Diff line number Diff line change
1
+ ## [ 1.4.2] ( https://github.com/dadish/ProcessGraphQL/compare/v1.4.1...v1.4.2 ) (2023-05-14)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * ** FeildtypeOptions:** fix error for empty values when it's a single option ([ 7a02e9d] ( https://github.com/dadish/ProcessGraphQL/commit/7a02e9d1af24dda78fd40ebb4a96710a55fe67e4 ) )
7
+
8
+ ## [ 1.4.2-rc.1] ( https://github.com/dadish/ProcessGraphQL/compare/v1.4.1...v1.4.2-rc.1 ) (2023-05-14)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * ** FeildtypeOptions:** fix error for empty values when it's a single option ([ 7a02e9d] ( https://github.com/dadish/ProcessGraphQL/commit/7a02e9d1af24dda78fd40ebb4a96710a55fe67e4 ) )
14
+
1
15
## [ 1.4.1] ( https://github.com/dadish/ProcessGraphQL/compare/v1.4.0...v1.4.1 ) (2022-07-30)
2
16
3
17
Original file line number Diff line number Diff line change @@ -15,7 +15,7 @@ class ProcessGraphQL extends Process implements Module {
15
15
{
16
16
return array(
17
17
'title' => 'GraphQL',
18
- 'version' => '1.4.1 ',
18
+ 'version' => '1.4.2 ',
19
19
'summary' => 'GraphQL for ProcessWire.',
20
20
'href' => 'https://github.com/dadish/ProcessGraphql',
21
21
'singular' => true,
Original file line number Diff line number Diff line change 1
1
{
2
2
"name" : " processgraphql" ,
3
- "version" : " 1.4.1 " ,
3
+ "version" : " 1.4.2 " ,
4
4
"description" : " GraphQL for ProcessWire" ,
5
5
"main" : " index.js" ,
6
6
"directories" : {
Original file line number Diff line number Diff line change 9
9
use ProcessWire \GraphQL \Utils ;
10
10
use ProcessWire \GraphQL \Type \Fieldtype \Traits \SetValueTrait ;
11
11
use ProcessWire \GraphQL \Type \Fieldtype \Traits \FieldTrait ;
12
+ use ProcessWire \Page ;
12
13
13
14
class FieldtypeOptions
14
- {
15
+ {
15
16
use FieldTrait;
16
17
use SetValueTrait;
17
18
@@ -63,6 +64,34 @@ public static function type($field)
63
64
return $ type ;
64
65
}
65
66
67
+ public static function field ($ field )
68
+ {
69
+ return Cache::field ($ field ->name , function () use ($ field ) {
70
+ // description
71
+ $ desc = $ field ->description ;
72
+ if (!$ desc ) {
73
+ $ desc = "Field with the type of {$ field ->type }" ;
74
+ }
75
+
76
+ return [
77
+ 'name ' => $ field ->name ,
78
+ 'description ' => $ desc ,
79
+ 'type ' => self ::type ($ field ),
80
+ 'resolve ' => function (Page $ page , array $ args ) use ($ field ) {
81
+ $ fieldName = $ field ->name ;
82
+
83
+ // If a single option field does not have an id, then it means it's empty.
84
+ if (!self ::isMultiple ($ field ) && !$ page ->$ fieldName ->id ) {
85
+ return null ;
86
+ }
87
+
88
+ return $ page ->$ fieldName ;
89
+ }
90
+ ];
91
+ });
92
+ }
93
+
94
+
66
95
public static function inputType ($ field )
67
96
{
68
97
return Cache::type (self ::getName ($ field ), function () use ($ field ) {
Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ /**
4
+ * Empty options field should return null.
5
+ */
6
+
7
+ namespace ProcessWire \GraphQL \Test \FieldtypeOptions ;
8
+
9
+ use ProcessWire \GraphQL \Utils ;
10
+ use ProcessWire \GraphQL \Test \GraphQLTestCase ;
11
+
12
+ class CaseFiveTest extends GraphQLTestCase
13
+ {
14
+ const settings = [
15
+ "login " => "admin " ,
16
+ "legalTemplates " => ["city " ],
17
+ "legalFields " => ["options_single " ],
18
+ ];
19
+
20
+ public function testValue ()
21
+ {
22
+ $ city = Utils::pages ()->get ("template=city, options_single='' " );
23
+ $ query = "{
24
+ city (s: \"id= $ city ->id \") {
25
+ list {
26
+ options_single {
27
+ title
28
+ value
29
+ id
30
+ }
31
+ }
32
+ }
33
+ } " ;
34
+ $ res = self ::execute ($ query );
35
+ self ::assertNull ($ res ->data ->city ->list [0 ]->options_single , "Empty option field should return null. " );
36
+ }
37
+ }
You can’t perform that action at this time.
0 commit comments