diff --git a/t/210_OreStorage.t b/t/210_OreStorage.t index 4c367cca..e9009b22 100644 --- a/t/210_OreStorage.t +++ b/t/210_OreStorage.t @@ -6,7 +6,10 @@ use 5.010; use TestHelper; +TestHelper->clear_all_test_empires; + my $tester = TestHelper->new->generate_test_empire; + my $db = Lacuna->db; my $empire = $tester->empire; my $session_id = $tester->session->id; @@ -20,5 +23,5 @@ $result = $tester->post('orestorage', 'view', [$session_id, $building_id]); ok(exists $result->{result}{ore_stored}{bauxite}, "got ore storage"); END { - $tester->cleanup; + TestHelper->clear_all_test_empires; } diff --git a/t/220_Parliament.t b/t/220_Parliament.t index f6cbb4ee..3fc8c909 100644 --- a/t/220_Parliament.t +++ b/t/220_Parliament.t @@ -7,14 +7,16 @@ use DateTime; use Lacuna::Constants qw(ORE_TYPES); use TestHelper; +TestHelper->clear_all_test_empires; + my $tester = TestHelper->new->generate_test_empire->build_infrastructure; my $session_id = $tester->session->id; my $empire = $tester->empire; my $home = $empire->home_planet; -my $friend = TestHelper->new(empire_name => 'Friend')->generate_test_empire->build_infrastructure; +my $friend = TestHelper->new(empire_name => 'TLE TEST Friend 1')->generate_test_empire->build_infrastructure; -my $friend2 = TestHelper->new(empire_name => 'Friend')->generate_test_empire->build_infrastructure; +my $friend2 = TestHelper->new(empire_name => 'TLE TEST Friend 2')->generate_test_empire->build_infrastructure; $friend2->empire->is_isolationist(0); $friend2->empire->update; @@ -220,8 +222,6 @@ is($props[0]->{name}, 'Abandon Station', 'abandon station proposed'); $result = $tester->post('parliament', 'cast_vote', [$session_id, $par->id, $props[0]->{id}, 1]); is($result->{result}{proposition}{my_vote}, 1, 'got my vote'); -sleep 5; - $result = $tester->post('inbox','view_inbox', [$session_id]); my @messages = sort { $b->{id} <=> $a->{id} } @{ $result->{result}{messages} }; @@ -229,7 +229,5 @@ ok($messages[0]->{subject} =~ /^Pass: Abandon Station/, 'Pass email received'); END { $station->sanitize; - $friend2->cleanup; - $friend->cleanup; - $tester->cleanup; + TestHelper->clear_all_test_empires; } diff --git a/t/230_PlanetaryCommand.t b/t/230_PlanetaryCommand.t index 775f7504..9dc70939 100644 --- a/t/230_PlanetaryCommand.t +++ b/t/230_PlanetaryCommand.t @@ -5,6 +5,8 @@ use Data::Dumper; use 5.010; use TestHelper; +TestHelper->clear_all_test_empires; + my $tester = TestHelper->new->generate_test_empire; my $session_id = $tester->session->id; my $empire = $tester->empire; @@ -21,5 +23,5 @@ is(ref $result->{result}{plans}, 'ARRAY', 'can view plans'); END { - $tester->cleanup; + TestHelper->clear_all_test_empires; } diff --git a/t/240_Security.pm b/t/240_Security.pm index 23acdbf4..f370ffb0 100644 --- a/t/240_Security.pm +++ b/t/240_Security.pm @@ -6,15 +6,15 @@ use 5.010; use DateTime; use TestHelper; +TestHelper->clear_all_test_empires; + my $tester = TestHelper->new->generate_test_empire; my $session_id = $tester->session->id; my $empire = $tester->empire; my $home = $empire->home_planet; - my $result; - my $uni = Lacuna->db->resultset('Lacuna::DB::Result::Building')->new({ x => 0, y => -1, @@ -74,5 +74,5 @@ is(scalar(@{$result->{result}{prisoners}}), 1, "view prisoners"); END { - $tester->cleanup; + TestHelper->clear_all_test_empires; } diff --git a/t/250_Shipyard.t b/t/250_Shipyard.t index 136abcd5..858bd07c 100644 --- a/t/250_Shipyard.t +++ b/t/250_Shipyard.t @@ -6,13 +6,14 @@ use 5.010; use DateTime; use TestHelper; +TestHelper->clear_all_test_empires; + my $tester = TestHelper->new->generate_test_empire->build_infrastructure; my $session_id = $tester->session->id; my $empire = $tester->empire; my $home = $empire->home_planet; my $command = $home->command; - my $result; $result = $tester->post('spaceport', 'build', [$session_id, $home->id, 0, 1]); @@ -42,5 +43,5 @@ foreach my $resource (@resources) { } END { - $tester->cleanup; + TestHelper->clear_all_test_empires; } diff --git a/t/260_SpaceStationLab.t b/t/260_SpaceStationLab.t index d3453f71..30813876 100644 --- a/t/260_SpaceStationLab.t +++ b/t/260_SpaceStationLab.t @@ -7,6 +7,8 @@ use DateTime; use Lacuna::Constants qw(ORE_TYPES); use TestHelper; +TestHelper->clear_all_test_empires; + my $tester = TestHelper->new->generate_test_empire->build_infrastructure; my $session_id = $tester->session->id; my $empire = $tester->empire; @@ -72,5 +74,5 @@ ok(!exists $result->{result}{make_plan}{making}, 'subsidize making plan'); END { - $tester->cleanup; + TestHelper->clear_all_test_empires; } diff --git a/t/270_Trade.t b/t/270_Trade.t index 4d37147c..8a3bbc07 100644 --- a/t/270_Trade.t +++ b/t/270_Trade.t @@ -6,6 +6,8 @@ use 5.010; use DateTime; use TestHelper; +TestHelper->clear_all_test_empires; + my $tester = TestHelper->new->generate_test_empire->build_infrastructure; my $session_id = $tester->session->id; my $empire = $tester->empire; @@ -63,5 +65,5 @@ is(scalar @{$result->{result}{trades}}, 0, 'can call view_my_market'); END { - $tester->cleanup; + TestHelper->clear_all_test_empires; } diff --git a/t/280_Transporter.t b/t/280_Transporter.t index fe909ed7..ee275e51 100644 --- a/t/280_Transporter.t +++ b/t/280_Transporter.t @@ -6,6 +6,8 @@ use 5.010; use DateTime; use TestHelper; +TestHelper->clear_all_test_empires; + my $tester = TestHelper->new->generate_test_empire->build_infrastructure; my $session_id = $tester->session->id; my $empire = $tester->empire; @@ -55,5 +57,5 @@ is(scalar @{$result->{result}{trades}}, 0, 'can call view_my_market'); END { - $tester->cleanup; + TestHelper->clear_all_test_empires; } diff --git a/t/290_University.t b/t/290_University.t index f6109ef9..d6716aae 100644 --- a/t/290_University.t +++ b/t/290_University.t @@ -5,6 +5,8 @@ use Data::Dumper; use 5.010; use TestHelper; +TestHelper->clear_all_test_empires; + my $tester = TestHelper->new->generate_test_empire->build_infrastructure; my $db = Lacuna->db; my $session_id = $tester->session->id; @@ -41,5 +43,5 @@ for my $level (7..10) { } END { - $tester->cleanup; + TestHelper->clear_all_test_empires; } diff --git a/t/300_WasteRecycling.t b/t/300_WasteRecycling.t index 91b286b6..b64d7473 100644 --- a/t/300_WasteRecycling.t +++ b/t/300_WasteRecycling.t @@ -5,6 +5,8 @@ use Data::Dumper; use 5.010; use TestHelper; +TestHelper->clear_all_test_empires; + my $tester = TestHelper->new->generate_test_empire->build_infrastructure; my $db = Lacuna->db; my $empire = $tester->empire; @@ -35,5 +37,5 @@ $building->finish_work; cmp_ok($building->body->water_stored, '>=', $water_stored + 5, "resources increased"); END { - $tester->cleanup; + TestHelper->clear_all_test_empires; } diff --git a/t/320_AlliedDefense.t b/t/320_AlliedDefense.t index fd37b99e..8a649156 100644 --- a/t/320_AlliedDefense.t +++ b/t/320_AlliedDefense.t @@ -5,11 +5,11 @@ use DateTime; use Math::Complex; # used for asteroid and planet selection use TestHelper; -TestHelper->new->cleanup; +Helper->clear_all_test_empires; my @testers = ( TestHelper->new->generate_test_empire->build_infrastructure, - TestHelper->new(empire_name => 'Enemy')->generate_test_empire->build_infrastructure, + TestHelper->new(empire_name => 'TLE Test Enemy')->generate_test_empire->build_infrastructure, ); my @asteroids = Lacuna->db->resultset('Lacuna::DB::Result::Map::Body')->search( @@ -334,8 +334,8 @@ for my $i ( 0 .. 1 ) { for my $ship ( @{ $result->{result}{ships} } ) { $ships{$ship->{type}}++; } - is( $result->{result}{status}{empire}{most_recent_message}{subject}, "Target Neutralized", 'Target neutralazed' ); - is( $ships{sweeper}, 2, 'Two sweepers left' ); + is( $result->{result}{status}{empire}{most_recent_message}{subject}, "Ship Shot Down", 'Ship shot down' ); + is( $ships{sweeper}, 1, 'One sweeper left' ); # Send a fighter to enemy asteroid my $fighter3 = Lacuna->db->resultset('Lacuna::DB::Result::Ships')->search({body_id => $tester{home}->id, type=>'fighter', task=>'Docked'},{rows=>1})->single; @@ -382,11 +382,9 @@ for my $i ( 0 .. 1 ) { my $stake = Lacuna->db->resultset('Lacuna::DB::Result::Ships')->search({body_id => $tester{home}->id, type=>'stake'},{rows=>1})->single; diag "Sending ship ", $stake->id, " type ", $stake->type, " to ", $planet->{x}, ",", $planet->{y}; $result = $tester->post('spaceport', 'send_ship', [$tester{session_id}, $stake->id, {x=>$planet->{x},y=>$planet->{y}}]); - diag "Stake arrives ", $result->{result}{ship}{date_arrives}; - ok($result->{result}{ship}{date_arrives}, "stake sent"); - $stake = Lacuna->db->resultset('Lacuna::DB::Result::Ships')->search({id=>$stake->id},{rows=>1})->single; # pull the latest data on this ship - $stake->arrive; - + # Cannot send a stake to an inhabited planet + is($result->{error}{code}, 1013, "Cannot send stake to inhabited planet"); + $result = $tester->post('spaceport', 'view', [$tester{session_id}, $tester->{spaceport_id}]); is( $result->{result}{status}{empire}{most_recent_message}{subject}, "Ship Shot Down", 'Stake shot down' ); @@ -452,6 +450,5 @@ diag explain $result->{result}{battle_log}; } END { -# $testers[1]->cleanup; -# $testers[0]->cleanup; + TestHelper->clear_all_test_empires; } diff --git a/t/330_JunkBuildings.t b/t/330_JunkBuildings.t index df048c17..236fc356 100644 --- a/t/330_JunkBuildings.t +++ b/t/330_JunkBuildings.t @@ -5,6 +5,8 @@ use Data::Dumper; use 5.010; use TestHelper; +TestHelper->clear_all_test_empires; + my $tester = TestHelper->new->generate_test_empire->build_infrastructure; my $session_id = $tester->session->id; diag("session id: $session_id"); @@ -75,6 +77,6 @@ END { for my $build ( @builds ) { $build->{building}->delete; } - $tester->cleanup; + TestHelper->clear_all_test_empires; } diff --git a/t/340_Observatory.t b/t/340_Observatory.t index 1ffe9f9b..d1a09325 100644 --- a/t/340_Observatory.t +++ b/t/340_Observatory.t @@ -6,27 +6,31 @@ use 5.010; use DateTime; use TestHelper; +TestHelper->clear_all_test_empires; + my $tester = TestHelper->new->generate_test_empire->build_infrastructure; + my $session_id = $tester->session->id; my $empire = $tester->empire; my $home = $empire->home_planet; my $result; -$home->ore_hour(50000); -$home->water_hour(50000); -$home->energy_hour(50000); -$home->algae_production_hour(50000); -$home->ore_capacity(50000); -$home->energy_capacity(50000); -$home->food_capacity(50000); -$home->water_capacity(50000); -$home->bauxite_stored(50000); -$home->algae_stored(50000); -$home->energy_stored(50000); -$home->water_stored(50000); +$home->ore_hour(500000); +$home->water_hour(500000); +$home->energy_hour(500000); +$home->algae_production_hour(500000); +$home->ore_capacity(500000); +$home->energy_capacity(500000); +$home->food_capacity(500000); +$home->water_capacity(500000); +$home->bauxite_stored(500000); +$home->algae_stored(500000); +$home->energy_stored(500000); +$home->water_stored(500000); $home->needs_recalc(0); $home->update; +$home->tick; $result = $tester->post('spaceport', 'build', [$session_id, $home->id, 0, 1]); my $spaceport = $tester->get_building($result->{result}{building}{id}); @@ -70,5 +74,5 @@ is($result->{result}{docked_ships}{probe}, 1, "we have one probe left"); END { - $tester->cleanup; + TestEmpire->clear_all_test_empires; } diff --git a/t/350_Park.t b/t/350_Park.t index 5035c1bf..d284d855 100644 --- a/t/350_Park.t +++ b/t/350_Park.t @@ -5,6 +5,8 @@ use Data::Dumper; use 5.010; use TestHelper; +TestHelper->clear_all_test_empires; + my $tester = TestHelper->new->generate_test_empire; my $session_id = $tester->session->id; my $empire = $tester->empire; @@ -59,8 +61,6 @@ $building = $db->resultset('Lacuna::DB::Result::Building')->find($result->{resul $building->finish_work; cmp_ok($result->{result}{status}{planets}[0]{happiness}, '<', $building->body->happiness, "happiness is increased"); - - END { - $tester->cleanup; + TestHelper->clear_all_test_empires; } diff --git a/t/360_Scows.t b/t/360_Scows.t index e4d95b5b..7d71de0c 100644 --- a/t/360_Scows.t +++ b/t/360_Scows.t @@ -6,6 +6,8 @@ use 5.010; use DateTime; use TestHelper; +TestHelper->clear_all_test_empires; + my $tester = TestHelper->new->generate_test_empire; my $session_id = $tester->session->id; my $empire = $tester->empire; @@ -80,7 +82,7 @@ Lacuna->db->resultset('Lacuna::DB::Result::Ships')->search({shipyard_id=>$shipya $result = $tester->post('spaceport', 'view', [$session_id, $spaceport->id]); -my $enemy = TestHelper->new(empire_name => 'Enemy')->generate_test_empire->build_infrastructure; +my $enemy = TestHelper->new(empire_name => 'TLE Test Enemy')->generate_test_empire->build_infrastructure; $enemy->empire->is_isolationist(0); $enemy->empire->update; @@ -140,6 +142,5 @@ is(scalar @{$result->{result}{fleet}}, 2, 'fleet sent'); is($scow4->body->waste_stored, 3983, 'correct waste removed'); END { - $enemy->cleanup; - $tester->cleanup; + TestHelper->clear_all_test_empires; } diff --git a/t/380_Tutorial.t b/t/380_Tutorial.t index 4cb8146f..d3f13a50 100644 --- a/t/380_Tutorial.t +++ b/t/380_Tutorial.t @@ -6,6 +6,8 @@ use DateTime; use 5.010; use TestHelper; +TestHelper->clear_all_test_empires; + my $tester = TestHelper->new->generate_test_empire; my $session_id = $tester->session->id; @@ -262,6 +264,6 @@ is($tutorial->finish, 1, 'turing'); END { - $tester->cleanup; + TestHelper->clear_all_test_empires; } diff --git a/t/390_Distribution.t b/t/390_Distribution.t index 21206124..49b2a45a 100644 --- a/t/390_Distribution.t +++ b/t/390_Distribution.t @@ -5,6 +5,8 @@ use Data::Dumper; use 5.010; use TestHelper; +TestHelper->clear_all_test_empires; + my $tester = TestHelper->new->generate_test_empire->build_infrastructure; my $db = Lacuna->db; my $empire = $tester->empire; @@ -53,5 +55,5 @@ cmp_ok($resources_stored, '>', 20000, "resources added to planet"); cmp_ok($resources_stored, '<', 20500, "not too many resources added to planet"); END { - $tester->cleanup; + TestHelper->clear_all_test_empires; } diff --git a/t/TestHelper.pm b/t/TestHelper.pm index 76e5e1b5..45948909 100644 --- a/t/TestHelper.pm +++ b/t/TestHelper.pm @@ -36,6 +36,16 @@ has session => ( is => 'rw', ); +has x => ( + is => 'rw', + default => -5, +); + +has y => ( + is => 'rw', + default => -5, +); + sub clear_all_test_empires { my ($class, $name) = @_; @@ -83,23 +93,45 @@ sub get_building { return $building; } +sub find_empty_plot { + my ($self) = @_; + + my $home = $self->empire->home_planet; + + # Ensure we only build on an empty plot + EXISTING_BUILDING: + while (1) { + my $building = Lacuna->db->resultset('Lacuna::DB::Result::Building')->search({ + x => $self->x, + y => $self->y, + body_id => $home->id, + }); + + last EXISTING_BUILDING if $building == 0; + $self->x($self->x + 1); + if ($self->x == 6) { + $self->x(-5); + $self->y($self->y + 1); + } + } +} + + sub build_infrastructure { my $self = shift; my $home = $self->empire->home_planet; - my $x = -5; - my $y = -5; foreach my $type ('Lacuna::DB::Result::Building::Food::Algae','Lacuna::DB::Result::Building::Energy::Hydrocarbon', 'Lacuna::DB::Result::Building::Water::Purification','Lacuna::DB::Result::Building::Ore::Mine') { + + # Ensure we only build on an empty plot + $self->find_empty_plot; + my $building = Lacuna->db->resultset('Lacuna::DB::Result::Building')->new({ - x => $x, - y => $y, + x => $self->x, + y => $self->y, class => $type, level => 20, }); - if (++$x == 6) { - $x = -5; - $y++; - } $home->build_building($building); $building->finish_upgrade; } @@ -108,16 +140,14 @@ sub build_infrastructure { foreach my $type ('Lacuna::DB::Result::Building::Energy::Reserve', 'Lacuna::DB::Result::Building::Food::Reserve','Lacuna::DB::Result::Building::Ore::Storage', 'Lacuna::DB::Result::Building::Water::Storage') { + $self->find_empty_plot; + my $building = Lacuna->db->resultset('Lacuna::DB::Result::Building')->new({ - x => $x, - y => $y, + x => $self->x, + y => $self->y, class => $type, level => 20, }); - if (++$x == 6) { - $x = -5; - $y++; - } $home->build_building($building); $building->finish_upgrade; }