govuk_content_models 7.3.1 → 8.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/app/models/action.rb CHANGED
@@ -5,7 +5,6 @@ class Action
5
5
 
6
6
  STATUS_ACTIONS = [
7
7
  CREATE = "create",
8
- START_WORK = "start_work",
9
8
  REQUEST_REVIEW = "request_review",
10
9
  APPROVE_REVIEW = "approve_review",
11
10
  APPROVE_FACT_CHECK = "approve_fact_check",
@@ -30,7 +30,6 @@ class Edition
30
30
 
31
31
  belongs_to :assigned_to, class_name: "User"
32
32
 
33
- scope :lined_up, where(state: "lined_up")
34
33
  scope :draft, where(state: "draft")
35
34
  scope :amends_needed, where(state: "amends_needed")
36
35
  scope :in_review, where(state: "in_review")
@@ -9,7 +9,6 @@ class OverviewDashboard
9
9
  field :dashboard_type, type: String
10
10
  field :result_group, type: Integer
11
11
  field :count, type: Integer
12
- field :lined_up, type: Integer
13
12
  field :draft, type: Integer
14
13
  field :amends_needed, type: Integer
15
14
  field :in_review, type: Integer
@@ -43,7 +43,6 @@ class SpecialistDocumentEdition
43
43
 
44
44
  belongs_to :assigned_to, class_name: "User"
45
45
 
46
- scope :lined_up, where(state: "lined_up")
47
46
  scope :draft, where(state: "draft")
48
47
  scope :amends_needed, where(state: "amends_needed")
49
48
  scope :in_review, where(state: "in_review")
@@ -13,11 +13,11 @@ module Workflow
13
13
  before_save :denormalise_users
14
14
  after_create :notify_siblings_of_new_edition
15
15
 
16
- field :state, type: String, default: "lined_up"
16
+ field :state, type: String, default: "draft"
17
17
  belongs_to :assigned_to, class_name: "User"
18
18
  embeds_many :actions
19
19
 
20
- state_machine initial: :lined_up do
20
+ state_machine initial: :draft do
21
21
  after_transition on: :request_amendments do |edition, transition|
22
22
  edition.mark_as_rejected
23
23
  end
@@ -26,10 +26,6 @@ module Workflow
26
26
  edition.was_published
27
27
  end
28
28
 
29
- event :start_work do
30
- transition lined_up: :draft
31
- end
32
-
33
29
  event :request_review do
34
30
  transition [:draft, :amends_needed] => :in_review
35
31
  end
@@ -43,12 +39,12 @@ module Workflow
43
39
  end
44
40
 
45
41
  event :request_amendments do
46
- transition [:fact_check_received, :in_review] => :amends_needed
42
+ transition [:fact_check_received, :in_review, :ready, :fact_check] => :amends_needed
47
43
  end
48
44
 
49
45
  # Editions can optionally be sent out for fact check
50
46
  event :send_fact_check do
51
- transition ready: :fact_check
47
+ transition [:ready, :fact_check_received] => :fact_check
52
48
  end
53
49
 
54
50
  # If no response is received to a fact check request we can skip
@@ -76,10 +72,6 @@ module Workflow
76
72
  transition all => :archived, :unless => :archived?
77
73
  end
78
74
  end
79
-
80
- # alias_method :created_by, :creator
81
- # alias_method :published_by, :publisher
82
- # alias_method :archived_by, :archiver
83
75
  end
84
76
 
85
77
  def fact_checked?
@@ -6,7 +6,7 @@ require "programme_edition"
6
6
  require "transaction_edition"
7
7
 
8
8
  module WorkflowActor
9
- SIMPLE_WORKFLOW_ACTIONS = %W[start_work request_review
9
+ SIMPLE_WORKFLOW_ACTIONS = %W[request_review
10
10
  request_amendments approve_review approve_fact_check archive]
11
11
 
12
12
  def record_action(edition, type, options={})
@@ -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 = "7.3.1"
3
+ VERSION = "8.0.0"
4
4
  end
@@ -147,7 +147,7 @@ class EditionTest < ActiveSupport::TestCase
147
147
  assert_equal new_edition.class, AnswerEdition
148
148
  assert_equal new_edition.version_number, 2
149
149
  assert_equal new_edition.panopticon_id, @artefact.id.to_s
150
- assert_equal new_edition.state, "lined_up"
150
+ assert_equal new_edition.state, "draft"
151
151
  assert_equal new_edition.department, "Test dept"
152
152
  assert_equal new_edition.overview, "I am a test overview"
153
153
  assert_equal new_edition.alternative_title, "Alternative test title"
@@ -169,7 +169,7 @@ class EditionTest < ActiveSupport::TestCase
169
169
  assert_equal new_edition.class, AnswerEdition
170
170
  assert_equal new_edition.version_number, 2
171
171
  assert_equal new_edition.panopticon_id, @artefact.id.to_s
172
- assert_equal new_edition.state, "lined_up"
172
+ assert_equal new_edition.state, "draft"
173
173
  assert_equal new_edition.department, "Test dept"
174
174
  assert_equal new_edition.overview, "I am a test overview"
175
175
  assert_equal new_edition.alternative_title, "Alternative test title"
@@ -193,7 +193,7 @@ class EditionTest < ActiveSupport::TestCase
193
193
  assert_equal new_edition.class, AnswerEdition
194
194
  assert_equal new_edition.version_number, 2
195
195
  assert_equal new_edition.panopticon_id, @artefact.id.to_s
196
- assert_equal new_edition.state, "lined_up"
196
+ assert_equal new_edition.state, "draft"
197
197
  assert_equal new_edition.department, "Test dept"
198
198
  assert_equal new_edition.overview, "I am a test overview"
199
199
  assert_equal new_edition.alternative_title, "Alternative test title"
@@ -216,7 +216,7 @@ class EditionTest < ActiveSupport::TestCase
216
216
  assert_equal new_edition.class, TransactionEdition
217
217
  assert_equal new_edition.version_number, 2
218
218
  assert_equal new_edition.panopticon_id, @artefact.id.to_s
219
- assert_equal new_edition.state, "lined_up"
219
+ assert_equal new_edition.state, "draft"
220
220
  assert_equal new_edition.department, "Test dept"
221
221
  assert_equal new_edition.overview, "I am a test overview"
222
222
  assert_equal new_edition.alternative_title, "Alternative test title"
@@ -239,7 +239,7 @@ class EditionTest < ActiveSupport::TestCase
239
239
  assert_equal new_edition.class, TransactionEdition
240
240
  assert_equal new_edition.version_number, 2
241
241
  assert_equal new_edition.panopticon_id, @artefact.id.to_s
242
- assert_equal new_edition.state, "lined_up"
242
+ assert_equal new_edition.state, "draft"
243
243
  assert_equal new_edition.department, "Test dept"
244
244
  assert_equal new_edition.overview, "I am a test overview"
245
245
  assert_equal new_edition.alternative_title, "Alternative test title"
@@ -261,7 +261,7 @@ class EditionTest < ActiveSupport::TestCase
261
261
  assert_equal new_edition.class, TransactionEdition
262
262
  assert_equal new_edition.version_number, 2
263
263
  assert_equal new_edition.panopticon_id, @artefact.id.to_s
264
- assert_equal new_edition.state, "lined_up"
264
+ assert_equal new_edition.state, "draft"
265
265
  assert_equal new_edition.department, "Test dept"
266
266
  assert_equal new_edition.overview, "I am a test overview"
267
267
  assert_equal new_edition.alternative_title, "Alternative test title"
@@ -283,7 +283,7 @@ class EditionTest < ActiveSupport::TestCase
283
283
  assert_equal new_edition.class, GuideEdition
284
284
  assert_equal new_edition.version_number, 2
285
285
  assert_equal new_edition.panopticon_id, @artefact.id.to_s
286
- assert_equal new_edition.state, "lined_up"
286
+ assert_equal new_edition.state, "draft"
287
287
  assert_equal new_edition.department, "Test dept"
288
288
  assert_equal new_edition.overview, "I am a test overview"
289
289
  assert_equal new_edition.alternative_title, "Alternative test title"
@@ -756,7 +756,6 @@ class EditionTest < ActiveSupport::TestCase
756
756
  user = User.create(name: "Mary")
757
757
 
758
758
  edition = ProgrammeEdition.new(title: "Childcare", slug: "childcare", panopticon_id: @artefact.id)
759
- user.start_work(edition)
760
759
  assert edition.can_request_review?
761
760
  user.request_review(edition,{comment: "Review this programme please."})
762
761
  assert ! user.request_amendments(edition, {comment: "Well Done, but work harder"})
@@ -797,13 +796,11 @@ class EditionTest < ActiveSupport::TestCase
797
796
 
798
797
  test "a draft edition cannot be published" do
799
798
  edition = FactoryGirl.create(:guide_edition, panopticon_id: @artefact.id, state: "draft")
800
- edition.start_work
801
799
  refute edition.can_publish?
802
800
  end
803
801
 
804
802
  test "a draft edition can be emergency published" do
805
803
  edition = FactoryGirl.create(:guide_edition, panopticon_id: @artefact.id, state: "draft")
806
- edition.start_work
807
804
  assert edition.can_emergency_publish?
808
805
  end
809
806
 
@@ -833,7 +830,7 @@ class EditionTest < ActiveSupport::TestCase
833
830
  @user1 = FactoryGirl.create(:user)
834
831
  @user2 = FactoryGirl.create(:user)
835
832
 
836
- edition = FactoryGirl.create(:guide_edition, panopticon_id: @artefact.id, state: "lined_up")
833
+ edition = FactoryGirl.create(:guide_edition, panopticon_id: @artefact.id, state: "draft")
837
834
  @user1.assign edition, @user2
838
835
 
839
836
  assert_equal @user2, edition.assigned_to
@@ -27,7 +27,6 @@ private
27
27
 
28
28
  def row_status
29
29
  {
30
- lined_up: 1,
31
30
  draft: 1,
32
31
  ammends_needed: 1,
33
32
  in_review: 1,
@@ -13,14 +13,12 @@ class WorkflowTest < ActiveSupport::TestCase
13
13
 
14
14
  def template_programme
15
15
  p = ProgrammeEdition.new(slug:"childcare", title:"Children", panopticon_id: @artefact.id)
16
- p.start_work
17
16
  p.save
18
17
  p
19
18
  end
20
19
 
21
20
  def template_guide
22
21
  edition = FactoryGirl.create(:guide_edition, slug: "childcare", title: "One", panopticon_id: @artefact.id)
23
- edition.start_work
24
22
  edition.save
25
23
  edition
26
24
  end
@@ -31,7 +29,6 @@ class WorkflowTest < ActiveSupport::TestCase
31
29
 
32
30
  guide = user.create_edition(:guide, panopticon_id: @artefact.id, overview: "My Overview", title: "My Title", slug: "my-title", alternative_title: "My Other Title")
33
31
  edition = guide
34
- user.start_work(edition)
35
32
  user.request_review(edition,{comment: "Review this guide please."})
36
33
  other_user.approve_review(edition, {comment: "I've reviewed it"})
37
34
  user.send_fact_check(edition,{comment: "Review this guide please.", email_addresses: "test@test.com"})
@@ -50,8 +47,6 @@ class WorkflowTest < ActiveSupport::TestCase
50
47
  transaction.expectation_ids = [expectation.id]
51
48
  transaction.save
52
49
 
53
- transaction.start_work
54
- transaction.save
55
50
  user.request_review(transaction, {comment: "Review this guide please."})
56
51
  transaction.save
57
52
  other_user.approve_review(transaction, {comment: "I've reviewed it"})
@@ -79,28 +74,13 @@ class WorkflowTest < ActiveSupport::TestCase
79
74
  assert_equal "AnswerEdition", new_edition._type
80
75
  end
81
76
 
82
- test "a new answer is lined up" do
83
- g = AnswerEdition.new(slug: "childcare", panopticon_id: @artefact.id, title: "My new answer")
84
- assert g.lined_up?
85
- end
86
-
87
- test "starting work on an answer removes it from lined up" do
77
+ test "a new answer is in draft" do
88
78
  g = AnswerEdition.new(slug: "childcare", panopticon_id: @artefact.id, title: "My new answer")
89
- g.save!
90
- user = User.create(name: "Ben")
91
- user.start_work(g)
92
- assert_equal false, g.lined_up?
93
- end
94
-
95
- test "a new guide has lined_up but isn't published" do
96
- g = FactoryGirl.create(:guide_edition, panopticon_id: @artefact.id)
97
- assert g.lined_up?
98
- refute g.published?
79
+ assert g.draft?
99
80
  end
100
81
 
101
- test "when work started a new guide has draft but isn't published" do
82
+ test "a new guide has draft but isn't published" do
102
83
  g = FactoryGirl.create(:guide_edition, panopticon_id: @artefact.id)
103
- g.start_work
104
84
  assert g.draft?
105
85
  refute g.published?
106
86
  end
@@ -119,7 +99,7 @@ class WorkflowTest < ActiveSupport::TestCase
119
99
 
120
100
  guide = user.create_edition(:guide, title: "My Title", slug: "my-title", panopticon_id: @artefact.id)
121
101
  edition = guide
122
- user.start_work(edition)
102
+
123
103
  assert edition.can_request_review?
124
104
  user.request_review(edition,{comment: "Review this guide please."})
125
105
  refute edition.can_request_review?
@@ -138,7 +118,6 @@ class WorkflowTest < ActiveSupport::TestCase
138
118
 
139
119
  edition = user.create_edition(:guide, panopticon_id: @artefact.id, overview: "My Overview", title: "My Title", slug: "my-title", alternative_title: "My Other Title")
140
120
 
141
- user.start_work(edition)
142
121
  user.request_review(edition,{comment: "Review this guide please."})
143
122
  other_user.approve_review(edition, {comment: "I've reviewed it"})
144
123
  user.send_fact_check(edition,{comment: "Review this guide please.", email_addresses: "test@test.com"})
@@ -156,7 +135,7 @@ class WorkflowTest < ActiveSupport::TestCase
156
135
 
157
136
  guide = user.create_edition(:guide, panopticon_id: FactoryGirl.create(:artefact).id, overview: "My Overview", title: "My Title", slug: "my-title", alternative_title: "My Other Title")
158
137
  edition = guide
159
- user.start_work(edition)
138
+
160
139
  user.request_review(edition,{comment: "Review this guide please."})
161
140
  other_user.approve_review(edition, {comment: "I've reviewed it"})
162
141
  user.send_fact_check(edition,{comment: "Review this guide please.", email_addresses: "test@test.com"})
@@ -165,6 +144,52 @@ class WorkflowTest < ActiveSupport::TestCase
165
144
  assert_equal "Text.<l>content that the SafeHtml validator would catch</l>", edition.actions.last.comment
166
145
  end
167
146
 
147
+ test "fact_check_received can go back to out for fact_check" do
148
+ user = User.create(name: "Ben")
149
+ other_user = User.create(name: "James")
150
+
151
+ guide = user.create_edition(:guide, panopticon_id: FactoryGirl.create(:artefact).id, overview: "My Overview", title: "My Title", slug: "my-title", alternative_title: "My Other Title")
152
+ edition = guide
153
+
154
+ user.request_review(edition,{comment: "Review this guide please."})
155
+ other_user.approve_review(edition, {comment: "I've reviewed it"})
156
+ user.send_fact_check(edition,{comment: "Review this guide please.", email_addresses: "test@test.com"})
157
+ user.receive_fact_check(edition, {comment: "Text.<l>content that the SafeHtml validator would catch</l>"})
158
+ user.send_fact_check(edition,{comment: "Out of office reply triggered receive_fact_check", email_addresses: "test@test.com"})
159
+
160
+ assert(edition.actions.last.comment.include? "Out of office reply triggered receive_fact_check\n\nResponses should be sent to:")
161
+ end
162
+
163
+ test "when processing fact check, an edition can request for amendments" do
164
+ user = User.create(name: "Ben")
165
+ other_user = User.create(name: "James")
166
+
167
+ guide = user.create_edition(:guide, panopticon_id: FactoryGirl.create(:artefact).id, overview: "My Overview", title: "My Title", slug: "my-title", alternative_title: "My Other Title")
168
+ edition = guide
169
+
170
+ user.request_review(edition,{comment: "Review this guide please."})
171
+ other_user.approve_review(edition, {comment: "I've reviewed it"})
172
+ user.send_fact_check(edition,{comment: "Review this guide please.", email_addresses: "test@test.com"})
173
+ other_user.request_amendments(edition,{comment: "More amendments are required", email_addresses: "foo@bar.com"})
174
+
175
+ assert_equal "More amendments are required", edition.actions.last.comment
176
+ end
177
+
178
+ test "ready items may require further amendments" do
179
+ user = User.create(name: "Ben")
180
+ other_user = User.create(name: "James")
181
+ another_user = User.create(name: "Fiona")
182
+
183
+ guide = user.create_edition(:guide, panopticon_id: FactoryGirl.create(:artefact).id, overview: "My Overview", title: "My Title", slug: "my-title", alternative_title: "My Other Title")
184
+ edition = guide
185
+
186
+ user.request_review(edition,{comment: "Review this guide please."})
187
+ other_user.approve_review(edition, {comment: "I've reviewed it"})
188
+ another_user.request_amendments(edition,{comment: "More amendments are required", email_addresses: "foo@bar.com"})
189
+
190
+ assert_equal "More amendments are required", edition.actions.last.comment
191
+ end
192
+
168
193
  test "check counting reviews" do
169
194
  user = User.create(name: "Ben")
170
195
  other_user = User.create(name: "James")
@@ -174,7 +199,6 @@ class WorkflowTest < ActiveSupport::TestCase
174
199
 
175
200
  assert_equal 0, guide.rejected_count
176
201
 
177
- user.start_work(edition)
178
202
  user.request_review(edition,{comment: "Review this guide please."})
179
203
  other_user.request_amendments(edition, {comment: "I've reviewed it"})
180
204
 
@@ -191,7 +215,7 @@ class WorkflowTest < ActiveSupport::TestCase
191
215
 
192
216
  guide = user.create_edition(:guide, title: "My Title", slug: "my-title", panopticon_id: @artefact.id)
193
217
  edition = guide
194
- user.start_work(edition)
218
+
195
219
  assert edition.can_request_review?
196
220
  user.request_review(edition,{comment: "Review this guide please."})
197
221
  refute user.request_amendments(edition, {comment: "Well Done, but work harder"})
@@ -202,7 +226,7 @@ class WorkflowTest < ActiveSupport::TestCase
202
226
 
203
227
  guide = user.create_edition(:guide, title: "My Title", slug: "my-title", panopticon_id: @artefact.id)
204
228
  edition = guide
205
- user.start_work(edition)
229
+
206
230
  assert edition.can_request_review?
207
231
  user.request_review(edition,{comment: "Review this guide please."})
208
232
  refute user.approve_review(edition, "")
@@ -227,7 +251,7 @@ class WorkflowTest < ActiveSupport::TestCase
227
251
  user, other_user = template_users
228
252
 
229
253
  edition = user.create_edition(:programme, panopticon_id: @artefact.id, title: "My title", slug: "my-slug")
230
- user.start_work(edition)
254
+
231
255
  assert edition.can_request_review?
232
256
  user.request_review(edition,{comment: "Review this guide please."})
233
257
  refute edition.can_request_review?
@@ -237,6 +261,7 @@ class WorkflowTest < ActiveSupport::TestCase
237
261
  user.request_review(edition,{comment: "Review this guide please."})
238
262
  assert edition.can_approve_review?
239
263
  other_user.approve_review(edition, {comment: "Looks good to me"})
264
+ assert edition.can_request_amendments?
240
265
  assert edition.can_publish?
241
266
  end
242
267
 
@@ -244,7 +269,7 @@ class WorkflowTest < ActiveSupport::TestCase
244
269
  user, other_user = template_users
245
270
 
246
271
  edition = user.create_edition(:programme, panopticon_id: @artefact.id, title: "My title", slug: "my-slug")
247
- user.start_work(edition)
272
+
248
273
  assert edition.can_request_review?
249
274
  user.request_review(edition,{comment: "Review this programme please."})
250
275
  refute user.approve_review(edition, "")
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: 7.3.1
4
+ version: 8.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-02-25 00:00:00.000000000 Z
12
+ date: 2014-03-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bson_ext
@@ -456,7 +456,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
456
456
  version: '0'
457
457
  segments:
458
458
  - 0
459
- hash: -1906730363946367284
459
+ hash: 1977371837260361132
460
460
  required_rubygems_version: !ruby/object:Gem::Requirement
461
461
  none: false
462
462
  requirements:
@@ -465,7 +465,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
465
465
  version: '0'
466
466
  segments:
467
467
  - 0
468
- hash: -1906730363946367284
468
+ hash: 1977371837260361132
469
469
  requirements: []
470
470
  rubyforge_project:
471
471
  rubygems_version: 1.8.23