Fix and enable Subfleet/Fare tests and factories
This commit is contained in:
@@ -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.'
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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
85
tests/SubfleetTest.php
Normal 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));
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -1,8 +0,0 @@
|
||||
airlines:
|
||||
- id: 1
|
||||
icao: VMS
|
||||
iata: VM
|
||||
name: phpvms airlines
|
||||
active: 1
|
||||
created_at: now
|
||||
updated_at: now
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user