+ describe 'json単体出力オプションに於いて' do\r
+ end\r
+ describe 'コマ部品集合に於いて' do\r
+ before do\r
+ #コマを作成しておく。\r
+ @panel = FactoryGirl.create :panel, :author_id => @author.id\r
+ @pp = FactoryGirl.create :panel_picture, :panel_id => @panel.id, :t => 1, :width => @p.width, :height => @p.height\r
+ @sb = @panel.speech_balloons.create(\r
+ FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 0)\r
+ )\r
+ @gc = @panel.ground_colors.create(\r
+ FactoryGirl.attributes_for(:ground_color, :panel_id => @panel.id, :color_id => @color.id)\r
+ )\r
+ @gp = @panel.ground_pictures.create(\r
+ FactoryGirl.attributes_for(:ground_picture, :panel_id => @panel.id, :picture_id => @p.id)\r
+ )\r
+ @pc = @panel.panel_colors.create(\r
+ FactoryGirl.attributes_for(:panel_color, :panel_id => @panel.id, :code => 0xff0000)\r
+ )\r
+ @panel.reload\r
+ end\r
+ it 'リストを返している' do\r
+ r = @panel.parts_element\r
+ r.is_a?(Array).should be_true\r
+ end\r
+ it 'コマ絵とフキダシを合わせている' do\r
+ r = @panel.parts_element\r
+ r.include?(@pp).should be_true\r
+ r.include?(@sb).should be_true\r
+ end\r
+ it '景色素材と景色カラーと景色カラーコードを含んでいない' do\r
+ r = @panel.parts_element\r
+ r.include?(@gc).should_not be_true\r
+ r.include?(@gp).should_not be_true\r
+ r.include?(@pc).should_not be_true\r
+ end\r
+ end\r
+ describe 'コマ部品に於いて' do\r
+ before do\r
+ #コマを作成しておく。\r
+ @panel = FactoryGirl.create :panel, :author_id => @author.id\r
+ @pp = FactoryGirl.create :panel_picture, :panel_id => @panel.id, :t => 1, :width => @p.width, :height => @p.height\r
+ @sb = @panel.speech_balloons.create(\r
+ FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 0)\r
+ )\r
+ @gc = @panel.ground_colors.create(\r
+ FactoryGirl.attributes_for(:ground_color, :panel_id => @panel.id, :color_id => @color.id)\r
+ )\r
+ @gp = @panel.ground_pictures.create(\r
+ FactoryGirl.attributes_for(:ground_picture, :panel_id => @panel.id, :picture_id => @p.id)\r
+ )\r
+ @pc = @panel.panel_colors.create(\r
+ FactoryGirl.attributes_for(:panel_color, :panel_id => @panel.id, :code => 0xff0000)\r
+ )\r
+ @panel.reload\r
+ end\r
+ context 'つつがなく終わるとき' do\r
+ it 'コマ部品集合を利用している' do\r
+ Panel.any_instance.stub(:parts_element).with(any_args).and_return([])\r
+ Panel.any_instance.should_receive(:parts_element).with(any_args).exactly(1)\r
+ r = @panel.parts\r
+ end\r
+ end\r
+ it 'リストを返している' do\r
+ r = @panel.parts\r
+ r.is_a?(Array).should be_true\r
+ r.size.should eq 2\r
+ end\r
+ it 'tでソートしている' do\r
+ r = @panel.parts\r
+ r[0].should eq @sb\r
+ r[1].should eq @pp\r
+ end\r
+ context 'さらに末尾にフキダシを追加したとき' do\r
+ before do\r
+ @sb2 = @panel.speech_balloons.create(\r
+ FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 2)\r
+ )\r
+ @panel.reload\r
+ end\r
+ it 'tでソートしている' do\r
+ r = @panel.parts\r
+ r[0].should eq @sb\r
+ r[1].should eq @pp\r
+ r[2].should eq @sb2\r
+ end\r
+ end\r
+ end\r
+ describe 'コマ地に於いて' do\r
+ before do\r
+ #コマを作成しておく。\r
+ @panel = FactoryGirl.create :panel, :author_id => @author.id\r
+ @pp = FactoryGirl.create :panel_picture, :panel_id => @panel.id, :t => 1, :width => @p.width, :height => @p.height\r
+ @sb = @panel.speech_balloons.create(\r
+ FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 0)\r
+ )\r
+ @gc = @panel.ground_colors.create(\r
+ FactoryGirl.attributes_for(:ground_color, :panel_id => @panel.id, :color_id => @color.id)\r
+ )\r
+ @gp = @panel.ground_pictures.create(\r
+ FactoryGirl.attributes_for(:ground_picture, :panel_id => @panel.id, :picture_id => @p.id)\r
+ )\r
+ @pc = @panel.panel_colors.create(\r
+ FactoryGirl.attributes_for(:panel_color, :panel_id => @panel.id, :code => 0xff0000)\r
+ )\r
+ @panel.reload\r
+ end\r
+ it 'リストを返している' do\r
+ r = @panel.grounds\r
+ r.is_a?(Array).should be_true\r
+ end\r
+ it '景色素材と景色カラーと景色カラーコードを合わせている' do\r
+ r = @panel.grounds\r
+ r.include?(@gc).should be_true\r
+ r.include?(@gp).should be_true\r
+ r.include?(@pc).should be_true\r
+ end\r
+ it 'コマ絵とフキダシを含んでいない' do\r
+ r = @panel.grounds\r
+ r.include?(@pp).should_not be_true\r
+ r.include?(@sb).should_not be_true\r
+ end\r
+ end\r
+ describe 'コマ要素に於いて' do\r
+ before do\r
+ #コマを作成しておく。\r
+ @panel = FactoryGirl.create :panel, :author_id => @author.id\r
+ @pp = FactoryGirl.create :panel_picture, :panel_id => @panel.id, :t => 1, :width => @p.width, :height => @p.height\r
+ @sb = @panel.speech_balloons.create(\r
+ FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 0)\r
+ )\r
+ @gc = @panel.ground_colors.create(\r
+ FactoryGirl.attributes_for(:ground_color, :panel_id => @panel.id, :color_id => @color.id)\r
+ )\r
+ @gp = @panel.ground_pictures.create(\r
+ FactoryGirl.attributes_for(:ground_picture, :panel_id => @panel.id, :picture_id => @p.id)\r
+ )\r
+ @pc = @panel.panel_colors.create(\r
+ FactoryGirl.attributes_for(:panel_color, :panel_id => @panel.id, :code => 0xff0000)\r
+ )\r
+ @panel.reload\r
+ end\r
+ context 'つつがなく終わるとき' do\r
+ it 'コマ部品を利用している' do\r
+ Panel.any_instance.stub(:parts).with(any_args).and_return([])\r
+ Panel.any_instance.should_receive(:parts).with(any_args).exactly(1)\r
+ r = @panel.panel_elements\r
+ end\r
+ it 'コマ地を利用している' do\r
+ Panel.any_instance.stub(:grounds).with(any_args).and_return([])\r
+ Panel.any_instance.should_receive(:grounds).with(any_args).exactly(1)\r
+ r = @panel.panel_elements\r
+ end\r
+ end\r
+ it 'リストを返している' do\r
+ r = @panel.panel_elements\r
+ r.is_a?(Array).should be_true\r
+ end\r
+ it 'コマ絵とフキダシを合わせている' do\r
+ r = @panel.panel_elements\r
+ r.include?(@pp).should be_true\r
+ r.include?(@sb).should be_true\r
+ end\r
+ it '景色素材と景色カラーと景色カラーコードを合わせている' do\r
+ r = @panel.panel_elements\r
+ r.include?(@gc).should be_true\r
+ r.include?(@gp).should be_true\r
+ r.include?(@pc).should be_true\r
+ end\r
+ it 'tでソートしている[t順にソートできる部品の方が優先順位は高い。]' do\r
+ r = @panel.panel_elements\r
+ r[0].should eq @sb\r
+ r[1].should eq @pp\r
+ end\r
+ end\r
+ describe 'コマ要素のjson出力に於いて' do\r
+ before do\r
+ #コマを作成しておく。\r
+ @panel = FactoryGirl.create :panel, :author_id => @author.id\r
+ @pp = FactoryGirl.create :panel_picture, :panel_id => @panel.id, :t => 1, :width => @p.width, :height => @p.height\r
+ @sb = @panel.speech_balloons.create(\r
+ FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 0)\r
+ )\r
+ @gc = @panel.ground_colors.create(\r
+ FactoryGirl.attributes_for(:ground_color, :panel_id => @panel.id, :color_id => @color.id)\r
+ )\r
+ @gp = @panel.ground_pictures.create(\r
+ FactoryGirl.attributes_for(:ground_picture, :panel_id => @panel.id, :picture_id => @p.id)\r
+ )\r
+ @pc = @panel.panel_colors.create(\r
+ FactoryGirl.attributes_for(:panel_color, :panel_id => @panel.id, :code => 0xff0000)\r
+ )\r
+ @panel.reload\r
+ end\r
+ context 'つつがなく終わるとき' do\r
+ before do\r
+ Panel.stub(:elm_json_opt).with(@pp).and_return({})\r
+ Panel.stub(:elm_json_opt).with(@sb).and_return({})\r
+ Panel.stub(:elm_json_opt).with(@gp).and_return({})\r
+ Panel.stub(:elm_json_opt).with(@gc).and_return({})\r
+ Panel.stub(:elm_json_opt).with(@pc).and_return({})\r
+ end\r
+ it 'コマ要素のjson出力オプションにコマ絵json出力オプションを依頼している' do\r
+ Panel.should_receive(:elm_json_opt).with(@pp).exactly(1)\r
+ r = @panel.elements\r
+ end\r
+ it 'コマ要素のjson出力オプションにフキダシjson出力オプションを依頼している' do\r
+ Panel.should_receive(:elm_json_opt).with(@sb).exactly(1)\r
+ r = @panel.elements\r
+ end\r
+ it 'コマ要素のjson出力オプションに景色素材json出力オプションを依頼している' do\r
+ Panel.should_receive(:elm_json_opt).with(@gp).exactly(1)\r
+ r = @panel.elements\r
+ end\r
+ it 'コマ要素のjson出力オプションに景色カラーjson出力オプションを依頼している' do\r
+ Panel.should_receive(:elm_json_opt).with(@gc).exactly(1)\r
+ r = @panel.elements\r
+ end\r
+ it 'コマ要素のjson出力オプションに景色カラーコードjson出力オプションを依頼している' do\r
+ Panel.should_receive(:elm_json_opt).with(@pc).exactly(1)\r
+ r = @panel.elements\r
+ end\r
+ end\r
+ it 'リストを返している' do\r
+ r = @panel.elements\r
+ r.is_a?(Array).should be_true\r
+ end\r
+ end\r
+ describe 'コマのjson出力に於いて' do\r
+ before do\r
+ #コマを作成しておく。\r
+ @panel = FactoryGirl.create :panel, :author_id => @author.id\r
+ @pp = FactoryGirl.create :panel_picture, :panel_id => @panel.id, :t => 1, :width => @p.width, :height => @p.height\r
+ @sb = @panel.speech_balloons.create(\r
+ FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 0)\r
+ )\r
+ @gc = @panel.ground_colors.create(\r
+ FactoryGirl.attributes_for(:ground_color, :panel_id => @panel.id, :color_id => @color.id)\r
+ )\r
+ @gp = @panel.ground_pictures.create(\r
+ FactoryGirl.attributes_for(:ground_picture, :panel_id => @panel.id, :picture_id => @p.id)\r
+ )\r
+ @pc = @panel.panel_colors.create(\r
+ FactoryGirl.attributes_for(:panel_color, :panel_id => @panel.id, :code => 0xff0000)\r
+ )\r
+ @panel.reload\r
+ end\r
+ context 'つつがなく終わるとき' do\r
+ before do\r
+ Panel.any_instance.stub(:elements).with(any_args).and_return({})\r
+ end\r
+ it 'コマ要素のjson出力を依頼している' do\r
+ Panel.any_instance.should_receive(:elements).with(any_args).exactly(1)\r
+ r = @panel.panel_elements_as_json\r
+ end\r
+ end\r
+ it 'json textを返している' do\r
+ r = JSON.parse @panel.panel_elements_as_json\r
+ r.is_a?(Hash).should be_true\r
+ end\r
+ it 'author,コマ要素を含んでいる' do\r
+ r = JSON.parse @panel.panel_elements_as_json\r
+ r.has_key?('author').should be_true\r
+ r.has_key?('elements').should be_true\r
+ #t:0\r
+ sb = r['elements'].first\r
+ sb.has_key?('classname').should be_true\r
+ sb.has_key?('balloons').should be_true\r
+ sb.has_key?('speeches').should be_true\r
+ #t:1\r
+ end\r
+ end\r
+ describe '検証値収集に於いて' do\r