decidim-api 0.9.3 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 69c3eeb7f69b741edb26172857c807ebc909a16e22b848e28c1e99ed3bd6fa70
4
- data.tar.gz: a6d538e7dc6c97a93f90c256a3dcae6af7dbb47e729542c7228fcc9174d7683f
3
+ metadata.gz: 05add51fe4018279985a7f4739aefdfff87fd515b7f171a1fa7c1209d42560d0
4
+ data.tar.gz: 4b143d0582b2d391e3fdf711af978108cfb29f17e1537d15dfcbbdb8c2709b9e
5
5
  SHA512:
6
- metadata.gz: cc0b12adc6b24d0b80eca709848fe6d824156e4310c89928ef209d198fb6b7a69143172bae93c1c81ef1221cac2aab026e7ec7156a1184da47b04b2f096393f0
7
- data.tar.gz: 830c0afea7f9e1906d85922c54d76f4fdc9e5f4b08e694b524c5172bac8da7dbfc88b0f62ccba076973451c8345b9c213c31dcdb35e20960a4a2d2793d69f137
6
+ metadata.gz: 9ad462fc43e876f472c9a7a2e2ed0f2a634a5ced16398fe8b0987465379e2c619c4c53db0bc4e579f41a9658ab0b375bf4fb5d217c4762292fb6e81a7410ee4b
7
+ data.tar.gz: 581a03e98744d0b21fc5a6433a85c6aa9e7ca811c4573ef09e6064ec49a74860282e732c5eb3fee76c720e0411bfe38e82f30fccea6791aab56e696a4c3baa35
data/lib/decidim/api.rb CHANGED
@@ -9,5 +9,14 @@ module Decidim
9
9
  autoload :MutationType, "decidim/api/mutation_type"
10
10
  autoload :QueryType, "decidim/api/query_type"
11
11
  autoload :Schema, "decidim/api/schema"
12
+
13
+ # This declares all the types an interface or union can resolve to. This needs
14
+ # to be done in order to be able to have them found. This is a shortcoming of
15
+ # graphql-ruby and the way it deals with loading types, in combination with
16
+ # rail's infamous autoloading.
17
+ def self.orphan_types
18
+ Decidim.feature_manifests.map(&:query_type).map(&:constantize).uniq +
19
+ Decidim.participatory_space_manifests.map(&:query_type).map(&:constantize).uniq
20
+ end
12
21
  end
13
22
  end
@@ -1,5 +1,5 @@
1
1
  {
2
- processes {
2
+ participatoryProcesses {
3
3
  id
4
4
  title {
5
5
  translations {
@@ -8,4 +8,8 @@
8
8
  }
9
9
  }
10
10
  }
11
+
12
+ decidim {
13
+ version
14
+ }
11
15
  }
@@ -7,10 +7,13 @@ module Decidim
7
7
  query QueryType
8
8
  mutation MutationType
9
9
 
10
- resolve_type lambda { |_type, obj, _ctx|
11
- return Decidim::UserType if obj.is_a? Decidim::User
12
- return Decidim::UserGroupType if obj.is_a? Decidim::UserGroup
13
- }
10
+ default_max_page_size 50
11
+ max_depth 10
12
+ max_complexity 300
13
+
14
+ orphan_types(Api.orphan_types)
15
+
16
+ resolve_type ->(_type, _obj, _ctx) {}
14
17
  end
15
18
  end
16
19
  end
@@ -4,32 +4,30 @@ shared_context "with a graphql type" do
4
4
  let!(:current_organization) { create(:organization) }
5
5
  let!(:current_user) { create(:user, organization: current_organization) }
6
6
  let(:model) { OpenStruct.new({}) }
7
+ let(:type_class) { described_class }
8
+ let(:variables) { {} }
9
+ let(:root_value) { model }
7
10
 
8
11
  let(:schema) do
9
- resolver = ->(_obj, _args, _ctx) { model }
10
- type_class = described_class
12
+ klass = type_class
11
13
 
12
- query_type = GraphQL::ObjectType.define do
13
- name "FakeTestQuery"
14
+ GraphQL::Schema.define do
15
+ query klass
14
16
 
15
- field :type, !type_class do
16
- resolve resolver
17
- end
18
- end
17
+ orphan_types(Decidim::Api.orphan_types)
19
18
 
20
- GraphQL::Schema.define do
21
- query query_type
22
19
  resolve_type ->(_type, _obj, _ctx) {}
23
20
  end
24
21
  end
25
22
 
26
23
  let(:response) do
27
- execute_query "{ type #{query}}"
24
+ execute_query query, variables.stringify_keys
28
25
  end
29
26
 
30
- def execute_query(query, variables = {})
27
+ def execute_query(query, variables)
31
28
  result = schema.execute(
32
29
  query,
30
+ root_value: root_value,
33
31
  context: {
34
32
  current_organization: current_organization,
35
33
  current_user: current_user
@@ -38,6 +36,29 @@ shared_context "with a graphql type" do
38
36
  )
39
37
 
40
38
  raise Exception, result["errors"].map { |e| e["message"] }.join(", ") if result["errors"]
41
- result["data"]["type"]
39
+ result["data"]
40
+ end
41
+ end
42
+
43
+ shared_context "with a graphql scalar type" do
44
+ include_context "with a graphql type"
45
+
46
+ let(:root_value) do
47
+ OpenStruct.new(value: model)
48
+ end
49
+
50
+ let(:type_class) do
51
+ klass = described_class
52
+
53
+ GraphQL::ObjectType.define do
54
+ name "Test#{klass.name}"
55
+ description "Fake test type"
56
+
57
+ field :value, klass
58
+ end
59
+ end
60
+
61
+ let(:response) do
62
+ execute_query("{ value }", {}).try(:[], "value")
42
63
  end
43
64
  end
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds the decidim-api version.
5
5
  module Api
6
6
  def self.version
7
- "0.9.3"
7
+ "0.10.0"
8
8
  end
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep Jaume Rey Peroy
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-02-27 00:00:00.000000000 Z
13
+ date: 2018-03-27 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: graphiql-rails
@@ -74,56 +74,56 @@ dependencies:
74
74
  requirements:
75
75
  - - '='
76
76
  - !ruby/object:Gem::Version
77
- version: 0.9.3
77
+ version: 0.10.0
78
78
  type: :development
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
82
  - - '='
83
83
  - !ruby/object:Gem::Version
84
- version: 0.9.3
84
+ version: 0.10.0
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: decidim-core
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
89
  - - '='
90
90
  - !ruby/object:Gem::Version
91
- version: 0.9.3
91
+ version: 0.10.0
92
92
  type: :development
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
96
96
  - - '='
97
97
  - !ruby/object:Gem::Version
98
- version: 0.9.3
98
+ version: 0.10.0
99
99
  - !ruby/object:Gem::Dependency
100
100
  name: decidim-dev
101
101
  requirement: !ruby/object:Gem::Requirement
102
102
  requirements:
103
103
  - - '='
104
104
  - !ruby/object:Gem::Version
105
- version: 0.9.3
105
+ version: 0.10.0
106
106
  type: :development
107
107
  prerelease: false
108
108
  version_requirements: !ruby/object:Gem::Requirement
109
109
  requirements:
110
110
  - - '='
111
111
  - !ruby/object:Gem::Version
112
- version: 0.9.3
112
+ version: 0.10.0
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: decidim-participatory_processes
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
117
  - - '='
118
118
  - !ruby/object:Gem::Version
119
- version: 0.9.3
119
+ version: 0.10.0
120
120
  type: :development
121
121
  prerelease: false
122
122
  version_requirements: !ruby/object:Gem::Requirement
123
123
  requirements:
124
124
  - - '='
125
125
  - !ruby/object:Gem::Version
126
- version: 0.9.3
126
+ version: 0.10.0
127
127
  description: API engine for decidim
128
128
  email:
129
129
  - josepjaume@gmail.com
@@ -174,7 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
174
174
  version: '0'
175
175
  requirements: []
176
176
  rubyforge_project:
177
- rubygems_version: 2.7.3
177
+ rubygems_version: 2.7.6
178
178
  signing_key:
179
179
  specification_version: 4
180
180
  summary: Decidim API module