govuk_content_models 8.5.0 → 8.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 8.6.0
2
+
3
+ * add `RenderedSpecialistDocument#create_or_update_by_slug!` and `RenderedSpecialistDocument#find_by_slug`
4
+
1
5
  ## 8.4.1
2
6
 
3
7
  * Bugfix: Prevent rails dev-mode reloading from clearing configuration of
@@ -1,5 +1,6 @@
1
1
  class RenderedSpecialistDocument
2
2
  include Mongoid::Document
3
+ include Mongoid::Timestamps
3
4
 
4
5
  field :slug, type: String
5
6
  field :title, type: String
@@ -19,4 +20,16 @@ class RenderedSpecialistDocument
19
20
 
20
21
  validates :slug, uniqueness: true
21
22
  validates_with SafeHtml
23
+
24
+ def self.create_or_update_by_slug!(attributes)
25
+ RenderedSpecialistDocument.find_or_initialize_by(
26
+ slug: attributes.fetch(:slug)
27
+ ).tap do |doc|
28
+ doc.update_attributes!(attributes)
29
+ end
30
+ end
31
+
32
+ def self.find_by_slug(slug)
33
+ where(slug: slug).first
34
+ end
22
35
  end
@@ -269,6 +269,17 @@ FactoryGirl.define do
269
269
  case_state 'open'
270
270
  end
271
271
 
272
+ factory :rendered_specialist_document do
273
+ sequence(:slug) {|n| "test-rendered-specialist-document-#{n}" }
274
+ sequence(:title) {|n| "Test Rendered Specialist Document #{n}" }
275
+ summary "My summary"
276
+ body "<p>My body</p>"
277
+ opened_date '2013-04-20'
278
+ market_sector 'some-market-sector'
279
+ case_type 'a-case-type'
280
+ case_state 'open'
281
+ end
282
+
272
283
  factory :simple_smart_answer_edition do
273
284
  panopticon_id {
274
285
  a = create(:artefact)
@@ -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 = "8.5.0"
3
+ VERSION = "8.6.0"
4
4
  end
@@ -49,4 +49,35 @@ class RenderedSpecialistDocumentTest < ActiveSupport::TestCase
49
49
  found = RenderedSpecialistDocument.where(slug: r.slug).first
50
50
  assert_equal sample_headers, found.headers
51
51
  end
52
+
53
+ test ".create_or_update_by_slug!" do
54
+ slug = "a-slug"
55
+ original_body = "Original body"
56
+
57
+ version1_attrs= {
58
+ slug: slug,
59
+ body: original_body,
60
+ }
61
+
62
+ created = RenderedSpecialistDocument.create_or_update_by_slug!(version1_attrs)
63
+
64
+ assert created.is_a?(RenderedSpecialistDocument)
65
+ assert created.persisted?
66
+
67
+ version2_attrs = version1_attrs.merge(
68
+ body: "Updated body",
69
+ )
70
+
71
+ version2 = RenderedSpecialistDocument.create_or_update_by_slug!(version2_attrs)
72
+
73
+ assert version2.persisted?
74
+ assert_equal "Updated body", version2.body
75
+ end
76
+
77
+ test ".find_by_slug" do
78
+ created = RenderedSpecialistDocument.create!(slug: "find-by-this-slug")
79
+ found = RenderedSpecialistDocument.find_by_slug("find-by-this-slug")
80
+
81
+ assert_equal created, found
82
+ end
52
83
  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: 8.5.0
4
+ version: 8.6.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 00:00:00.000000000 Z
12
+ date: 2014-03-13 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: -2243778202903254649
466
+ hash: 4252404017043972541
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: -2243778202903254649
475
+ hash: 4252404017043972541
476
476
  requirements: []
477
477
  rubyforge_project:
478
478
  rubygems_version: 1.8.23