govuk_content_models 20.2.0 → 21.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.md +4 -0
- data/app/models/action.rb +0 -1
- data/app/models/edition.rb +0 -11
- data/app/models/workflow.rb +0 -12
- data/app/models/workflow_actor.rb +0 -4
- data/govuk_content_models.gemspec +0 -1
- data/lib/govuk_content_models/version.rb +1 -1
- data/test/models/edition_test.rb +0 -72
- data/test/models/local_transaction_edition_test.rb +0 -23
- data/test/models/workflow_test.rb +0 -45
- metadata +4 -20
data/CHANGELOG.md
CHANGED
data/app/models/action.rb
CHANGED
@@ -33,7 +33,6 @@ class Action
|
|
33
33
|
field :approved, type: DateTime
|
34
34
|
field :comment, type: String
|
35
35
|
field :comment_sanitized, type: Boolean, default: false
|
36
|
-
field :diff, type: String
|
37
36
|
field :request_type, type: String
|
38
37
|
field :email_addresses, type: String
|
39
38
|
field :customised_message, type: String
|
data/app/models/edition.rb
CHANGED
@@ -275,15 +275,4 @@ class Edition
|
|
275
275
|
Artefact.find(self.panopticon_id).destroy
|
276
276
|
end
|
277
277
|
end
|
278
|
-
|
279
|
-
def previous_edition_differences
|
280
|
-
return if version_number <= 1
|
281
|
-
|
282
|
-
if in_progress?
|
283
|
-
edition_changes.to_s # diff of current changes
|
284
|
-
else
|
285
|
-
actions.select { |a| a.request_type == 'publish' }.last.diff # diff with previous published version
|
286
|
-
end
|
287
|
-
end
|
288
|
-
|
289
278
|
end
|
data/app/models/workflow.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require "differ"
|
2
1
|
require "state_machine"
|
3
2
|
require "action"
|
4
3
|
|
@@ -186,17 +185,6 @@ module Workflow
|
|
186
185
|
self.previous_published_edition || false
|
187
186
|
end
|
188
187
|
|
189
|
-
def edition_changes
|
190
|
-
if self.whole_body.blank?
|
191
|
-
false
|
192
|
-
else
|
193
|
-
my_body, their_body = [self, self.published_edition].map do |edition|
|
194
|
-
edition.whole_body.gsub("\r\n", "\n")
|
195
|
-
end
|
196
|
-
Differ.diff_by_line(my_body, their_body)
|
197
|
-
end
|
198
|
-
end
|
199
|
-
|
200
188
|
def notify_siblings_of_new_edition
|
201
189
|
siblings.update_all(sibling_in_progress: self.version_number)
|
202
190
|
end
|
data/test/models/edition_test.rb
CHANGED
@@ -545,7 +545,6 @@ class EditionTest < ActiveSupport::TestCase
|
|
545
545
|
end
|
546
546
|
|
547
547
|
test "given multiple editions, can return the most recent published edition" do
|
548
|
-
|
549
548
|
edition = FactoryGirl.create(:guide_edition, panopticon_id: @artefact.id, slug: "hedgehog-topiary", state: "published")
|
550
549
|
|
551
550
|
second_edition = edition.build_clone
|
@@ -569,31 +568,6 @@ class EditionTest < ActiveSupport::TestCase
|
|
569
568
|
assert edition.new_action(user, "note", comment: "Something important")
|
570
569
|
end
|
571
570
|
|
572
|
-
test "first edition has no previous edition diffrences" do
|
573
|
-
first_edition = template_published_answer
|
574
|
-
|
575
|
-
assert_nil first_edition.previous_edition_differences
|
576
|
-
end
|
577
|
-
|
578
|
-
test "can access the changes since the last version" do
|
579
|
-
second_edition = draft_second_edition_from(template_published_answer)
|
580
|
-
|
581
|
-
assert_equal("{\"Lots of info\" >> \"Test Body 2\"}",
|
582
|
-
second_edition.previous_edition_differences)
|
583
|
-
end
|
584
|
-
|
585
|
-
test "can show the differences between published editions" do
|
586
|
-
second_edition = draft_second_edition_from(template_published_answer)
|
587
|
-
second_edition.update_attribute(:state, "ready")
|
588
|
-
second_edition.save!
|
589
|
-
|
590
|
-
user = User.create(name: "bob")
|
591
|
-
user.publish second_edition, comment: "Published comment"
|
592
|
-
|
593
|
-
assert_equal("{\"Lots of info\" >> \"Test Body 2\"}",
|
594
|
-
second_edition.previous_edition_differences)
|
595
|
-
end
|
596
|
-
|
597
571
|
test "status should not be affected by notes" do
|
598
572
|
user = User.create(name: "bob")
|
599
573
|
edition = FactoryGirl.create(:guide_edition, panopticon_id: @artefact.id, state: "ready")
|
@@ -770,30 +744,6 @@ class EditionTest < ActiveSupport::TestCase
|
|
770
744
|
assert_equal new_edition.version_number, edition.sibling_in_progress
|
771
745
|
end
|
772
746
|
|
773
|
-
test "a new guide edition with multiple parts creates a full diff when published" do
|
774
|
-
user = User.create name: "Roland"
|
775
|
-
|
776
|
-
edition_one = GuideEdition.new(title: "One", slug: "one", panopticon_id: @artefact.id)
|
777
|
-
edition_one.parts.build title: "Part One", body:"Never gonna give you up", slug: "part-one"
|
778
|
-
edition_one.parts.build title: "Part Two", body:"NYAN NYAN NYAN NYAN", slug: "part-two"
|
779
|
-
edition_one.save!
|
780
|
-
|
781
|
-
edition_one.state = :ready
|
782
|
-
user.publish edition_one, comment: "First edition"
|
783
|
-
|
784
|
-
edition_two = edition_one.build_clone
|
785
|
-
edition_two.save!
|
786
|
-
edition_two.parts.first.update_attribute :title, "Changed Title"
|
787
|
-
edition_two.parts.first.update_attribute :body, "Never gonna let you down"
|
788
|
-
|
789
|
-
edition_two.state = :ready
|
790
|
-
user.publish edition_two, comment: "Second edition"
|
791
|
-
|
792
|
-
publish_action = edition_two.actions.where(request_type: "publish").last
|
793
|
-
|
794
|
-
assert_equal "{\"# Part One\" >> \"# Changed Title\"}\n\n{\"Never gonna give you up\" >> \"Never gonna let you down\"}\n\n# Part Two\n\nNYAN NYAN NYAN NYAN", publish_action.diff
|
795
|
-
end
|
796
|
-
|
797
747
|
test "a part's slug must be of the correct format" do
|
798
748
|
edition_one = GuideEdition.new(title: "One", slug: "one", panopticon_id: @artefact.id)
|
799
749
|
edition_one.parts.build title: "Part One", body:"Never gonna give you up", slug: "part-One-1"
|
@@ -825,28 +775,6 @@ class EditionTest < ActiveSupport::TestCase
|
|
825
775
|
assert ! user.request_amendments(edition, {comment: "Well Done, but work harder"})
|
826
776
|
end
|
827
777
|
|
828
|
-
test "a new programme edition with multiple parts creates a full diff when published" do
|
829
|
-
user = User.create name: "Mazz"
|
830
|
-
|
831
|
-
edition_one = ProgrammeEdition.new(title: "Childcare", slug: "childcare", panopticon_id: @artefact.id)
|
832
|
-
edition_one.parts.build title: "Part One", body:"Content for part one", slug: "part-one"
|
833
|
-
edition_one.parts.build title: "Part Two", body:"Content for part two", slug: "part-two"
|
834
|
-
edition_one.save!
|
835
|
-
|
836
|
-
edition_one.state = :ready
|
837
|
-
user.publish edition_one, comment: "First edition"
|
838
|
-
|
839
|
-
edition_two = edition_one.build_clone
|
840
|
-
edition_two.save!
|
841
|
-
edition_two.parts.first.update_attribute :body, "Some other content"
|
842
|
-
edition_two.state = :ready
|
843
|
-
user.publish edition_two, comment: "Second edition"
|
844
|
-
|
845
|
-
publish_action = edition_two.actions.where(request_type: "publish").last
|
846
|
-
|
847
|
-
assert_equal "# Part One\n\n{\"Content for part one\" >> \"Some other content\"}\n\n# Part Two\n\nContent for part two", publish_action.diff
|
848
|
-
end
|
849
|
-
|
850
778
|
test "a published publication with a draft edition is in progress" do
|
851
779
|
dummy_answer = template_published_answer
|
852
780
|
assert !dummy_answer.has_sibling_in_progress?
|
@@ -52,27 +52,4 @@ class LocalTransactionEditionTest < ActiveSupport::TestCase
|
|
52
52
|
assert lt.valid?
|
53
53
|
assert lt.persisted?
|
54
54
|
end
|
55
|
-
|
56
|
-
test "should create a diff between the versions when publishing a new version" do
|
57
|
-
make_service(149, %w{county unitary})
|
58
|
-
edition_one = LocalTransactionEdition.new(title: "Transaction", slug: "transaction", lgsl_code: "149", panopticon_id: @artefact.id)
|
59
|
-
user = User.create name: "Thomas"
|
60
|
-
|
61
|
-
edition_one.introduction = "Test"
|
62
|
-
edition_one.state = :ready
|
63
|
-
edition_one.save!
|
64
|
-
|
65
|
-
user.publish edition_one, comment: "First edition"
|
66
|
-
|
67
|
-
edition_two = edition_one.build_clone
|
68
|
-
edition_two.introduction = "Testing"
|
69
|
-
edition_two.state = :ready
|
70
|
-
edition_two.save!
|
71
|
-
|
72
|
-
user.publish edition_two, comment: "Second edition"
|
73
|
-
|
74
|
-
publish_action = edition_two.actions.where(request_type: "publish").last
|
75
|
-
|
76
|
-
assert_equal "{\"Test\" >> \"Testing\"}", publish_action.diff
|
77
|
-
end
|
78
55
|
end
|
@@ -307,51 +307,6 @@ class WorkflowTest < ActiveSupport::TestCase
|
|
307
307
|
refute user.new_version(edition)
|
308
308
|
end
|
309
309
|
|
310
|
-
test "a new edition of an answer creates a diff when published" do
|
311
|
-
without_metadata_denormalisation(AnswerEdition) do
|
312
|
-
edition_one = AnswerEdition.new(title: "Chucking wood", slug: "woodchuck", panopticon_id: @artefact.id)
|
313
|
-
edition_one.body = "A woodchuck would chuck all the wood he could chuck if a woodchuck could chuck wood."
|
314
|
-
edition_one.state = :ready
|
315
|
-
edition_one.save!
|
316
|
-
|
317
|
-
user = User.create name: "Michael"
|
318
|
-
user.publish edition_one, comment: "First edition"
|
319
|
-
|
320
|
-
edition_two = edition_one.build_clone
|
321
|
-
edition_two.body = "A woodchuck would chuck all the wood he could chuck if a woodchuck could chuck wood.\nAlthough no more than 361 cubic centimetres per day."
|
322
|
-
edition_two.state = :ready
|
323
|
-
edition_two.save!
|
324
|
-
|
325
|
-
user.publish edition_two, comment: "Second edition"
|
326
|
-
|
327
|
-
publish_action = edition_two.actions.where(request_type: "publish").last
|
328
|
-
|
329
|
-
assert_equal "A woodchuck would chuck all the wood he could chuck if a woodchuck could chuck wood.{+\"\\nAlthough no more than 361 cubic centimetres per day.\"}", publish_action.diff
|
330
|
-
end
|
331
|
-
end
|
332
|
-
|
333
|
-
test "handles inconsistent newlines" do
|
334
|
-
# Differ tries to be smart when calculating changes, by searching for a matching line
|
335
|
-
# later in the texts. When we have predominantly Windows-style new lines (\r\n) with
|
336
|
-
# a few Unix-style new lines (\n), a Unix-style new line later in one document will be
|
337
|
-
# matched to a Unix-style new line in the other, causing large swathes of spurious diff.
|
338
|
-
|
339
|
-
edition_one = AnswerEdition.new(title: "Chucking wood", slug: "woodchuck", panopticon_id: @artefact.id)
|
340
|
-
edition_one.body = "badger\n\nmushroom\r\n\r\nsnake\n\nend"
|
341
|
-
|
342
|
-
edition_two = AnswerEdition.new(title: "Chucking wood", slug: "woodchuck", panopticon_id: @artefact.id)
|
343
|
-
edition_two.body = "badger\r\n\r\nmushroom\r\n\r\nsnake\n\nend"
|
344
|
-
edition_two.stubs(:published_edition).returns(edition_one)
|
345
|
-
|
346
|
-
# Test that the diff output is simply the (normalised) string, with no diff markers
|
347
|
-
assert_equal "badger\n\nmushroom\n\nsnake\n\nend", edition_two.edition_changes.to_s
|
348
|
-
end
|
349
|
-
|
350
|
-
test "edition_changes should return false if the whole body is nil" do
|
351
|
-
edition = FactoryGirl.create(:completed_transaction_edition, body: nil)
|
352
|
-
refute edition.edition_changes
|
353
|
-
end
|
354
|
-
|
355
310
|
test "an edition can be moved into archive state" do
|
356
311
|
user, other_user = template_users
|
357
312
|
|
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: 21.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-09-
|
12
|
+
date: 2014-09-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bson_ext
|
@@ -27,22 +27,6 @@ dependencies:
|
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: differ
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - ! '>='
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: '0'
|
38
|
-
type: :runtime
|
39
|
-
prerelease: false
|
40
|
-
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ! '>='
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
46
30
|
- !ruby/object:Gem::Dependency
|
47
31
|
name: gds-api-adapters
|
48
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -460,7 +444,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
460
444
|
version: '0'
|
461
445
|
segments:
|
462
446
|
- 0
|
463
|
-
hash: -
|
447
|
+
hash: -3126132501408854274
|
464
448
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
465
449
|
none: false
|
466
450
|
requirements:
|
@@ -469,7 +453,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
469
453
|
version: '0'
|
470
454
|
segments:
|
471
455
|
- 0
|
472
|
-
hash: -
|
456
|
+
hash: -3126132501408854274
|
473
457
|
requirements: []
|
474
458
|
rubyforge_project:
|
475
459
|
rubygems_version: 1.8.23
|