MOE3: 同等戦力の維持ユニットへの攻撃

spec/models/main_phase_spec.rb

マニュアルの Diagram11、French F Gol-TynFrench F Wes S F Gol-TynItalian F Tyn-HoldsItalian F Rom S F Tyn-Holds を実装する。

f:id:asagix:20130919100325p:plain:w200

繰り返しになるが、MOE3 の地名は jDip 準拠なので "Gol" は "Lyo" となる。

それと、現行の MOE2 もそうだが、支援命令は対象が移動かそれ以外かのみを区別する都合により、上の例であれば F Rom S F Tyn-Holds は実際の画面では F Rom S F Tyn と表示される予定。

では、テストを書こう。

describe MainPhase do
  describe "#resolve_orders" do
    let(:phase) { MainPhase.create }
    let(:resolved_orders) { phase.resolve_orders }

    #(略)

    shared_context "Diagram11 同等戦力の維持ユニットへの攻撃", diagram: 11 do
      let(:fleet_lyo) { FactoryGirl.create(:fleet, :f, :lyo, phase: phase) }
      let(:fleet_wes) { FactoryGirl.create(:fleet, :f, :wes, phase: phase) }
      let(:fleet_tyn) { FactoryGirl.create(:fleet, :i, :tyn, phase: phase) }
      let(:fleet_rom) { FactoryGirl.create(:fleet, :i, :rom, phase: phase) }

      let(:prov_tyn) { fleet_tyn.province }

      let!(:move_lyo_tyn) { FactoryGirl.create(:move_order, unit: fleet_lyo, destination: prov_tyn) }
      let!(:supp_wes_lyo) { FactoryGirl.create(:support_order, unit: fleet_wes, target: move_lyo_tyn) }
      let!(:hold_tyn) { FactoryGirl.create(:hold_order, unit: fleet_tyn) }
      let!(:supp_rom_tyn) { FactoryGirl.create(:support_order, unit: fleet_rom, target: hold_tyn) }
    end

    context "Diagram11", diagram: 11 do
      subject { resolved_orders }
      example { expect(subject.find(move_lyo_tyn).status).to eq OrderStatus::FAILURE}
      example { expect(subject.find(supp_wes_lyo).status).to eq OrderStatus::SATISFIED }
      example { expect(subject.find(hold_tyn).status).to eq OrderStatus::SUCCESS}
      example { expect(subject.find(supp_rom_tyn).status).to eq OrderStatus::SATISFIED }
    end
  end
end

問題なく成功。