gds-api-adapters 8.2.1 → 8.2.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,8 +10,11 @@ module GdsApi
10
10
  # you could redefine/override the constant or stub directly.
11
11
  CONTENT_API_ENDPOINT = Plek.current.find('contentapi')
12
12
 
13
- # Takes an array of slugs, or hashes with section details (including a slug).
14
- # Will stub out content_api calls for tags of type section to return these sections
13
+ # Legacy section test helpers
14
+ #
15
+ # Use of these should be retired in favour of the other test helpers in this
16
+ # module which work with any tag type.
17
+
15
18
  def content_api_has_root_sections(slugs_or_sections)
16
19
  content_api_has_root_tags("section", slugs_or_sections)
17
20
  end
@@ -24,6 +27,21 @@ module GdsApi
24
27
  content_api_has_child_tags("section", parent_slug_or_hash, subsection_slugs)
25
28
  end
26
29
 
30
+ def content_api_has_artefacts_in_a_section(slug, artefact_slugs=nil)
31
+ content_api_has_artefacts_with_a_tag("section", slug, artefact_slugs)
32
+ end
33
+
34
+ def artefact_for_slug_in_a_section(slug, section_slug)
35
+ artefact_for_slug_with_a_tag("section", slug, section_slug)
36
+ end
37
+
38
+ def artefact_for_slug_in_a_subsection(slug, subsection_slug)
39
+ artefact_for_slug_with_a_child_tag("section", slug, subsection_slug)
40
+ end
41
+
42
+
43
+ # Takes an array of slugs, or hashes with section details (including a slug).
44
+ # Will stub out content_api calls for tags of type section to return these sections
27
45
  def content_api_has_root_tags(tag_type, slugs_or_tags)
28
46
  body = plural_response_base.merge(
29
47
  "results" => slugs_or_tags.map { |tag| tag_result(tag, tag_type) }
@@ -36,14 +54,14 @@ module GdsApi
36
54
  end
37
55
  end
38
56
 
39
- def content_api_has_tag(tag_type, slug_or_hash, parent_slug=nil)
40
- section = tag_hash(slug_or_hash, tag_type).merge(parent: parent_slug)
41
- body = tag_result(section)
57
+ def content_api_has_tag(tag_type, slug_or_hash, parent_tag_id=nil)
58
+ tag = tag_hash(slug_or_hash, tag_type).merge(parent: parent_tag_id)
59
+ body = tag_result(tag)
42
60
 
43
- urls = ["#{CONTENT_API_ENDPOINT}/tags/#{CGI.escape(tag_type)}/#{CGI.escape(section[:slug])}.json"]
61
+ urls = ["#{CONTENT_API_ENDPOINT}/tags/#{CGI.escape(tag_type)}/#{CGI.escape(tag[:slug])}.json"]
44
62
 
45
63
  if tag_type == "section"
46
- urls << "#{CONTENT_API_ENDPOINT}/tags/#{CGI.escape(section[:slug])}.json"
64
+ urls << "#{CONTENT_API_ENDPOINT}/tags/#{CGI.escape(tag[:slug])}.json"
47
65
  end
48
66
 
49
67
  urls.each do |url|
@@ -60,27 +78,32 @@ module GdsApi
60
78
  stub_request(:get, url).to_return(status: 200, body: body.to_json, headers: {})
61
79
  end
62
80
 
63
- def content_api_has_child_tags(tag_type, parent_slug_or_hash, subsection_slugs)
64
- parent_section = tag_hash(parent_slug_or_hash, tag_type)
65
- subsections = subsection_slugs.map { |s|
66
- tag_hash(s, tag_type).merge(parent: parent_section)
81
+ def content_api_has_child_tags(tag_type, parent_slug_or_hash, child_tag_ids)
82
+ parent_tag = tag_hash(parent_slug_or_hash, tag_type)
83
+ child_tags = child_tag_ids.map { |id|
84
+ tag_hash(id, tag_type).merge(parent: parent_tag)
67
85
  }
68
86
  body = plural_response_base.merge(
69
- "results" => subsections.map { |s| tag_result(s, tag_type) }
87
+ "results" => child_tags.map { |s| tag_result(s, tag_type) }
70
88
  )
71
- url = "#{CONTENT_API_ENDPOINT}/tags.json?type=#{tag_type}&parent_id=#{CGI.escape(parent_section[:slug])}"
89
+ url = "#{CONTENT_API_ENDPOINT}/tags.json?type=#{tag_type}&parent_id=#{CGI.escape(parent_tag[:slug])}"
72
90
  stub_request(:get, url).to_return(status: 200, body: body.to_json, headers: {})
73
91
  end
74
92
 
75
- def content_api_has_artefacts_in_a_section(slug, artefact_slugs=[])
93
+ def content_api_has_artefacts_with_a_tag(tag_type, slug, artefact_slugs=[])
76
94
  body = plural_response_base.merge(
77
95
  "results" => artefact_slugs.map do |artefact_slug|
78
- artefact_for_slug(artefact_slug)
96
+ artefact_ slug(artefact_slug)
79
97
  end
80
98
  )
81
99
  sort_orders = ["alphabetical", "curated"]
82
100
  sort_orders.each do |order|
83
- url = "#{CONTENT_API_ENDPOINT}/with_tag.json?sort=#{order}&tag=#{CGI.escape(slug)}"
101
+ if tag_type == "section"
102
+ section_url = "#{CONTENT_API_ENDPOINT}/with_tag.json?sort=#{order}&tag=#{CGI.escape(slug)}"
103
+ stub_request(:get, section_url).to_return(status: 200, body: body.to_json, headers: {})
104
+ end
105
+
106
+ url = "#{CONTENT_API_ENDPOINT}/with_tag.json?sort=#{order}&#{CGI.escape(tag_type)}=#{CGI.escape(slug)}"
84
107
  stub_request(:get, url).to_return(status: 200, body: body.to_json, headers: {})
85
108
  end
86
109
  end
@@ -170,13 +193,13 @@ module GdsApi
170
193
  )
171
194
  end
172
195
 
173
- def artefact_for_slug_in_a_section(slug, section_slug)
196
+ def artefact_for_slug_with_a_tag(tag_type, slug, tag_id)
174
197
  artefact = artefact_for_slug(slug)
175
- artefact["tags"] << tag_for_slug(section_slug, "section")
198
+ artefact["tags"] << tag_for_slug(tag_id, tag_type)
176
199
  artefact
177
200
  end
178
201
 
179
- def artefact_for_slug_in_a_subsection(slug, subsection_slug)
202
+ def artefact_for_slug_with_a_child_tag(tag_type, slug, child_tag_id)
180
203
  artefact = artefact_for_slug(slug)
181
204
 
182
205
  # for each "part" of the path, we want to reduce across the
@@ -185,18 +208,20 @@ module GdsApi
185
208
  # Tag{ thing2, parent: Tag{ thing1 } }
186
209
 
187
210
  tag_tree = nil
188
- subsection_slug.split('/').inject(nil) do |last_section, subsection|
189
- subsection = [last_section, subsection].join('/') if last_section
190
- section = tag_for_slug(subsection, "section")
211
+ child_tag_id.split('/').inject(nil) do |parent_tag, child_tag|
212
+ child_tag = [parent_tag, child_tag].join('/') if parent_tag
213
+ next_level_tag = tag_for_slug(child_tag, tag_type)
191
214
  if tag_tree
192
215
  # Because tags are nested within one another, this makes
193
216
  # the current part the top, and the rest we've seen the
194
217
  # ancestors
195
- tag_tree = section.merge("parent" => tag_tree)
218
+ tag_tree = next_level_tag.merge("parent" => tag_tree)
196
219
  else
197
- tag_tree = section
220
+ tag_tree = next_level_tag
198
221
  end
199
- subsection
222
+
223
+ # This becomes the parent tag in the next iteration of the block
224
+ child_tag
200
225
  end
201
226
  artefact["tags"] << tag_tree
202
227
  artefact
@@ -1,3 +1,3 @@
1
1
  module GdsApi
2
- VERSION = '8.2.1'
2
+ VERSION = '8.2.2'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gds-api-adapters
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.2.1
4
+ version: 8.2.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-08 00:00:00.000000000 Z
12
+ date: 2014-01-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: plek
@@ -364,7 +364,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
364
364
  version: '0'
365
365
  segments:
366
366
  - 0
367
- hash: 4023795385510963696
367
+ hash: -3236500390538841432
368
368
  required_rubygems_version: !ruby/object:Gem::Requirement
369
369
  none: false
370
370
  requirements:
@@ -373,7 +373,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
373
373
  version: '0'
374
374
  segments:
375
375
  - 0
376
- hash: 4023795385510963696
376
+ hash: -3236500390538841432
377
377
  requirements: []
378
378
  rubyforge_project:
379
379
  rubygems_version: 1.8.23