govuk_content_models 8.4.1 → 8.5.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/app/models/edition.rb +1 -1
- data/app/models/rendered_specialist_document.rb +22 -0
- data/lib/govuk_content_models/version.rb +1 -1
- data/test/fixtures/specialist_document_fixtures.rb +16 -0
- data/test/models/edition_test.rb +7 -7
- data/test/models/rendered_specialist_document_test.rb +52 -0
- data/test/models/specialist_document_edition_test.rb +7 -19
- metadata +9 -4
data/app/models/edition.rb
CHANGED
|
@@ -21,7 +21,7 @@ class Edition
|
|
|
21
21
|
field :department, type: String
|
|
22
22
|
field :rejected_count, type: Integer, default: 0
|
|
23
23
|
field :tags, type: String
|
|
24
|
-
field :
|
|
24
|
+
field :important_note, type: String
|
|
25
25
|
|
|
26
26
|
field :assignee, type: String
|
|
27
27
|
field :creator, type: String
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
class RenderedSpecialistDocument
|
|
2
|
+
include Mongoid::Document
|
|
3
|
+
|
|
4
|
+
field :slug, type: String
|
|
5
|
+
field :title, type: String
|
|
6
|
+
field :summary, type: String
|
|
7
|
+
field :body, type: String
|
|
8
|
+
field :opened_date, type: Date
|
|
9
|
+
field :closed_date, type: Date
|
|
10
|
+
field :case_type, type: String
|
|
11
|
+
field :case_state, type: String
|
|
12
|
+
field :market_sector, type: String
|
|
13
|
+
field :outcome_type, type: String
|
|
14
|
+
field :headers, type: Array
|
|
15
|
+
|
|
16
|
+
index "slug", unique: true
|
|
17
|
+
|
|
18
|
+
GOVSPEAK_FIELDS = []
|
|
19
|
+
|
|
20
|
+
validates :slug, uniqueness: true
|
|
21
|
+
validates_with SafeHtml
|
|
22
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module SpecialistDocumentFixtures
|
|
2
|
+
def basic_specialist_document_fields
|
|
3
|
+
{
|
|
4
|
+
slug: 'cma-cases/merger-investigation-2014',
|
|
5
|
+
title: "Merger Investigation 2014",
|
|
6
|
+
summary: "This is the summary of stuff going on in the Merger Investigation 2014",
|
|
7
|
+
state: "published",
|
|
8
|
+
body: "A body",
|
|
9
|
+
opened_date: '2012-04-21',
|
|
10
|
+
document_id: 'a-document-id',
|
|
11
|
+
market_sector: 'oil-and-gas',
|
|
12
|
+
case_type: 'some-case-type',
|
|
13
|
+
case_state: 'open'
|
|
14
|
+
}
|
|
15
|
+
end
|
|
16
|
+
end
|
data/test/models/edition_test.rb
CHANGED
|
@@ -984,9 +984,9 @@ class EditionTest < ActiveSupport::TestCase
|
|
|
984
984
|
end
|
|
985
985
|
end
|
|
986
986
|
|
|
987
|
-
context "
|
|
987
|
+
context "Important note" do
|
|
988
988
|
def set_note(edition, note)
|
|
989
|
-
edition.
|
|
989
|
+
edition.important_note = note
|
|
990
990
|
edition.save
|
|
991
991
|
edition.reload
|
|
992
992
|
end
|
|
@@ -996,18 +996,18 @@ class EditionTest < ActiveSupport::TestCase
|
|
|
996
996
|
set_note(@edition, "This is an important note.")
|
|
997
997
|
end
|
|
998
998
|
|
|
999
|
-
should "be able to add
|
|
1000
|
-
assert_equal "This is an important note.", @edition.
|
|
999
|
+
should "be able to add a important note to an edition" do
|
|
1000
|
+
assert_equal "This is an important note.", @edition.important_note
|
|
1001
1001
|
end
|
|
1002
1002
|
|
|
1003
|
-
should "be able to update an existing
|
|
1003
|
+
should "be able to update an existing important note" do
|
|
1004
1004
|
set_note(@edition, "New note.")
|
|
1005
|
-
assert_equal "New note.", @edition.
|
|
1005
|
+
assert_equal "New note.", @edition.important_note
|
|
1006
1006
|
end
|
|
1007
1007
|
|
|
1008
1008
|
should "should not exist when creating new editions" do
|
|
1009
1009
|
Edition.subclasses.each do |klass|
|
|
1010
|
-
refute klass.fields_to_clone.include?(:
|
|
1010
|
+
refute klass.fields_to_clone.include?(:important_note), "Important note is cloned in a #{klass}"
|
|
1011
1011
|
end
|
|
1012
1012
|
end
|
|
1013
1013
|
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
require "fixtures/specialist_document_fixtures"
|
|
3
|
+
|
|
4
|
+
class RenderedSpecialistDocumentTest < ActiveSupport::TestCase
|
|
5
|
+
include SpecialistDocumentFixtures
|
|
6
|
+
|
|
7
|
+
test "can assign all attributes" do
|
|
8
|
+
r = RenderedSpecialistDocument.new(basic_specialist_document_fields)
|
|
9
|
+
basic_specialist_document_fields.each do |k,v|
|
|
10
|
+
if (k =~ /date$/)
|
|
11
|
+
assert_equal Date.parse(v), r.send(k.to_sym)
|
|
12
|
+
else
|
|
13
|
+
assert_equal v, r.send(k.to_sym)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
test "can persist" do
|
|
19
|
+
r = RenderedSpecialistDocument.new(basic_specialist_document_fields)
|
|
20
|
+
r.save!
|
|
21
|
+
|
|
22
|
+
assert_equal 1, RenderedSpecialistDocument.where(slug: r.slug).count
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
test "duplicate slugs disallowed" do
|
|
26
|
+
RenderedSpecialistDocument.create(slug: "my-slug")
|
|
27
|
+
second = RenderedSpecialistDocument.create(slug: "my-slug")
|
|
28
|
+
|
|
29
|
+
refute second.valid?
|
|
30
|
+
assert_equal 1, RenderedSpecialistDocument.count
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
test "has no govspeak fields" do
|
|
34
|
+
assert_equal [], RenderedSpecialistDocument::GOVSPEAK_FIELDS
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
test "can store headers hash" do
|
|
38
|
+
sample_headers = [
|
|
39
|
+
{
|
|
40
|
+
"text" => "Phase 1",
|
|
41
|
+
"level" => 2,
|
|
42
|
+
"id" => "phase-1",
|
|
43
|
+
"headers" => []
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
sample_fields = basic_specialist_document_fields.merge(headers: sample_headers)
|
|
47
|
+
r = RenderedSpecialistDocument.create!(sample_fields)
|
|
48
|
+
|
|
49
|
+
found = RenderedSpecialistDocument.where(slug: r.slug).first
|
|
50
|
+
assert_equal sample_headers, found.headers
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -1,22 +1,10 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
2
|
|
|
3
3
|
require "test_helper"
|
|
4
|
+
require "fixtures/specialist_document_fixtures"
|
|
4
5
|
|
|
5
6
|
class SpecialistDocumentEditionTest < ActiveSupport::TestCase
|
|
6
|
-
|
|
7
|
-
{
|
|
8
|
-
slug: 'cma-cases/merger-investigation-2014',
|
|
9
|
-
title: "Merger Investigation 2014",
|
|
10
|
-
summary: "This is the summary of stuff going on in the Merger Investigation 2014",
|
|
11
|
-
state: "published",
|
|
12
|
-
body: "A body",
|
|
13
|
-
opened_date: '2012-04-21',
|
|
14
|
-
document_id: 'a-document-id',
|
|
15
|
-
market_sector: 'oil-and-gas',
|
|
16
|
-
case_type: 'some-case-type',
|
|
17
|
-
case_state: 'open'
|
|
18
|
-
}
|
|
19
|
-
end
|
|
7
|
+
include SpecialistDocumentFixtures
|
|
20
8
|
|
|
21
9
|
setup do
|
|
22
10
|
@original_asset_api_client = Attachable.asset_api_client
|
|
@@ -28,13 +16,13 @@ class SpecialistDocumentEditionTest < ActiveSupport::TestCase
|
|
|
28
16
|
end
|
|
29
17
|
|
|
30
18
|
should "have correct fields" do
|
|
31
|
-
edition = SpecialistDocumentEdition.new(
|
|
19
|
+
edition = SpecialistDocumentEdition.new(basic_specialist_document_fields)
|
|
32
20
|
|
|
33
|
-
assert_equal
|
|
21
|
+
assert_equal basic_specialist_document_fields[:title], edition.title
|
|
34
22
|
end
|
|
35
23
|
|
|
36
24
|
should "be persistable" do
|
|
37
|
-
edition = SpecialistDocumentEdition.create!(
|
|
25
|
+
edition = SpecialistDocumentEdition.create!(basic_specialist_document_fields)
|
|
38
26
|
|
|
39
27
|
found = SpecialistDocumentEdition.where(slug: edition.slug).first
|
|
40
28
|
assert_equal found.attributes, edition.attributes
|
|
@@ -56,7 +44,7 @@ class SpecialistDocumentEditionTest < ActiveSupport::TestCase
|
|
|
56
44
|
should "persist attachment record when document saved" do
|
|
57
45
|
Attachable.asset_api_client.stubs(:create_asset)
|
|
58
46
|
|
|
59
|
-
edition = SpecialistDocumentEdition.new(
|
|
47
|
+
edition = SpecialistDocumentEdition.new(basic_specialist_document_fields)
|
|
60
48
|
file = OpenStruct.new(original_filename: "document.pdf")
|
|
61
49
|
|
|
62
50
|
edition.build_attachment(title: "baz", file: file)
|
|
@@ -69,7 +57,7 @@ class SpecialistDocumentEditionTest < ActiveSupport::TestCase
|
|
|
69
57
|
end
|
|
70
58
|
|
|
71
59
|
should "transmit attached file to asset manager when document saved" do
|
|
72
|
-
edition = SpecialistDocumentEdition.new(
|
|
60
|
+
edition = SpecialistDocumentEdition.new(basic_specialist_document_fields)
|
|
73
61
|
file = OpenStruct.new(original_filename: "document.pdf")
|
|
74
62
|
|
|
75
63
|
success_response = stub("asset manager response", id: "/test-id")
|
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: 8.
|
|
4
|
+
version: 8.5.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-03-
|
|
12
|
+
date: 2014-03-12 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: bson_ext
|
|
@@ -375,6 +375,7 @@ files:
|
|
|
375
375
|
- app/models/parted.rb
|
|
376
376
|
- app/models/place_edition.rb
|
|
377
377
|
- app/models/programme_edition.rb
|
|
378
|
+
- app/models/rendered_specialist_document.rb
|
|
378
379
|
- app/models/simple_smart_answer_edition.rb
|
|
379
380
|
- app/models/simple_smart_answer_edition/node.rb
|
|
380
381
|
- app/models/simple_smart_answer_edition/node/option.rb
|
|
@@ -403,6 +404,7 @@ files:
|
|
|
403
404
|
- lib/govuk_content_models/version.rb
|
|
404
405
|
- lib/mongoid/monkey_patches.rb
|
|
405
406
|
- test/fixtures/contactotron_api_response.json
|
|
407
|
+
- test/fixtures/specialist_document_fixtures.rb
|
|
406
408
|
- test/fixtures/uploads/image.jpg
|
|
407
409
|
- test/models/artefact_action_test.rb
|
|
408
410
|
- test/models/artefact_external_link_test.rb
|
|
@@ -428,6 +430,7 @@ files:
|
|
|
428
430
|
- test/models/local_service_test.rb
|
|
429
431
|
- test/models/local_transaction_edition_test.rb
|
|
430
432
|
- test/models/overview_dashboard_test.rb
|
|
433
|
+
- test/models/rendered_specialist_document_test.rb
|
|
431
434
|
- test/models/simple_smart_answer_edition_test.rb
|
|
432
435
|
- test/models/simple_smart_answer_node_test.rb
|
|
433
436
|
- test/models/simple_smart_answer_option_test.rb
|
|
@@ -460,7 +463,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
460
463
|
version: '0'
|
|
461
464
|
segments:
|
|
462
465
|
- 0
|
|
463
|
-
hash:
|
|
466
|
+
hash: -2243778202903254649
|
|
464
467
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
465
468
|
none: false
|
|
466
469
|
requirements:
|
|
@@ -469,7 +472,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
469
472
|
version: '0'
|
|
470
473
|
segments:
|
|
471
474
|
- 0
|
|
472
|
-
hash:
|
|
475
|
+
hash: -2243778202903254649
|
|
473
476
|
requirements: []
|
|
474
477
|
rubyforge_project:
|
|
475
478
|
rubygems_version: 1.8.23
|
|
@@ -478,6 +481,7 @@ specification_version: 3
|
|
|
478
481
|
summary: Shared models for Panopticon and Publisher, as a Rails Engine
|
|
479
482
|
test_files:
|
|
480
483
|
- test/fixtures/contactotron_api_response.json
|
|
484
|
+
- test/fixtures/specialist_document_fixtures.rb
|
|
481
485
|
- test/fixtures/uploads/image.jpg
|
|
482
486
|
- test/models/artefact_action_test.rb
|
|
483
487
|
- test/models/artefact_external_link_test.rb
|
|
@@ -503,6 +507,7 @@ test_files:
|
|
|
503
507
|
- test/models/local_service_test.rb
|
|
504
508
|
- test/models/local_transaction_edition_test.rb
|
|
505
509
|
- test/models/overview_dashboard_test.rb
|
|
510
|
+
- test/models/rendered_specialist_document_test.rb
|
|
506
511
|
- test/models/simple_smart_answer_edition_test.rb
|
|
507
512
|
- test/models/simple_smart_answer_node_test.rb
|
|
508
513
|
- test/models/simple_smart_answer_option_test.rb
|