From 216b77ab415b872c9ba934fa7a1c2a0c150cbacb Mon Sep 17 00:00:00 2001 From: Mario Visic Date: Sun, 15 Jan 2012 14:50:23 +1100 Subject: [PATCH] Fixed up a bad merge of the content instance spec changes. --- spec/models/content_instance_spec.rb | 214 ------------------- spec/models/locomotive/content_entry_spec.rb | 10 +- 2 files changed, 5 insertions(+), 219 deletions(-) delete mode 100644 spec/models/content_instance_spec.rb diff --git a/spec/models/content_instance_spec.rb b/spec/models/content_instance_spec.rb deleted file mode 100644 index f8c4c57b..00000000 --- a/spec/models/content_instance_spec.rb +++ /dev/null @@ -1,214 +0,0 @@ -# encoding: utf-8 - -require 'spec_helper' - -describe ContentInstance do - - before(:each) do - Site.any_instance.stubs(:create_default_pages!).returns(true) - @content_type = FactoryGirl.build(:content_type) - @content_type.content_custom_fields.build :label => 'Title', :kind => 'String' - @content_type.content_custom_fields.build :label => 'Description', :kind => 'Text' - @content_type.content_custom_fields.build :label => 'Visible ?', :kind => 'Text', :_alias => 'visible' - @content_type.highlighted_field_name = 'custom_field_1' - end - - describe '#validation' do - it 'is valid' do - build_content.should be_valid - end - - ## Validations ## - - it 'requires the presence of title' do - content = build_content :title => nil - content.should_not be_valid - content.errors[:title].should == ["can't be blank"] - end - - it 'requires the presence of the permalink (_slug)' do - content = build_content :title => nil - content.should_not be_valid - content.errors[:_slug].should == ["can't be blank"] - end - end - - context 'setting the slug' do - before :each do - build_content(:_slug => 'dogs').tap(&:save!)._slug.should == 'dogs' - end - - it 'uses the given slug if it is unique' do - build_content(:_slug => 'monkeys').tap(&:save!)._slug.should == 'monkeys' - build_content(:_slug => 'cats-2').tap(&:save!)._slug.should == 'cats-2' - end - - it 'appends a number to the end of the slug if it is not unique' do - build_content(:_slug => 'dogs').tap(&:save!)._slug.should == 'dogs-1' - build_content(:_slug => 'dogs').tap(&:save!)._slug.should == 'dogs-2' - build_content(:_slug => 'dogs-2').tap(&:save!)._slug.should == 'dogs-3' - build_content(:_slug => 'dogs-2').tap(&:save!)._slug.should == 'dogs-4' - end - - it 'ignores the case of a slug' do - build_content(:_slug => 'dogs').tap(&:save!)._slug.should == 'dogs-1' - build_content(:_slug => 'DOGS').tap(&:save!)._slug.should == 'dogs-2' - end - - it 'correctly handles slugs with multiple numbers' do - build_content(:_slug => 'fish-1-2').tap(&:save!)._slug.should == 'fish-1-2' - build_content(:_slug => 'fish-1-2').tap(&:save!)._slug.should == 'fish-1-3' - - build_content(:_slug => 'fish-1-hi').tap(&:save!)._slug.should == 'fish-1-hi' - build_content(:_slug => 'fish-1-hi').tap(&:save!)._slug.should == 'fish-1-hi-1' - end - end - - describe "#navigation" do - before(:each) do - %w(first second third).each_with_index do |item,index| - content = build_content({:title => item.to_s}) - content._position_in_list = index - instance_variable_set "@#{item}", content - end - end - - it 'should find previous item when available' do - @second.previous.custom_field_1.should == "first" - @second.previous._position_in_list.should == 0 - end - - it 'should find next item when available' do - @second.next.custom_field_1.should == "third" - @second.next._position_in_list.should == 2 - end - - it 'should return nil when fetching previous item on first in list' do - @first.previous.should == nil - end - - it 'should return nil when fetching next item on last in list' do - @third.next.should == nil - end - end - - describe '#permalink' do - - before(:each) do - @content = build_content - end - - it 'has a default value based on the highlighted field' do - @content.send(:set_slug) - @content._permalink.should == 'locomotive' - end - - it 'is empty if no value for the highlighted field is provided' do - @content.title = nil; @content.send(:set_slug) - @content._permalink.should be_nil - end - - it 'includes dashes instead of white spaces' do - @content.title = 'my content instance'; @content.send(:set_slug) - @content._permalink.should == 'my-content-instance' - end - - it 'removes accentued characters' do - @content.title = "une chèvre dans le pré"; @content.send(:set_slug) - @content._permalink.should == 'une-chevre-dans-le-pre' - end - - it 'removes dots' do - @content.title = "my.test"; @content.send(:set_slug) - @content._permalink.should == 'my-test' - end - - end - - describe '#visibility' do - - before(:each) do - @content = build_content - end - - it 'is visible by default' do - @content._visible?.should be_true - @content.visible?.should be_true - end - - it 'can be visible even if it is nil' do - @content.visible = nil - @content.send(:set_visibility).should be_true - @content.visible?.should be_true - end - - it 'can not be visible' do - @content.visible = false - @content.send(:set_visibility).should be_true - @content.visible?.should be_false - end - - end - - describe '#requirements' do - - it 'has public access to the highlighted field value' do - build_content.highlighted_field_value.should == 'Locomotive' - end - - end - - describe '#api' do - - before(:each) do - @account_1 = FactoryGirl.build('admin user', :id => fake_bson_id('1')) - @account_2 = FactoryGirl.build('frenchy user', :id => fake_bson_id('2')) - - @content_type.api_enabled = true - @content_type.api_accounts = ['', @account_1.id, @account_2.id] - - Site.any_instance.stubs(:accounts).returns([@account_1, @account_2]) - - @content = build_content - end - - it 'does not send email notifications if the api is disabled' do - @content_type.api_enabled = false - Admin::Notifications.expects(:new_content_instance).never - @content.save - end - - it 'does not send email notifications if no api accounts' do - @content_type.api_accounts = nil - Admin::Notifications.expects(:new_content_instance).never - @content.save - end - - it 'sends email notifications when a new instance is created' do - Admin::Notifications.expects(:new_content_instance).with(@account_1, @content).returns(mock('mailer', :deliver => true)) - Admin::Notifications.expects(:new_content_instance).with(@account_2, @content).returns(mock('mailer', :deliver => true)) - @content.save - end - - end - - describe '#site' do - it 'delegates to the content type' do - @content_type.expects(:site) - build_content.site - end - end - - after(:all) do - ENV['APP_TLD'] = nil - Locomotive.configure_for_test(true) - end - - def build_content(options = {}) - @content_type.contents.build({ :title => 'Locomotive', :description => 'Lorem ipsum....' }.merge(options)) - end - - def fake_bson_id(id) - BSON::ObjectId(id.to_s.rjust(24, '0')) - end -end diff --git a/spec/models/locomotive/content_entry_spec.rb b/spec/models/locomotive/content_entry_spec.rb index de7e666b..f09e5d79 100644 --- a/spec/models/locomotive/content_entry_spec.rb +++ b/spec/models/locomotive/content_entry_spec.rb @@ -133,19 +133,19 @@ describe Locomotive::ContentEntry do it 'is visible by default' do @content_entry._visible?.should be_true - @content_entry.visible?.should be_true + @content_entry.should be_visible end it 'can be visible even if it is nil' do @content_entry.visible = nil - @content_entry.send(:set_visibility) - @content_entry.visible?.should be_true + @content_entry.send(:set_visibility).should be_true + @content_entry.should be_visible end it 'can not be visible' do @content_entry.visible = false - @content_entry.send(:set_visibility) - @content_entry.visible?.should be_false + @content_entry.send(:set_visibility).should be_true + @content_entry.should_not be_visible end end