hq-graphql 0.0.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,173 @@
1
+ require 'rails_helper'
2
+
3
+ describe ::HQ::GraphQL::Mutation do
4
+
5
+ describe ".with_model" do
6
+ let(:hq_input_object) do
7
+ Class.new(described_class) do
8
+ graphql_name "TestQuery"
9
+ end
10
+ end
11
+
12
+ let(:organization_type) do
13
+ Class.new do
14
+ include ::HQ::GraphQL::Resource
15
+
16
+ self.model_name = "Organization"
17
+ end
18
+ end
19
+
20
+ before(:each) do
21
+ organization_type
22
+ end
23
+
24
+ it "adds everything by default" do
25
+ hq_input_object.class_eval do
26
+ with_model "Advisor"
27
+ end
28
+
29
+ expect(hq_input_object.arguments.keys).to be_empty
30
+ hq_input_object.payload_type
31
+ expected = ["createdAt", "id", "name", "organizationId", "updatedAt"]
32
+ expect(hq_input_object.arguments.keys).to contain_exactly(*expected)
33
+ end
34
+
35
+ describe ".remove_attributes" do
36
+ it "removes an attribute" do
37
+ hq_input_object.class_eval do
38
+ remove_attributes :created_at, :id, :organization_id
39
+ with_model "Advisor"
40
+ end
41
+
42
+ expect(hq_input_object.arguments.keys).to be_empty
43
+ hq_input_object.payload_type
44
+ expected = ["name", "updatedAt"]
45
+ expect(hq_input_object.arguments.keys).to contain_exactly(*expected)
46
+ end
47
+
48
+ it "raises an error when trying to remove a column that doesn't exist" do
49
+ hq_input_object.class_eval do
50
+ remove_attributes :doesnt_exist
51
+ with_model "Advisor"
52
+ end
53
+
54
+ expect { hq_input_object.payload_type }.to raise_error(described_class::Error)
55
+ end
56
+
57
+ it "raises an error when not connected to a model" do
58
+ hq_input_object.class_eval do
59
+ remove_attributes :created_at
60
+ end
61
+
62
+ expect { hq_input_object.payload_type }.to raise_error(described_class::Error)
63
+ end
64
+ end
65
+
66
+ describe ".remove_associations" do
67
+ it "removes an association" do
68
+ hq_input_object.class_eval do
69
+ remove_associations :organization
70
+ with_model "Advisor"
71
+ end
72
+
73
+ expect(hq_input_object.arguments.keys).to be_empty
74
+ hq_input_object.payload_type
75
+ expected = ["createdAt", "id", "name", "organizationId", "updatedAt"]
76
+ expect(hq_input_object.arguments.keys).to contain_exactly(*expected)
77
+ end
78
+
79
+ it "raises an error when trying to remove a column that doesn't exist" do
80
+ hq_input_object.class_eval do
81
+ remove_associations :doesnt_exist
82
+ with_model "Advisor"
83
+ end
84
+
85
+ expect { hq_input_object.payload_type }.to raise_error(described_class::Error)
86
+ end
87
+
88
+ it "raises an error when not connected to a model" do
89
+ hq_input_object.class_eval do
90
+ remove_associations :organization
91
+ end
92
+
93
+ expect { hq_input_object.payload_type }.to raise_error(described_class::Error)
94
+ end
95
+ end
96
+
97
+ context "with attributes and associations turned off" do
98
+ it "doesn't have any arguments by default" do
99
+ hq_input_object.payload_type
100
+ expect(hq_input_object.arguments.keys).to be_empty
101
+ end
102
+
103
+ it "doesn't have any arguments when disabling model attrs/associations" do
104
+ hq_input_object.class_eval do
105
+ with_model "Advisor", attributes: false, associations: false
106
+ end
107
+ hq_input_object.payload_type
108
+ expect(hq_input_object.arguments.keys).to be_empty
109
+ end
110
+
111
+ describe ".add_attributes" do
112
+ it "adds attributes" do
113
+ hq_input_object.class_eval do
114
+ add_attributes :name
115
+ with_model "Advisor", attributes: false, associations: false
116
+ end
117
+
118
+ expect(hq_input_object.arguments.keys).to be_empty
119
+ hq_input_object.payload_type
120
+ expect(hq_input_object.arguments.keys).to contain_exactly("name")
121
+ end
122
+
123
+ it "raises an error when adding an attribute that doesn't exist" do
124
+ hq_input_object.class_eval do
125
+ add_attributes :doesnt_exist
126
+ with_model "Advisor", attributes: false, associations: false
127
+ end
128
+
129
+ expect { hq_input_object.payload_type }.to raise_error(described_class::Error)
130
+ end
131
+
132
+ it "raises an error when not connected to a model" do
133
+ hq_input_object.class_eval do
134
+ add_attributes :name
135
+ end
136
+
137
+ expect { hq_input_object.payload_type }.to raise_error(described_class::Error)
138
+ end
139
+ end
140
+
141
+ describe ".add_associations" do
142
+ it "adds associations" do
143
+ hq_input_object.class_eval do
144
+ add_associations :organization
145
+ with_model "Advisor", attributes: false, associations: false
146
+ end
147
+
148
+ expect(hq_input_object.arguments.keys).to be_empty
149
+ hq_input_object.payload_type
150
+ expect(hq_input_object.arguments.keys).to contain_exactly("organizationAttributes")
151
+ end
152
+
153
+ it "raises an error when adding an association that doesn't exist" do
154
+ hq_input_object.class_eval do
155
+ add_associations :doesnt_exist
156
+ with_model "Advisor", attributes: false, associations: false
157
+ end
158
+
159
+ expect { hq_input_object.payload_type }.to raise_error(described_class::Error)
160
+ end
161
+
162
+ it "raises an error when not connected to a model" do
163
+ hq_input_object.class_eval do
164
+ add_associations :organization
165
+ end
166
+
167
+ expect { hq_input_object.payload_type }.to raise_error(described_class::Error)
168
+ end
169
+ end
170
+ end
171
+ end
172
+
173
+ end
@@ -0,0 +1,173 @@
1
+ require 'rails_helper'
2
+
3
+ describe ::HQ::GraphQL::Object do
4
+
5
+ describe ".with_model" do
6
+ let(:hq_object) do
7
+ Class.new(described_class) do
8
+ graphql_name "TestQuery"
9
+ end
10
+ end
11
+
12
+ let(:organization_type) do
13
+ Class.new do
14
+ include ::HQ::GraphQL::Resource
15
+
16
+ self.model_name = "Organization"
17
+ end
18
+ end
19
+
20
+ before(:each) do
21
+ organization_type
22
+ end
23
+
24
+ it "adds everything by default" do
25
+ hq_object.class_eval do
26
+ with_model "Advisor"
27
+ end
28
+
29
+ expect(hq_object.fields.keys).to be_empty
30
+ hq_object.graphql_definition
31
+ expected = ["createdAt", "id", "name", "organization", "organizationId", "updatedAt"]
32
+ expect(hq_object.fields.keys).to contain_exactly(*expected)
33
+ end
34
+
35
+ describe ".remove_attributes" do
36
+ it "removes an attribute" do
37
+ hq_object.class_eval do
38
+ remove_attributes :created_at, :id, :organization_id
39
+ with_model "Advisor"
40
+ end
41
+
42
+ expect(hq_object.fields.keys).to be_empty
43
+ hq_object.graphql_definition
44
+ expected = ["name", "organization", "updatedAt"]
45
+ expect(hq_object.fields.keys).to contain_exactly(*expected)
46
+ end
47
+
48
+ it "raises an error when trying to remove a column that doesn't exist" do
49
+ hq_object.class_eval do
50
+ remove_attributes :doesnt_exist
51
+ with_model "Advisor"
52
+ end
53
+
54
+ expect { hq_object.graphql_definition }.to raise_error(described_class::Error)
55
+ end
56
+
57
+ it "raises an error when not connected to a model" do
58
+ hq_object.class_eval do
59
+ remove_attributes :created_at
60
+ end
61
+
62
+ expect { hq_object.graphql_definition }.to raise_error(described_class::Error)
63
+ end
64
+ end
65
+
66
+ describe ".remove_associations" do
67
+ it "removes an association" do
68
+ hq_object.class_eval do
69
+ remove_associations :organization
70
+ with_model "Advisor"
71
+ end
72
+
73
+ expect(hq_object.fields.keys).to be_empty
74
+ hq_object.graphql_definition
75
+ expected = ["createdAt", "id", "name", "organizationId", "updatedAt"]
76
+ expect(hq_object.fields.keys).to contain_exactly(*expected)
77
+ end
78
+
79
+ it "raises an error when trying to remove a column that doesn't exist" do
80
+ hq_object.class_eval do
81
+ remove_associations :doesnt_exist
82
+ with_model "Advisor"
83
+ end
84
+
85
+ expect { hq_object.graphql_definition }.to raise_error(described_class::Error)
86
+ end
87
+
88
+ it "raises an error when not connected to a model" do
89
+ hq_object.class_eval do
90
+ remove_associations :organization
91
+ end
92
+
93
+ expect { hq_object.graphql_definition }.to raise_error(described_class::Error)
94
+ end
95
+ end
96
+
97
+ context "with attributes and associations turned off" do
98
+ it "doesn't have any fields by default" do
99
+ hq_object.graphql_definition
100
+ expect(hq_object.fields.keys).to be_empty
101
+ end
102
+
103
+ it "doesn't have any fields when disabling model attrs/associations" do
104
+ hq_object.class_eval do
105
+ with_model "Advisor", attributes: false, associations: false
106
+ end
107
+ hq_object.graphql_definition
108
+ expect(hq_object.fields.keys).to be_empty
109
+ end
110
+
111
+ describe ".add_attributes" do
112
+ it "adds attributes" do
113
+ hq_object.class_eval do
114
+ add_attributes :name
115
+ with_model "Advisor", attributes: false, associations: false
116
+ end
117
+
118
+ expect(hq_object.fields.keys).to be_empty
119
+ hq_object.graphql_definition
120
+ expect(hq_object.fields.keys).to contain_exactly("name")
121
+ end
122
+
123
+ it "raises an error when adding an attribute that doesn't exist" do
124
+ hq_object.class_eval do
125
+ add_attributes :doesnt_exist
126
+ with_model "Advisor", attributes: false, associations: false
127
+ end
128
+
129
+ expect { hq_object.graphql_definition }.to raise_error(described_class::Error)
130
+ end
131
+
132
+ it "raises an error when not connected to a model" do
133
+ hq_object.class_eval do
134
+ add_attributes :name
135
+ end
136
+
137
+ expect { hq_object.graphql_definition }.to raise_error(described_class::Error)
138
+ end
139
+ end
140
+
141
+ describe ".add_associations" do
142
+ it "adds associations" do
143
+ hq_object.class_eval do
144
+ add_associations :organization
145
+ with_model "Advisor", attributes: false, associations: false
146
+ end
147
+
148
+ expect(hq_object.fields.keys).to be_empty
149
+ hq_object.graphql_definition
150
+ expect(hq_object.fields.keys).to contain_exactly("organization")
151
+ end
152
+
153
+ it "raises an error when adding an association that doesn't exist" do
154
+ hq_object.class_eval do
155
+ add_associations :doesnt_exist
156
+ with_model "Advisor", attributes: false, associations: false
157
+ end
158
+
159
+ expect { hq_object.graphql_definition }.to raise_error(described_class::Error)
160
+ end
161
+
162
+ it "raises an error when not connected to a model" do
163
+ hq_object.class_eval do
164
+ add_associations :organization
165
+ end
166
+
167
+ expect { hq_object.graphql_definition }.to raise_error(described_class::Error)
168
+ end
169
+ end
170
+ end
171
+ end
172
+
173
+ end