govuk_content_models 21.0.0 → 22.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +5 -0
- data/app/models/edition.rb +5 -1
- data/app/validators/browse_page_validator.rb +9 -0
- data/app/validators/topic_validator.rb +13 -0
- data/lib/govuk_content_models/version.rb +1 -1
- data/test/models/edition_test.rb +48 -1
- data/test/validators/browse_page_validator_test.rb +34 -0
- data/test/validators/topic_validator_test.rb +48 -0
- metadata +10 -4
data/CHANGELOG.md
CHANGED
data/app/models/edition.rb
CHANGED
@@ -19,9 +19,12 @@ class Edition
|
|
19
19
|
field :slug, type: String
|
20
20
|
field :department, type: String
|
21
21
|
field :rejected_count, type: Integer, default: 0
|
22
|
-
field :tags, type: String
|
23
22
|
field :important_note, type: String
|
24
23
|
|
24
|
+
field :browse_pages, type: Array
|
25
|
+
field :primary_topic, type: String
|
26
|
+
field :additional_topics, type: Array
|
27
|
+
|
25
28
|
field :assignee, type: String
|
26
29
|
field :creator, type: String
|
27
30
|
field :publisher, type: String
|
@@ -49,6 +52,7 @@ class Edition
|
|
49
52
|
validates :panopticon_id, presence: true
|
50
53
|
validates_with SafeHtml
|
51
54
|
validates_with LinkValidator, on: :update
|
55
|
+
validates_with TopicValidator, BrowsePageValidator
|
52
56
|
|
53
57
|
before_save :check_for_archived_artefact
|
54
58
|
before_destroy :destroy_artefact
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class TopicValidator < ActiveModel::Validator
|
2
|
+
def validate(record)
|
3
|
+
if (additional_topics = record.additional_topics)
|
4
|
+
if additional_topics.uniq.count < additional_topics.count
|
5
|
+
record.errors.add(:additional_topics, "can't have duplicates")
|
6
|
+
end
|
7
|
+
|
8
|
+
if additional_topics.include?(record.primary_topic)
|
9
|
+
record.errors.add(:base, "You can't have the primary topic set as an additional topic")
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/test/models/edition_test.rb
CHANGED
@@ -77,7 +77,7 @@ class EditionTest < ActiveSupport::TestCase
|
|
77
77
|
end
|
78
78
|
|
79
79
|
test "it should be able to find its previous siblings" do
|
80
|
-
@artefact2 = FactoryGirl.create(:artefact)
|
80
|
+
@artefact2 = FactoryGirl.create(:artefact)
|
81
81
|
g1 = FactoryGirl.create(:guide_edition, panopticon_id: @artefact.id, version_number: 1)
|
82
82
|
g2 = FactoryGirl.create(:guide_edition, panopticon_id: @artefact2.id, version_number: 1)
|
83
83
|
g3 = FactoryGirl.create(:guide_edition, panopticon_id: @artefact.id, version_number: 2)
|
@@ -1028,4 +1028,51 @@ class EditionTest < ActiveSupport::TestCase
|
|
1028
1028
|
end
|
1029
1029
|
end
|
1030
1030
|
end
|
1031
|
+
|
1032
|
+
context "Tagging to collections" do
|
1033
|
+
setup do
|
1034
|
+
@edition = FactoryGirl.create(:guide_edition)
|
1035
|
+
end
|
1036
|
+
|
1037
|
+
should "allow tagging to browse pages" do
|
1038
|
+
sample_browse_pages = [
|
1039
|
+
'education/school-admissions-transport',
|
1040
|
+
'driving/drivers-lorries-buses'
|
1041
|
+
]
|
1042
|
+
|
1043
|
+
@edition.browse_pages = sample_browse_pages
|
1044
|
+
@edition.save!; @edition.reload
|
1045
|
+
|
1046
|
+
assert_equal sample_browse_pages, @edition.browse_pages
|
1047
|
+
end
|
1048
|
+
|
1049
|
+
should "allow tagging to a primary topic" do
|
1050
|
+
sample_primary_topic = 'oil-and-gas/carbon-capture-and-storage'
|
1051
|
+
|
1052
|
+
@edition.primary_topic = sample_primary_topic
|
1053
|
+
@edition.save!; @edition.reload
|
1054
|
+
|
1055
|
+
assert_equal sample_primary_topic, @edition.primary_topic
|
1056
|
+
end
|
1057
|
+
|
1058
|
+
should "allow tagging to multiple additional topics" do
|
1059
|
+
sample_additional_topics = [
|
1060
|
+
'oil-and-gas/fields-and-wells',
|
1061
|
+
'oil-and-gas/licensing'
|
1062
|
+
]
|
1063
|
+
|
1064
|
+
@edition.additional_topics = sample_additional_topics
|
1065
|
+
@edition.save!; @edition.reload
|
1066
|
+
|
1067
|
+
assert_equal sample_additional_topics, @edition.additional_topics
|
1068
|
+
end
|
1069
|
+
|
1070
|
+
should "validates topics" do
|
1071
|
+
assert_includes Edition.validators.map(&:class), TopicValidator
|
1072
|
+
end
|
1073
|
+
|
1074
|
+
should "validates browse pages" do
|
1075
|
+
assert_includes Edition.validators.map(&:class), BrowsePageValidator
|
1076
|
+
end
|
1077
|
+
end
|
1031
1078
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'browse_page_validator'
|
3
|
+
|
4
|
+
class BrowsePageValidatorTest < ActiveSupport::TestCase
|
5
|
+
class Record
|
6
|
+
include Mongoid::Document
|
7
|
+
|
8
|
+
field :browse_pages, type: Array
|
9
|
+
|
10
|
+
validates_with BrowsePageValidator
|
11
|
+
end
|
12
|
+
|
13
|
+
should "allow tagging to a variety of unique browse pages" do
|
14
|
+
record = Record.new(
|
15
|
+
browse_pages: [
|
16
|
+
'business/tax',
|
17
|
+
'housing/safety-environment'
|
18
|
+
]
|
19
|
+
)
|
20
|
+
|
21
|
+
assert record.valid?
|
22
|
+
end
|
23
|
+
|
24
|
+
should "be invalid if there's duplicates in the browse page list" do
|
25
|
+
record = Record.new(
|
26
|
+
browse_pages: [
|
27
|
+
'housing/safety-environment',
|
28
|
+
'housing/safety-environment'
|
29
|
+
]
|
30
|
+
)
|
31
|
+
|
32
|
+
refute record.valid?
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'topic_validator'
|
3
|
+
|
4
|
+
class TopicValidatorTest < ActiveSupport::TestCase
|
5
|
+
class Record
|
6
|
+
include Mongoid::Document
|
7
|
+
|
8
|
+
field :primary_topic, type: String
|
9
|
+
field :additional_topics, type: Array
|
10
|
+
|
11
|
+
validates_with TopicValidator
|
12
|
+
end
|
13
|
+
|
14
|
+
should "allow tagging to a variety of unique topics" do
|
15
|
+
record = Record.new(
|
16
|
+
primary_topic: 'oil-and-gas/exploration',
|
17
|
+
additional_topics: [
|
18
|
+
'oil-and-gas/fields-and-wells',
|
19
|
+
'oil-and-gas/licensing'
|
20
|
+
]
|
21
|
+
)
|
22
|
+
|
23
|
+
assert record.valid?
|
24
|
+
end
|
25
|
+
|
26
|
+
should "be invalid if there's duplicates in the additional topic list" do
|
27
|
+
record = Record.new(
|
28
|
+
additional_topics: [
|
29
|
+
'oil-and-gas/fields-and-wells',
|
30
|
+
'oil-and-gas/fields-and-wells'
|
31
|
+
]
|
32
|
+
)
|
33
|
+
|
34
|
+
refute record.valid?
|
35
|
+
end
|
36
|
+
|
37
|
+
should "be invalid if the primary topic is in the additional topic list" do
|
38
|
+
record = Record.new(
|
39
|
+
primary_topic: 'oil-and-gas/fields-and-wells',
|
40
|
+
additional_topics: [
|
41
|
+
'oil-and-gas/fields-and-wells',
|
42
|
+
'oil-and-gas/licensing'
|
43
|
+
]
|
44
|
+
)
|
45
|
+
|
46
|
+
refute record.valid?
|
47
|
+
end
|
48
|
+
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:
|
4
|
+
version: 22.0.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-10-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bson_ext
|
@@ -368,10 +368,12 @@ files:
|
|
368
368
|
- app/models/workflow_actor.rb
|
369
369
|
- app/traits/attachable.rb
|
370
370
|
- app/traits/taggable.rb
|
371
|
+
- app/validators/browse_page_validator.rb
|
371
372
|
- app/validators/link_validator.rb
|
372
373
|
- app/validators/safe_html.rb
|
373
374
|
- app/validators/slug_validator.rb
|
374
375
|
- app/validators/tag_id_validator.rb
|
376
|
+
- app/validators/topic_validator.rb
|
375
377
|
- config/mongoid.yml
|
376
378
|
- govuk_content_models.gemspec
|
377
379
|
- jenkins.sh
|
@@ -425,10 +427,12 @@ files:
|
|
425
427
|
- test/test_helper.rb
|
426
428
|
- test/traits/attachable_test.rb
|
427
429
|
- test/traits/taggable_test.rb
|
430
|
+
- test/validators/browse_page_validator_test.rb
|
428
431
|
- test/validators/link_validator_test.rb
|
429
432
|
- test/validators/safe_html_validator_test.rb
|
430
433
|
- test/validators/slug_validator_test.rb
|
431
434
|
- test/validators/tag_id_validator_test.rb
|
435
|
+
- test/validators/topic_validator_test.rb
|
432
436
|
homepage: https://github.com/alphagov/govuk_content_models
|
433
437
|
licenses: []
|
434
438
|
post_install_message:
|
@@ -444,7 +448,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
444
448
|
version: '0'
|
445
449
|
segments:
|
446
450
|
- 0
|
447
|
-
hash:
|
451
|
+
hash: 2932545422585521271
|
448
452
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
449
453
|
none: false
|
450
454
|
requirements:
|
@@ -453,7 +457,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
453
457
|
version: '0'
|
454
458
|
segments:
|
455
459
|
- 0
|
456
|
-
hash:
|
460
|
+
hash: 2932545422585521271
|
457
461
|
requirements: []
|
458
462
|
rubyforge_project:
|
459
463
|
rubygems_version: 1.8.23
|
@@ -504,7 +508,9 @@ test_files:
|
|
504
508
|
- test/test_helper.rb
|
505
509
|
- test/traits/attachable_test.rb
|
506
510
|
- test/traits/taggable_test.rb
|
511
|
+
- test/validators/browse_page_validator_test.rb
|
507
512
|
- test/validators/link_validator_test.rb
|
508
513
|
- test/validators/safe_html_validator_test.rb
|
509
514
|
- test/validators/slug_validator_test.rb
|
510
515
|
- test/validators/tag_id_validator_test.rb
|
516
|
+
- test/validators/topic_validator_test.rb
|