require 'spec_helper' describe MashTournamentBuilder do let(ENV['MOCK'].nil? ? :subject : :real_subject) do MashTournamentBuilder.new( MashTournament.make(:requester => Requester.make), MashTournament, MashTournamentRound, Map, Mash ) end let(ENV['MOCK'].nil? ? :mock_subject : :subject) do @tournament = mock(Object) @tournament_model = mock(Object) @round_model = mock(Object) @map_model = mock(Object) @mash_model = mock(Object) MashTournamentBuilder.new( @tournament, @tournament_model, @round_model, @map_model, @mash_model ) end before(:all) do subject.map_model.destroy_all 40.times do subject.map_model.make.save end end context 'creating rounds' do it 'should reject invalid numbers of contenders' do [11, 24, 40].each do |n| expect do subject.create_rounds_for_contenders(n) end.to raise_error end end [[8, 3], [16, 4], [32, 5]].each do |n_contenders,n_rounds| context "for #{n_contenders} total contenders" do it "should create #{n_rounds} rounds" do subject.create_rounds_for_contenders(n_contenders) subject.tournament.total_rounds.should == n_rounds end end end end context 'filling in rounds' do before(:each) do subject.tournament.id.should_not be_nil subject.create_rounds_for_contenders(8) end it 'should fill in every map for every mash in a given round' do subject.fill_in_next_round subject.tournament.round(1).mashes.each do |mash| mash.map_a.should_not be_nil mash.map_b.should_not be_nil end end end end