govuk_content_models 6.1.0 → 6.3.0
Sign up to get free protection for your applications and to get access to all the features.
@@ -45,7 +45,14 @@ class BusinessSupportEdition < Edition
|
|
45
45
|
@fields_to_clone = [:body, :min_value, :max_value, :max_employees, :organiser,
|
46
46
|
:eligibility, :evaluation, :additional_information, :continuation_link,
|
47
47
|
:will_continue_on, :contact_details, :short_description,
|
48
|
-
:business_support_identifier
|
48
|
+
:business_support_identifier, :priority, :business_sizes,
|
49
|
+
:locations, :purposes, :sectors, :stages, :support_types,
|
50
|
+
:start_date, :end_date]
|
51
|
+
|
52
|
+
scope :for_facets, lambda { |facets|
|
53
|
+
where({ "$and" => facets_criteria(facets) }).order_by([:priority, :desc], [:title, :asc])
|
54
|
+
}
|
55
|
+
|
49
56
|
|
50
57
|
def whole_body
|
51
58
|
[short_description, body].join("\n\n")
|
@@ -66,4 +73,13 @@ class BusinessSupportEdition < Edition
|
|
66
73
|
errors.add(:business_support_identifier, :taken)
|
67
74
|
end
|
68
75
|
end
|
76
|
+
|
77
|
+
def self.facets_criteria(facets)
|
78
|
+
criteria = []
|
79
|
+
facets.each do |facet_name, values|
|
80
|
+
slugs = values.split(",")
|
81
|
+
criteria << { facet_name => { "$in" => slugs } } unless slugs.empty?
|
82
|
+
end
|
83
|
+
criteria
|
84
|
+
end
|
69
85
|
end
|
@@ -166,7 +166,17 @@ class BusinessSupportEditionTest < ActiveSupport::TestCase
|
|
166
166
|
:additional_information => "Additional info to be cloned",
|
167
167
|
:will_continue_on => "Continuation text to be cloned",
|
168
168
|
:continuation_link => "http://www.gov.uk",
|
169
|
-
:contact_details => "Contact details to be cloned"
|
169
|
+
:contact_details => "Contact details to be cloned",
|
170
|
+
:priority => 2,
|
171
|
+
:business_sizes => ['up-to-249'],
|
172
|
+
:locations => ['london'],
|
173
|
+
:purposes => ['start-up'],
|
174
|
+
:sectors => ['agriculture','manufacturing'],
|
175
|
+
:stages => ['grow-and-sustain'],
|
176
|
+
:support_types => ['grant','loan'],
|
177
|
+
:start_date => 1.year.ago(Date.today),
|
178
|
+
:end_date => 1.year.since(Date.today))
|
179
|
+
|
170
180
|
new_support = support.build_clone
|
171
181
|
|
172
182
|
assert_equal support.business_support_identifier, new_support.business_support_identifier
|
@@ -182,5 +192,52 @@ class BusinessSupportEditionTest < ActiveSupport::TestCase
|
|
182
192
|
assert_equal support.will_continue_on, new_support.will_continue_on
|
183
193
|
assert_equal support.continuation_link, new_support.continuation_link
|
184
194
|
assert_equal support.contact_details, new_support.contact_details
|
195
|
+
|
196
|
+
assert_equal support.priority, new_support.priority
|
197
|
+
assert_equal support.business_sizes, new_support.business_sizes
|
198
|
+
assert_equal support.locations, new_support.locations
|
199
|
+
assert_equal support.purposes, new_support.purposes
|
200
|
+
assert_equal support.sectors, new_support.sectors
|
201
|
+
assert_equal support.stages, new_support.stages
|
202
|
+
assert_equal support.support_types, new_support.support_types
|
203
|
+
assert_equal support.start_date, new_support.start_date
|
204
|
+
assert_equal support.end_date, new_support.end_date
|
205
|
+
end
|
206
|
+
|
207
|
+
context "for facets" do
|
208
|
+
setup do
|
209
|
+
@e1 = FactoryGirl.create(:business_support_edition,
|
210
|
+
:business_sizes => ['1', 'up-to-1000000'],
|
211
|
+
:locations => ['narnia'], :purposes => ['world-domination'],
|
212
|
+
:sectors => ['agriculture', 'healthcare'],
|
213
|
+
:stages => ['pivoting'], :support_types => ['award', 'grant', 'loan'])
|
214
|
+
@e2 = FactoryGirl.create(:business_support_edition,
|
215
|
+
:business_sizes => ['1', 'up-to-1000000'],
|
216
|
+
:locations => ['hades', 'narnia'], :purposes => ['business-growth-and-expansion'],
|
217
|
+
:sectors => ['education', 'healthcare'],
|
218
|
+
:stages => ['start-up', 'pivoting'], :support_types => ['grant', 'loan', 'equity'])
|
219
|
+
@e3 = FactoryGirl.create(:business_support_edition,
|
220
|
+
:business_sizes => ['up-to-249', 'up-to-1000000'],
|
221
|
+
:locations => ['hades', 'chicken-town'], :purposes => ['making-the-most-of-the-internet'],
|
222
|
+
:sectors => ['utilities'], :stages => ['start-up'], :support_types => ['grant'])
|
223
|
+
end
|
224
|
+
|
225
|
+
should "only return editions matching the facet values provided" do
|
226
|
+
editions = BusinessSupportEdition.for_facets({:purposes => 'business-growth-and-expansion', :support_types => 'equity'})
|
227
|
+
assert_equal [@e2], editions
|
228
|
+
editions = BusinessSupportEdition.for_facets({:business_sizes => '1,up-to-1000000', :locations => 'narnia'})
|
229
|
+
assert_equal [@e1, @e2], editions
|
230
|
+
end
|
231
|
+
should "support searching with all the facet values" do
|
232
|
+
editions = BusinessSupportEdition.for_facets({:business_sizes => 'up-to-1000000', :locations => 'narnia,hades,chicken-town',
|
233
|
+
:purposes => 'business-growth-and-expansion,making-the-most-of-the-internet,world-domination',
|
234
|
+
:sectors => 'agriculture,healthcare,utilities', :stages => 'pivoting,start-up',
|
235
|
+
:support_types => 'award,grant,loan'})
|
236
|
+
assert_equal [@e1, @e2, @e3], editions
|
237
|
+
end
|
238
|
+
should "return nothing where no facet values match" do
|
239
|
+
editions = BusinessSupportEdition.for_facets({:business_sizes => 'up-to-a-bizillion', :locations => 'ecclefechan'})
|
240
|
+
assert_empty editions
|
241
|
+
end
|
185
242
|
end
|
186
243
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: govuk_content_models
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.3.0
|
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-
|
12
|
+
date: 2014-02-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bson_ext
|
@@ -454,7 +454,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
454
454
|
version: '0'
|
455
455
|
segments:
|
456
456
|
- 0
|
457
|
-
hash:
|
457
|
+
hash: 1683068425110248072
|
458
458
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
459
459
|
none: false
|
460
460
|
requirements:
|
@@ -463,7 +463,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
463
463
|
version: '0'
|
464
464
|
segments:
|
465
465
|
- 0
|
466
|
-
hash:
|
466
|
+
hash: 1683068425110248072
|
467
467
|
requirements: []
|
468
468
|
rubyforge_project:
|
469
469
|
rubygems_version: 1.8.23
|