Fix and enable Subfleet/Fare tests and factories

This commit is contained in:
Nabeel Shahzad
2017-12-13 11:29:14 -06:00
parent 55250b8789
commit ab75ef7cf8
14 changed files with 126 additions and 352 deletions

View File

@@ -1,121 +0,0 @@
<?php
use App\Models\Fare;
use App\Models\Subfleet;
class AircraftTest extends TestCase
{
protected $ac_svc,
$ICAO = 'B777';
public function setUp()
{
parent::setUp();
$this->addData('aircraft');
}
protected function getAircraftClass()
{
return app('App\Repositories\AircraftClassRepository')
->findByField('code', 'H')->first();
}
protected function findByICAO($icao)
{
$ac_repo = app('App\Repositories\SubfleetRepository');
return $ac_repo->findByICAO($icao);
}
protected function getFareByCode($code)
{
return Fare::where('code', $code)->first();
}
public function testSubfleetFaresNoOverride()
{
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
return true;
$fare_svc = app('App\Services\FareService');
$subfleet = Subfleet::find(1);
$fare = $this->getFareByCode('Y');
$fare_svc->setForAircraft($subfleet, $fare);
$ac_fares = $fare_svc->getForAircraft($subfleet);
$this->assertCount(1, $ac_fares);
$this->assertEquals($fare->price, $ac_fares[0]->price);
$this->assertEquals($fare->capacity, $ac_fares[0]->capacity);
#
# set an override now
#
$fare_svc->setForAircraft($subfleet, $fare, [
'price' => 50, 'capacity' => 400
]);
# look for them again
$ac_fares = $fare_svc->getForAircraft($subfleet);
$this->assertCount(1, $ac_fares);
$this->assertEquals(50, $ac_fares[0]->price);
$this->assertEquals(400, $ac_fares[0]->capacity);
# delete
$fare_svc->delFromAircraft($subfleet, $fare);
$this->assertCount(0, $fare_svc->getForAircraft($subfleet));
}
public function testSubfleetFaresOverride()
{
$this->markTestSkipped(
'This test has not been implemented yet.'
);
$fare_svc = app('App\Services\FareService');
$subfleet = Subfleet::find(1);
$fare = $this->getFareByCode('Y');
$fare_svc->setForAircraft($subfleet, $fare, [
'price' => 50, 'capacity' => 400
]);
$ac_fares = $fare_svc->getForAircraft($subfleet);
$this->assertCount(1, $ac_fares);
$this->assertEquals(50, $ac_fares[0]->price);
$this->assertEquals(400, $ac_fares[0]->capacity);
#
# update the override to a different amount and make sure it updates
#
$fare_svc->setForAircraft($subfleet, $fare, [
'price' => 150, 'capacity' => 50
]);
$ac_fares = $fare_svc->getForAircraft($subfleet);
$this->assertCount(1, $ac_fares);
$this->assertEquals(150, $ac_fares[0]->price);
$this->assertEquals(50, $ac_fares[0]->capacity);
# delete
$fare_svc->delFromAircraft($subfleet, $fare);
$this->assertCount(0, $fare_svc->getForAircraft($subfleet));
}
/**
* @expectedException Exception
*/
public function testAircraftMissingField()
{
$this->markTestSkipped(
'This test has not been implemented yet.'
);
}
}

View File

@@ -17,8 +17,6 @@ class FlightTest extends TestCase
public function addFlight()
{
$flight = factory(App\Models\Flight::class)->create();
# TODO: Add some subfleets in the setUp and assign the IDs here
$flight->subfleets()->syncWithoutDetaching([
factory(App\Models\Subfleet::class)->create()->id
]);

85
tests/SubfleetTest.php Normal file
View File

@@ -0,0 +1,85 @@
<?php
use App\Models\Fare;
use App\Models\Subfleet;
class SubfleetTest extends TestCase
{
protected $ac_svc,
$ICAO = 'B777';
public function setUp()
{
parent::setUp();
$this->addData('base');
}
public function testSubfleetFaresNoOverride()
{
$fare_svc = app('App\Services\FareService');
$subfleet = factory(App\Models\Subfleet::class)->create();
$fare = factory(App\Models\Fare::class)->create();
$fare_svc->setForSubfleet($subfleet, $fare);
$subfleet_fares = $fare_svc->getForSubfleet($subfleet);
$this->assertCount(1, $subfleet_fares);
$this->assertEquals($fare->price, $subfleet_fares->get(0)->price);
$this->assertEquals($fare->capacity, $subfleet_fares->get(0)->capacity);
#
# set an override now
#
$fare_svc->setForSubfleet($subfleet, $fare, [
'price' => 50, 'capacity' => 400
]);
# look for them again
$subfleet_fares = $fare_svc->getForSubfleet($subfleet);
$this->assertCount(1, $subfleet_fares);
$this->assertEquals(50, $subfleet_fares[0]->price);
$this->assertEquals(400, $subfleet_fares[0]->capacity);
# delete
$fare_svc->delFromAircraft($subfleet, $fare);
$this->assertCount(0, $fare_svc->getForSubfleet($subfleet));
}
public function testSubfleetFaresOverride()
{
$fare_svc = app('App\Services\FareService');
$subfleet = factory(App\Models\Subfleet::class)->create();
$fare = factory(App\Models\Fare::class)->create();
$fare_svc->setForSubfleet($subfleet, $fare, [
'price' => 50, 'capacity' => 400
]);
$ac_fares = $fare_svc->getForSubfleet($subfleet);
$this->assertCount(1, $ac_fares);
$this->assertEquals(50, $ac_fares[0]->price);
$this->assertEquals(400, $ac_fares[0]->capacity);
#
# update the override to a different amount and make sure it updates
#
$fare_svc->setForSubfleet($subfleet, $fare, [
'price' => 150, 'capacity' => 50
]);
$ac_fares = $fare_svc->getForSubfleet($subfleet);
$this->assertCount(1, $ac_fares);
$this->assertEquals(150, $ac_fares[0]->price);
$this->assertEquals(50, $ac_fares[0]->capacity);
# delete
$fare_svc->delFromAircraft($subfleet, $fare);
$this->assertCount(0, $fare_svc->getForSubfleet($subfleet));
}
}

View File

@@ -1,30 +0,0 @@
aircraft:
- id: 1
subfleet_id: 1
name: Boeing 747-400
registration: NC17
tail_number: 17
- id: 2
subfleet_id: 2
name: Boeing 777-200
registration: NC20
tail_number: 20
- id: 3
subfleet_id: 1
name: Boeing 747-400-PW
registration: PW744
tail_number: 207X
subfleets:
- id: 1
airline_id: 1
name: 747-400 Winglets
type: 744W
fuel_type: 1
fuel_capacity: 2000
- id: 2
airline_id: 1
name: 777-200 LR
type: 772-LR
fuel_type: 1
fuel_capacity: 1000

View File

@@ -1,8 +0,0 @@
airlines:
- id: 1
icao: VMS
iata: VM
name: phpvms airlines
active: 1
created_at: now
updated_at: now

View File

@@ -1,22 +0,0 @@
airports:
- id: KAUS
iata: AUS
icao: KAUS
name: Austin-Bergstrom
location: Austin, Texas, USA
lat: 30.1945278
lon: -97.6698889
- id: KJFK
iata: JFK
icao: KJFK
name: John F Kennedy
location: New York, New York, USA
lat: 40.6399257
lon: -73.7786950
- id: EGLL
iata: LHR
icao: EGLL
name: London Heathrow
location: London, England
lat: 51.4775
lon: -0.4614

View File

@@ -44,47 +44,3 @@ ranks:
auto_approve_acars: 1
auto_approve_manual: 1
auto_promote: 0
fares:
- id: 1
code: Y
name: Economy
price: 100
capacity: 200
- id: 2
code: B
name: Business
price: 500
capacity: 10
- id: 3
code: F
name: First-Class
price: 800
capacity: 5
# add a few mods to aircraft and fares
subfleet_fare:
# Fare classes on the 747
- subfleet_id: 1
fare_id: 1
price: 200
capacity: 400
- subfleet_id: 1
fare_id: 2
capacity: 20
- subfleet_id: 1
fare_id: 3
price: 1000
capacity: 10
# Fare classes on the 777
- subfleet_id: 2
fare_id: 1
- subfleet_id: 2
fare_id: 3
capacity: 10
subfleet_flight:
- subfleet_id: 1
flight_id: 1

View File

@@ -1,81 +0,0 @@
<?php
/**
*/
namespace Tests\Traits;
use App\Models\Flight;
use Faker\Factory;
trait FixtureDataLoader {
public static $airports = ['KAUS', 'KJFK', 'KSFO', 'OPKC', 'OMDB', 'KLGA'];
public function apiHeaders()
{
return [
'Authorization' => 'testadminapikey'
];
}
/**
* Create new ID of integer type
* @return integer
*/
protected function create_id_int()
{
return random_int(1, 10000);
}
/**
* Create a new ID
* @return mixed
*/
protected function create_id_hash()
{
$hashids = new Hashids('', 12);
$mt = str_replace('.', '', microtime(true));
$id = $hashids->encode($mt);
return $id;
}
/**
* Dynamically apply options to a model
* @param $model
* @param array $options
* @return mixed
*/
protected function apply_options($model, array $options)
{
foreach ($options as $key => $value) {
$model->{$key} = $value;
}
$model->save();
return $model;
}
/**
* Add a flight
* @param array $options
* @return mixed
*/
public function addFlight(array $options=[])
{
$faker = Factory::create();
$options = array_merge([
'id' => $this->create_id_hash(),
'flight_number' => $faker->numberBetween(),
'airline_id' => 1,
'dpt_airport_id' => $faker->randomElement(self::$airports),
'arr_airport_id' => $faker->randomElement(self::$airports),
], $options);
$flight = new Flight();
$flight = $this->apply_options($flight, $options);
$flight->subfleets()->syncWithoutDetaching([1]);
return $flight;
}
}