phpvms/tests/AircraftTest.php

139 lines
3.7 KiB
PHP
Raw Normal View History

2017-06-10 03:47:02 +08:00
<?php
class AircraftTest extends TestCase
{
protected $ac_svc,
$ICAO = 'B777';
2017-06-10 03:47:02 +08:00
public function setUp()
{
2017-06-10 03:47:02 +08:00
parent::setUp();
2017-07-05 02:09:44 +08:00
$this->addData('aircraft');
2017-06-10 14:50:00 +08:00
}
2017-06-11 07:41:35 +08:00
protected function getAircraftClass()
{
return app('App\Repositories\AircraftClassRepository')
->findByField('code', 'H')->first();
}
2017-06-10 14:50:00 +08:00
2017-06-11 07:41:35 +08:00
protected function findByICAO($icao)
{
$ac_repo = app('App\Repositories\SubfleetRepository');
return $ac_repo->findByICAO($icao);
2017-06-10 03:47:02 +08:00
}
2017-06-11 07:41:35 +08:00
protected function getFareByCode($code)
2017-06-10 03:47:02 +08:00
{
return app('App\Repositories\FareRepository')->findByCode($code);
}
/**
* Check the association of the aircraft class to an aircraft
* Mostly to experiment with the ORM type stuff. This isn't
* where most of the testing, etc is required.
*/
2017-06-11 07:41:35 +08:00
protected function addAircraft()
{
$mdl = new App\Models\Aircraft;
$mdl->icao = $this->ICAO;
$mdl->name = 'Boeing 777';
$mdl->save();
2017-06-11 07:41:35 +08:00
return $this->findByICAO($this->ICAO);
}
2017-07-05 02:09:44 +08:00
public function XtestAircraftFaresNoOverride()
{
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
2017-07-04 14:05:23 +08:00
return true;
$fare_svc = app('App\Services\FareService');
2017-06-11 07:41:35 +08:00
$aircraft = $this->addAircraft();
$fare = $this->getFareByCode('Y');
2017-06-11 07:41:35 +08:00
$fare_svc->setForAircraft($aircraft, $fare);
$ac_fares = $fare_svc->getForAircraft($aircraft);
$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
#
2017-06-11 07:41:35 +08:00
$fare_svc->setForAircraft($aircraft, $fare, [
'price' => 50, 'capacity' => 400
]);
# look for them again
2017-06-11 07:41:35 +08:00
$ac_fares = $fare_svc->getForAircraft($aircraft);
$this->assertCount(1, $ac_fares);
$this->assertEquals(50, $ac_fares[0]->price);
$this->assertEquals(400, $ac_fares[0]->capacity);
# delete
2017-06-11 07:41:35 +08:00
$fare_svc->delFromAircraft($aircraft, $fare);
$this->assertCount(0, $fare_svc->getForAircraft($aircraft));
}
2017-07-05 02:09:44 +08:00
public function XtestAircraftFaresOverride()
{
$this->markTestSkipped(
'This test has not been implemented yet.'
);
$fare_svc = app('App\Services\FareService');
2017-06-11 07:41:35 +08:00
$aircraft = $this->addAircraft();
$fare = $this->getFareByCode('Y');
2017-06-11 07:41:35 +08:00
$fare_svc->setForAircraft($aircraft, $fare, [
'price' => 50, 'capacity' => 400
]);
2017-06-11 07:41:35 +08:00
$ac_fares = $fare_svc->getForAircraft($aircraft);
$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
#
2017-06-11 07:41:35 +08:00
$fare_svc->setForAircraft($aircraft, $fare, [
'price' => 150, 'capacity' => 50
]);
2017-06-11 07:41:35 +08:00
$ac_fares = $fare_svc->getForAircraft($aircraft);
$this->assertCount(1, $ac_fares);
$this->assertEquals(150, $ac_fares[0]->price);
$this->assertEquals(50, $ac_fares[0]->capacity);
2017-06-10 14:50:00 +08:00
# delete
2017-06-11 07:41:35 +08:00
$fare_svc->delFromAircraft($aircraft, $fare);
$this->assertCount(0, $fare_svc->getForAircraft($aircraft));
}
/**
* @expectedException Exception
*/
2017-07-05 02:09:44 +08:00
public function XtestAircraftMissingField()
{
$this->markTestSkipped(
'This test has not been implemented yet.'
);
2017-07-04 14:05:23 +08:00
return true;
# missing the name field
$svc = app('App\Services\AircraftService');
$svc->create(['icao' => $this->ICAO]);
2017-06-10 03:47:02 +08:00
}
}