5
5
* LICENSE file in the root directory of this source tree.
6
6
*/
7
7
8
- import { GraphQLInt , GraphQLFloat , GraphQLString , GraphQLBoolean } from '../' ;
8
+ import {
9
+ GraphQLInt ,
10
+ GraphQLID ,
11
+ GraphQLFloat ,
12
+ GraphQLString ,
13
+ GraphQLBoolean ,
14
+ } from '../' ;
9
15
10
16
import { describe , it } from 'mocha' ;
11
17
import { expect } from 'chai' ;
12
18
13
19
describe ( 'Type System: Scalar coercion' , ( ) => {
14
- it ( 'serializes output int ' , ( ) => {
20
+ it ( 'serializes output as Int ' , ( ) => {
15
21
expect ( GraphQLInt . serialize ( 1 ) ) . to . equal ( 1 ) ;
16
22
expect ( GraphQLInt . serialize ( '123' ) ) . to . equal ( 123 ) ;
17
23
expect ( GraphQLInt . serialize ( 0 ) ) . to . equal ( 0 ) ;
18
24
expect ( GraphQLInt . serialize ( - 1 ) ) . to . equal ( - 1 ) ;
19
25
expect ( GraphQLInt . serialize ( 1e5 ) ) . to . equal ( 100000 ) ;
26
+ expect ( GraphQLInt . serialize ( false ) ) . to . equal ( 0 ) ;
27
+ expect ( GraphQLInt . serialize ( true ) ) . to . equal ( 1 ) ;
28
+
20
29
// The GraphQL specification does not allow serializing non-integer values
21
30
// as Int to avoid accidental data loss.
22
31
expect ( ( ) => GraphQLInt . serialize ( 0.1 ) ) . to . throw (
@@ -49,17 +58,19 @@ describe('Type System: Scalar coercion', () => {
49
58
expect ( ( ) => GraphQLInt . serialize ( 'one' ) ) . to . throw (
50
59
'Int cannot represent non 32-bit signed integer value: one' ,
51
60
) ;
52
- expect ( GraphQLInt . serialize ( false ) ) . to . equal ( 0 ) ;
53
- expect ( GraphQLInt . serialize ( true ) ) . to . equal ( 1 ) ;
61
+ // Doesn't represent number
54
62
expect ( ( ) => GraphQLInt . serialize ( '' ) ) . to . throw (
55
63
'Int cannot represent non 32-bit signed integer value: (empty string)' ,
56
64
) ;
57
65
expect ( ( ) => GraphQLInt . serialize ( NaN ) ) . to . throw (
58
66
'Int cannot represent non 32-bit signed integer value: NaN' ,
59
67
) ;
68
+ expect ( ( ) => GraphQLInt . serialize ( [ 5 ] ) ) . to . throw (
69
+ 'Int cannot represent an array value: [5]' ,
70
+ ) ;
60
71
} ) ;
61
72
62
- it ( 'serializes output float ' , ( ) => {
73
+ it ( 'serializes output as Float ' , ( ) => {
63
74
expect ( GraphQLFloat . serialize ( 1 ) ) . to . equal ( 1.0 ) ;
64
75
expect ( GraphQLFloat . serialize ( 0 ) ) . to . equal ( 0.0 ) ;
65
76
expect ( GraphQLFloat . serialize ( '123.5' ) ) . to . equal ( 123.5 ) ;
@@ -74,30 +85,42 @@ describe('Type System: Scalar coercion', () => {
74
85
expect ( ( ) => GraphQLFloat . serialize ( NaN ) ) . to . throw (
75
86
'Float cannot represent non numeric value: NaN' ,
76
87
) ;
77
-
78
88
expect ( ( ) => GraphQLFloat . serialize ( 'one' ) ) . to . throw (
79
89
'Float cannot represent non numeric value: one' ,
80
90
) ;
81
-
82
91
expect ( ( ) => GraphQLFloat . serialize ( '' ) ) . to . throw (
83
92
'Float cannot represent non numeric value: (empty string)' ,
84
93
) ;
94
+ expect ( ( ) => GraphQLFloat . serialize ( [ 5 ] ) ) . to . throw (
95
+ 'Float cannot represent an array value: [5]' ,
96
+ ) ;
85
97
} ) ;
86
98
87
- it ( 'serializes output strings' , ( ) => {
88
- expect ( GraphQLString . serialize ( 'string' ) ) . to . equal ( 'string' ) ;
89
- expect ( GraphQLString . serialize ( 1 ) ) . to . equal ( '1 ' ) ;
90
- expect ( GraphQLString . serialize ( - 1.1 ) ) . to . equal ( '-1. 1' ) ;
91
- expect ( GraphQLString . serialize ( true ) ) . to . equal ( 'true ' ) ;
92
- expect ( GraphQLString . serialize ( false ) ) . to . equal ( 'false ' ) ;
93
- } ) ;
99
+ for ( const scalar of [ GraphQLString , GraphQLID ] ) {
100
+ it ( `serializes output as ${ scalar } ` , ( ) => {
101
+ expect ( scalar . serialize ( 'string' ) ) . to . equal ( 'string ' ) ;
102
+ expect ( scalar . serialize ( 1 ) ) . to . equal ( '1' ) ;
103
+ expect ( scalar . serialize ( - 1.1 ) ) . to . equal ( '-1.1 ' ) ;
104
+ expect ( scalar . serialize ( true ) ) . to . equal ( 'true ' ) ;
105
+ expect ( scalar . serialize ( false ) ) . to . equal ( 'false' ) ;
94
106
95
- it ( 'serializes output boolean' , ( ) => {
107
+ expect ( ( ) => scalar . serialize ( [ 1 ] ) ) . to . throw (
108
+ 'String cannot represent an array value: [1]' ,
109
+ ) ;
110
+ } ) ;
111
+ }
112
+
113
+ it ( 'serializes output as Boolean' , ( ) => {
96
114
expect ( GraphQLBoolean . serialize ( 'string' ) ) . to . equal ( true ) ;
115
+ expect ( GraphQLBoolean . serialize ( 'false' ) ) . to . equal ( true ) ;
97
116
expect ( GraphQLBoolean . serialize ( '' ) ) . to . equal ( false ) ;
98
117
expect ( GraphQLBoolean . serialize ( 1 ) ) . to . equal ( true ) ;
99
118
expect ( GraphQLBoolean . serialize ( 0 ) ) . to . equal ( false ) ;
100
119
expect ( GraphQLBoolean . serialize ( true ) ) . to . equal ( true ) ;
101
120
expect ( GraphQLBoolean . serialize ( false ) ) . to . equal ( false ) ;
121
+
122
+ expect ( ( ) => GraphQLBoolean . serialize ( [ false ] ) ) . to . throw (
123
+ 'Boolean cannot represent an array value: [false]' ,
124
+ ) ;
102
125
} ) ;
103
126
} ) ;
0 commit comments