- describe 'シリアライズチェックに於いて' do\r
- context 'つつがなく終わるとき' do\r
- it '0からシリアライズされているならTrueを返す' do\r
- r = Panel.validate_t [0, 1, 2]\r
- r.should be_true\r
- end\r
- it '見た目はシリアライズされてなくてもソート結果が無事ならtrueを返す' do\r
- r = Panel.validate_t [0, 2, 1]\r
- r.should be_true\r
- end\r
- it '見た目はシリアライズされてなくてもソート結果が無事ならtrueを返す' do\r
- r = Panel.validate_t [ 2, 1, 4, 3, 0]\r
- r.should be_true\r
- end\r
- end\r
- context '異常なとき' do\r
- it '0から始まらないならFalseを返す' do\r
- r = Panel.validate_t [1, 2, 3]\r
- r.should be_false\r
- end\r
- it '連続していないならFalseを返す' do\r
- r = Panel.validate_t [0, 1, 2, 4]\r
- r.should be_false\r
- end\r
- it '連続していないならFalseを返す' do\r
- r = Panel.validate_t [0, 1, 2, 4, 5]\r
- r.should be_false\r
- end\r
- end\r
- end\r
- describe 'tチェック単体に於いて' do\r
- before do\r
- end\r
- context 'つつがなく終わるとき' do\r
- it 'コマ絵とフキダシのtを収集依頼している' do\r
- Panel.should_receive(:collect_element_value).with(any_args).exactly(1)\r
- Panel.stub(:collect_element_value).with(any_args).and_return([])\r
- Panel.stub(:validate_t).with(any_args).and_return(true)\r
- r = Panel.validate_element_t [], :t\r
- end\r
- it '収集したtをシリアライズチェック依頼している' do\r
- Panel.stub(:collect_element_value).with(any_args).and_return([])\r
- Panel.should_receive(:validate_t).with(any_args).exactly(1)\r
- Panel.stub(:validate_t).with(any_args).and_return(true)\r
- r = Panel.validate_element_t [], :t\r
- end\r
- end\r
- #実データでチェック\r
- #依頼チェックだけでは不安なので最低限のチェックを\r
- context '新規のとき' do\r
- it 'コマ絵で正常通過している' do\r
- @panel = FactoryGirl.build :panel, :author_id => @author.id\r
- @panel.panel_pictures.build(\r
- FactoryGirl.attributes_for(:panel_picture, :panel_id => nil, :picture_id => @p.id, :t => nil)\r
- )\r
- r = Panel.validate_element_t [@panel.panel_pictures, @panel.speech_balloons], :t\r
- r.should be_true\r
- end\r
- it 'フキダシで正常通過している' do\r
- @panel = FactoryGirl.build :panel, :author_id => @author.id\r
- @panel.speech_balloons.build(\r
- FactoryGirl.attributes_for(:speech_balloon, :panel_id => nil, :speech_balloon_template_id => @sbt.id, :t => nil)\r
- )\r
- r = Panel.validate_element_t [@panel.panel_pictures, @panel.speech_balloons], :t\r
- r.should be_true\r
- end\r
- end\r
- context '既存のとき' do\r
- it 'コマ絵で正常通過している' do\r
- @panel = FactoryGirl.create :panel, :author_id => @author.id\r
- @panel.panel_pictures.build(\r
- FactoryGirl.attributes_for(:panel_picture, :panel_id => @panel.id, :picture_id => @p.id, :t => 0)\r
- )\r
- r = Panel.validate_element_t [@panel.panel_pictures, @panel.speech_balloons], :t\r
- r.should be_true\r
- end\r
- it 'フキダシで正常通過している' do\r
- @panel = FactoryGirl.create :panel, :author_id => @author.id\r
- @panel.speech_balloons.build(\r
- FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 0)\r
- )\r
- r = Panel.validate_element_t [@panel.panel_pictures, @panel.speech_balloons], :t\r
- r.should be_true\r
- end\r
- end\r
- end\r
- describe '複合チェックに於いて' do\r
- context 'つつがなく終わるとき' do\r
- it 'している' do\r
- @panel = FactoryGirl.build :panel, :author_id => @author.id\r
- @panel.panel_pictures.build(\r
- FactoryGirl.attributes_for(:panel_picture, :panel_id => @panel.id, :picture_id => @p.id, :t => 0)\r
- )\r
- @panel.panel_pictures.build(\r
- FactoryGirl.attributes_for(:panel_picture, :panel_id => @panel.id, :picture_id => @p.id, :t => 1)\r
- )\r
- sb1 = @panel.speech_balloons.build(\r
- FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 2)\r
- )\r
- sb1.balloons.build(\r
- FactoryGirl.attributes_for(:balloon, :speech_balloon_id => sb1.id)\r
- )\r
- sb1.speeches.build(\r
- FactoryGirl.attributes_for(:speech, :speech_balloon_id => sb1.id)\r
- )\r
- sb2 = @panel.speech_balloons.build(\r
- FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 3)\r
- )\r
- sb2.balloons.build(\r
- FactoryGirl.attributes_for(:balloon, :speech_balloon_id => sb2.id)\r
- )\r
- sb2.speeches.build(\r
- FactoryGirl.attributes_for(:speech, :speech_balloon_id => sb2.id)\r
- )\r
- r = @panel.validate_child\r
- r.should be_true\r
- end\r
- end\r
- end\r
- describe '複合チェックに於いて' do\r
- context 'つつがなく終わるとき' do\r
- it 'している' do\r
- @panel = FactoryGirl.build :panel, :author_id => @author.id\r
- @panel.panel_pictures.build(\r
- FactoryGirl.attributes_for(:panel_picture, :panel_id => @panel.id, :picture_id => @p.id, :t => 0)\r
- )\r
- @panel.panel_pictures.build(\r
- FactoryGirl.attributes_for(:panel_picture, :panel_id => @panel.id, :picture_id => @p.id, :t => 1)\r
- )\r
- sb1 = @panel.speech_balloons.build(\r
- FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 2)\r
- )\r
- sb1.balloons.build(\r
- FactoryGirl.attributes_for(:balloon, :speech_balloon_id => sb1.id)\r
- )\r
- sb1.speeches.build(\r
- FactoryGirl.attributes_for(:speech, :speech_balloon_id => sb1.id)\r
- )\r
- sb2 = @panel.speech_balloons.build(\r
- FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 3)\r
- )\r
- sb2.balloons.build(\r
- FactoryGirl.attributes_for(:balloon, :speech_balloon_id => sb2.id)\r
- )\r
- sb2.speeches.build(\r
- FactoryGirl.attributes_for(:speech, :speech_balloon_id => sb2.id)\r
- )\r
- r = @panel.validate_child\r
- r.should be_true\r
- end\r
- end\r
- end\r
- describe '保存に於いて' do\r
- context 'つつがなく終わるとき' do\r
- it 'idチェックを依頼している' do\r
- Panel.should_receive(:validate_elements_id).with(any_args).exactly(1)\r
- Panel.stub(:validate_elements_id).with(any_args).and_return(true)\r
- @panel = FactoryGirl.build :panel, :author_id => @author.id\r
- r = @panel.store\r
- end\r
- it '保存を依頼している' do\r
- Panel.stub(:validate_elements_id).with(any_args).and_return(true)\r
- Panel.any_instance.should_receive(:save).with(any_args).exactly(1)\r
- Panel.any_instance.stub(:save).with(any_args).and_return(true)\r
- @panel = FactoryGirl.build :panel, :author_id => @author.id\r
- r = @panel.store\r
- end\r
- it 'Trueを返す' do\r
- Panel.stub(:validate_elements_id).with(any_args).and_return(true)\r
- @panel = FactoryGirl.build :panel, :author_id => @author.id\r
- r = @panel.store\r
- r.should be_true\r
- end\r
- it 'エラーメッセージがセットされていない' do\r
- Panel.stub(:validate_elements_id).with(any_args).and_return(true)\r
- @panel = FactoryGirl.create :panel, :author_id => @author.id\r
- r = @panel.store\r
- @panel.errors.empty?.should be_true\r
- end\r
- context '新規のとき' do\r
- it 'Trueを返す' do\r
- Panel.stub(:validate_elements_id).with(any_args).and_return(true)\r
- @panel = FactoryGirl.build :panel, :author_id => @author.id\r
- r = @panel.store\r
- r.should be_true\r
- end\r
- it '行が追加されている' do\r
- Panel.stub(:validate_elements_id).with(any_args).and_return(true)\r
- @panel = FactoryGirl.build :panel, :author_id => @author.id\r
- lambda {\r
- r = @panel.store\r
- }.should change(Panel, :count)\r
- end\r
- end\r
- context '更新のとき' do\r
- it 'Trueを返す' do\r
- Panel.stub(:validate_elements_id).with(any_args).and_return(true)\r
- @panel = FactoryGirl.create :panel, :author_id => @author.id\r
- r = @panel.store\r
- r.should be_true\r
- end\r
- it '行が追加されていない' do\r
- Panel.stub(:validate_elements_id).with(any_args).and_return(true)\r
- @panel = FactoryGirl.create :panel, :author_id => @author.id\r
- lambda {\r
- r = @panel.store\r
- }.should_not change(Panel, :count)\r
- end\r
- end\r
- end\r
- context 'idチェックが失敗するとき' do\r
- it 'Falseを返す' do\r
- Panel.stub(:validate_elements_id).with(any_args).and_return(false)\r
- @panel = FactoryGirl.create :panel, :author_id => @author.id\r
- r = @panel.store\r
- r.should be_false\r
- end\r
- it 'エラーメッセージがセットされている' do\r
- Panel.stub(:validate_elements_id).with(any_args).and_return(false)\r
- @panel = FactoryGirl.create :panel, :author_id => @author.id\r
- r = @panel.store\r
- @panel.errors.empty?.should be_false\r
- end\r
- it '行が追加されていない' do\r
- Panel.stub(:validate_elements_id).with(any_args).and_return(false)\r
- @panel = FactoryGirl.build :panel, :author_id => @author.id\r
- lambda {\r
- r = @panel.store\r
- }.should_not change(Panel, :count)\r
- end\r
- end\r
- end\r