govuk_content_models 11.1.0 → 11.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,6 +1,14 @@
1
+ ## 11.2.0
2
+
3
+ * Added manual and manual-section formats with custom slug validation.
4
+
5
+ ## 11.1.0
6
+
7
+ * Add area field to business support editions.
8
+
1
9
  ## 11.0.1
2
10
 
3
- * Destroyng an edition lets siblings know
11
+ * Destroying an edition lets siblings know.
4
12
 
5
13
  ## 11.0.0
6
14
 
@@ -82,7 +82,9 @@ class Artefact
82
82
  "smartanswers" => ["smart-answer"],
83
83
  "custom-application" => ["custom-application"], # In this case the owning_app is overriden. eg calendars, licencefinder
84
84
  "travel-advice-publisher" => ["travel-advice"],
85
- "specialist-publisher" => ["specialist-document"],
85
+ "specialist-publisher" => ["manual",
86
+ "manual-section",
87
+ "specialist-document"],
86
88
  "finder-api" => ["finder"],
87
89
  "whitehall" => ["announcement",
88
90
  "authored_article",
@@ -6,6 +6,7 @@ class SlugValidator < ActiveModel::EachValidator
6
6
  ForeignTravelAdvicePageValidator,
7
7
  HelpPageValidator,
8
8
  GovernmentPageValidator,
9
+ ManualPageValidator,
9
10
  SpecialistDocumentPageValidator,
10
11
  BrowsePageValidator,
11
12
  DefaultValidator
@@ -100,6 +101,37 @@ protected
100
101
  end
101
102
  end
102
103
 
104
+ class ManualPageValidator < InstanceValidator
105
+ def applicable?
106
+ of_kind?('manual') || of_kind?('manual-section')
107
+ end
108
+
109
+ def validate!
110
+ validate_number_of_parts!
111
+ validate_guidance_prefix!
112
+ validate_parts_as_slugs!
113
+ end
114
+
115
+ private
116
+ def validate_number_of_parts!
117
+ unless [2, 3].include?(url_parts.size)
118
+ record.errors[attribute] << 'must contains two or three path parts'
119
+ end
120
+ end
121
+
122
+ def validate_guidance_prefix!
123
+ unless starts_with?('guidance/')
124
+ record.errors[attribute] << 'Manual slugs must have a guidance/ prefix'
125
+ end
126
+ end
127
+
128
+ def validate_parts_as_slugs!
129
+ unless url_parts.all? { |url_part| valid_slug?(url_part) }
130
+ record.errors[attribute] << 'must be usable in a URL'
131
+ end
132
+ end
133
+ end
134
+
103
135
  class SpecialistDocumentPageValidator < InstanceValidator
104
136
  def applicable?
105
137
  of_kind?('specialist-document')
@@ -1,4 +1,4 @@
1
1
  module GovukContentModels
2
2
  # Changing this causes Jenkins to tag and release the gem into the wild
3
- VERSION = "11.1.0"
3
+ VERSION = "11.2.0"
4
4
  end
@@ -103,4 +103,22 @@ class SlugTest < ActiveSupport::TestCase
103
103
  refute document_with_slug("oil-and-gas/not.a.valid.slug", kind: "specialist_sector").valid?
104
104
  end
105
105
  end
106
+
107
+ context "Manual pages" do
108
+ should "allow slugs starting guidance/" do
109
+ refute document_with_slug("manuals/a-manual", kind: "manual").valid?
110
+ assert document_with_slug("guidance/a-manual", kind: "manual").valid?
111
+ end
112
+
113
+ should "allow two or three path parts" do
114
+ refute document_with_slug("guidance", kind: "manual").valid?
115
+ assert document_with_slug("guidance/a-manual", kind: "manual").valid?
116
+ assert document_with_slug("guidance/a-manual/a-section", kind: "manual-section").valid?
117
+ refute document_with_slug("guidance/a-manual/a-section/a-subsection", kind: "manual-section").valid?
118
+ end
119
+
120
+ should "not allow invalid path segments" do
121
+ refute document_with_slug("guidance/bad.manual.slug", kind: "manual").valid?
122
+ end
123
+ end
106
124
  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: 11.1.0
4
+ version: 11.2.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-05-30 00:00:00.000000000 Z
12
+ date: 2014-06-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bson_ext
@@ -463,7 +463,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
463
463
  version: '0'
464
464
  segments:
465
465
  - 0
466
- hash: 1779108246502469995
466
+ hash: 1863412532211958025
467
467
  required_rubygems_version: !ruby/object:Gem::Requirement
468
468
  none: false
469
469
  requirements:
@@ -472,7 +472,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
472
472
  version: '0'
473
473
  segments:
474
474
  - 0
475
- hash: 1779108246502469995
475
+ hash: 1863412532211958025
476
476
  requirements: []
477
477
  rubyforge_project:
478
478
  rubygems_version: 1.8.23