diff options
Diffstat (limited to 'test/models/related_asset_test.rb')
| -rw-r--r-- | test/models/related_asset_test.rb | 44 |
1 files changed, 40 insertions, 4 deletions
diff --git a/test/models/related_asset_test.rb b/test/models/related_asset_test.rb index a739e6bb..710b4cc4 100644 --- a/test/models/related_asset_test.rb +++ b/test/models/related_asset_test.rb | |||
| @@ -1,8 +1,44 @@ | |||
| 1 | require 'test_helper' | 1 | require 'test_helper' |
| 2 | 2 | ||
| 3 | class RelatedImageTest < ActiveSupport::TestCase | 3 | class RelatedAssetTest < ActiveSupport::TestCase |
| 4 | # Replace this with your real tests. | 4 | test "headline can be set on an image asset" do |
| 5 | test "the truth" do | 5 | node = Node.root.children.create!(:slug => "related_asset_headline_image_test") |
| 6 | assert true | 6 | asset = Asset.create!(:name => "photo", :upload_content_type => "image/png") |
| 7 | node.draft.assets << asset | ||
| 8 | related = node.draft.related_assets.find_by(:asset_id => asset.id) | ||
| 9 | |||
| 10 | related.headline = true | ||
| 11 | assert related.valid? | ||
| 12 | end | ||
| 13 | |||
| 14 | test "headline cannot be set on a non-image asset" do | ||
| 15 | node = Node.root.children.create!(:slug => "related_asset_headline_pdf_test") | ||
| 16 | asset = Asset.create!(:name => "programme", :upload_content_type => "application/pdf") | ||
| 17 | node.draft.assets << asset | ||
| 18 | related = node.draft.related_assets.find_by(:asset_id => asset.id) | ||
| 19 | |||
| 20 | related.headline = true | ||
| 21 | assert_not related.valid? | ||
| 22 | assert_includes related.errors[:headline], "can only be set on image assets" | ||
| 23 | end | ||
| 24 | |||
| 25 | test "the headline validation does not raise when asset is missing" do | ||
| 26 | related = RelatedAsset.new(:headline => true) | ||
| 27 | assert_not related.valid? | ||
| 28 | end | ||
| 29 | |||
| 30 | test "at most one headline per page is enforced at the database level" do | ||
| 31 | node = Node.root.children.create!(:slug => "related_asset_headline_uniqueness_test") | ||
| 32 | first = Asset.create!(:name => "first", :upload_content_type => "image/png") | ||
| 33 | second = Asset.create!(:name => "second", :upload_content_type => "image/png") | ||
| 34 | node.draft.assets << first | ||
| 35 | node.draft.assets << second | ||
| 36 | |||
| 37 | node.draft.related_assets.find_by(:asset_id => first.id).update!(:headline => true) | ||
| 38 | second_related = node.draft.related_assets.find_by(:asset_id => second.id) | ||
| 39 | |||
| 40 | assert_raises(ActiveRecord::RecordNotUnique) do | ||
| 41 | RelatedAsset.where(:id => second_related.id).update_all(:headline => true) | ||
| 42 | end | ||
| 7 | end | 43 | end |
| 8 | end | 44 | end |
