Check for airline being active; fix tests for L7 #718

This commit is contained in:
Nabeel Shahzad
2020-05-23 11:43:29 -04:00
parent 71c09aaeb1
commit c46fc9171c
36 changed files with 954 additions and 627 deletions

View File

@@ -1,9 +1,19 @@
<?php
namespace Tests;
use App\Models\Airline;
use App\Models\Airport;
use App\Models\Enums\ExpenseType;
use App\Models\Enums\FlightType;
use App\Models\Enums\PirepSource;
use App\Models\Expense;
use App\Models\Fare;
use App\Models\Flight;
use App\Models\Journal;
use App\Models\Pirep;
use App\Models\Subfleet;
use App\Models\User;
use App\Repositories\ExpenseRepository;
use App\Repositories\JournalRepository;
use App\Services\FareService;
@@ -12,6 +22,7 @@ use App\Services\FleetService;
use App\Services\PirepService;
use App\Support\Math;
use App\Support\Money;
use Exception;
class FinanceTest extends TestCase
{
@@ -60,27 +71,29 @@ class FinanceTest extends TestCase
$this->fleetSvc->addSubfleetToRank($subfleet['subfleet'], $rank);
$dpt_apt = factory(App\Models\Airport::class)->create([
$dpt_apt = factory(Airport::class)->create([
'ground_handling_cost' => 10,
'fuel_jeta_cost' => 10,
]);
$arr_apt = factory(App\Models\Airport::class)->create([
$arr_apt = factory(Airport::class)->create([
'ground_handling_cost' => 10,
'fuel_jeta_cost' => 10,
]);
$user = factory(App\Models\User::class)->create([
/** @var \App\Models\User $user */
$user = factory(User::class)->create([
'rank_id' => $rank->id,
]);
$flight = factory(App\Models\Flight::class)->create([
/** @var \App\Models\Flight $flight */
$flight = factory(Flight::class)->create([
'airline_id' => $user->airline_id,
'dpt_airport_id' => $dpt_apt->icao,
'arr_airport_id' => $arr_apt->icao,
]);
$pirep = factory(App\Models\Pirep::class)->create([
$pirep = factory(Pirep::class)->create([
'flight_number' => $flight->flight_number,
'flight_type' => FlightType::SCHED_PAX,
'route_code' => $flight->route_code,
@@ -101,7 +114,7 @@ class FinanceTest extends TestCase
* Add fares to the subfleet, and then add the fares
* to the PIREP when it's saved, and set the capacity
*/
$fares = factory(App\Models\Fare::class, 3)->create([
$fares = factory(Fare::class, 3)->create([
'price' => 100,
'cost' => 50,
'capacity' => 10,
@@ -112,13 +125,13 @@ class FinanceTest extends TestCase
}
// Add an expense
factory(App\Models\Expense::class)->create([
factory(Expense::class)->create([
'airline_id' => null,
'amount' => 100,
]);
// Add a subfleet expense
factory(App\Models\Expense::class)->create([
factory(Expense::class)->create([
'ref_model' => Subfleet::class,
'ref_model_id' => $subfleet['subfleet']->id,
'amount' => 200,
@@ -131,8 +144,8 @@ class FinanceTest extends TestCase
public function testFlightFaresNoOverride()
{
$flight = factory(App\Models\Flight::class)->create();
$fare = factory(App\Models\Fare::class)->create();
$flight = factory(Flight::class)->create();
$fare = factory(Fare::class)->create();
$this->fareSvc->setForFlight($flight, $fare);
$subfleet_fares = $this->fareSvc->getForFlight($flight);
@@ -165,8 +178,8 @@ class FinanceTest extends TestCase
*/
public function testFlightFareOverrideAsPercent()
{
$flight = factory(App\Models\Flight::class)->create();
$fare = factory(App\Models\Fare::class)->create();
$flight = factory(Flight::class)->create();
$fare = factory(Fare::class)->create();
$percent_incr = '20%';
$percent_decr = '-20%';
@@ -192,8 +205,8 @@ class FinanceTest extends TestCase
public function testSubfleetFaresNoOverride()
{
$subfleet = factory(App\Models\Subfleet::class)->create();
$fare = factory(App\Models\Fare::class)->create();
$subfleet = factory(Subfleet::class)->create();
$fare = factory(Fare::class)->create();
$this->fareSvc->setForSubfleet($subfleet, $fare);
$subfleet_fares = $this->fareSvc->getForSubfleet($subfleet);
@@ -223,8 +236,8 @@ class FinanceTest extends TestCase
public function testSubfleetFaresOverride()
{
$subfleet = factory(App\Models\Subfleet::class)->create();
$fare = factory(App\Models\Fare::class)->create();
$subfleet = factory(Subfleet::class)->create();
$fare = factory(Fare::class)->create();
$this->fareSvc->setForSubfleet($subfleet, $fare, [
'price' => 50, 'capacity' => 400,
@@ -260,8 +273,8 @@ class FinanceTest extends TestCase
*/
public function testSubfleetFareOverrideAsPercent()
{
$subfleet = factory(App\Models\Subfleet::class)->create();
$fare = factory(App\Models\Fare::class)->create();
$subfleet = factory(Subfleet::class)->create();
$fare = factory(Fare::class)->create();
$percent_incr = '20%';
$percent_decr = '-20%';
@@ -291,9 +304,9 @@ class FinanceTest extends TestCase
*/
public function testGetFaresWithOverrides()
{
$flight = factory(App\Models\Flight::class)->create();
$subfleet = factory(App\Models\Subfleet::class)->create();
[$fare1, $fare2, $fare3, $fare4] = factory(App\Models\Fare::class, 4)->create();
$flight = factory(Flight::class)->create();
$subfleet = factory(Subfleet::class)->create();
[$fare1, $fare2, $fare3, $fare4] = factory(Fare::class, 4)->create();
// add to the subfleet, and just override one of them
$this->fareSvc->setForSubfleet($subfleet, $fare1);
@@ -345,8 +358,8 @@ class FinanceTest extends TestCase
public function testGetFaresNoFlightOverrides()
{
$subfleet = factory(App\Models\Subfleet::class)->create();
[$fare1, $fare2, $fare3] = factory(App\Models\Fare::class, 3)->create();
$subfleet = factory(Subfleet::class)->create();
[$fare1, $fare2, $fare3] = factory(Fare::class, 3)->create();
// add to the subfleet, and just override one of them
$this->fareSvc->setForSubfleet($subfleet, $fare1);
@@ -393,11 +406,11 @@ class FinanceTest extends TestCase
$rank = $this->createRank(10, [$subfleet['subfleet']->id]);
$this->fleetSvc->addSubfleetToRank($subfleet['subfleet'], $rank);
$this->user = factory(App\Models\User::class)->create([
$this->user = factory(User::class)->create([
'rank_id' => $rank->id,
]);
$pirep = factory(App\Models\Pirep::class)->create([
$pirep = factory(Pirep::class)->create([
'user_id' => $this->user->id,
'aircraft_id' => $subfleet['aircraft']->random(),
'source' => PirepSource::ACARS,
@@ -420,11 +433,11 @@ class FinanceTest extends TestCase
'acars_pay' => $acars_pay_rate,
]);
$this->user = factory(App\Models\User::class)->create([
$this->user = factory(User::class)->create([
'rank_id' => $rank->id,
]);
$pirep_acars = factory(App\Models\Pirep::class)->create([
$pirep_acars = factory(Pirep::class)->create([
'user_id' => $this->user->id,
'aircraft_id' => $subfleet['aircraft']->random(),
'source' => PirepSource::ACARS,
@@ -444,7 +457,7 @@ class FinanceTest extends TestCase
'manual_pay' => $manual_pay_rate,
]);
$pirep_manual = factory(App\Models\Pirep::class)->create([
$pirep_manual = factory(Pirep::class)->create([
'user_id' => $this->user->id,
'aircraft_id' => $subfleet['aircraft']->random(),
'source' => PirepSource::MANUAL,
@@ -471,11 +484,11 @@ class FinanceTest extends TestCase
'acars_pay' => $acars_pay_rate,
]);
$this->user = factory(App\Models\User::class)->create([
$this->user = factory(User::class)->create([
'rank_id' => $rank->id,
]);
$pirep_acars = factory(App\Models\Pirep::class)->create([
$pirep_acars = factory(Pirep::class)->create([
'user_id' => $this->user->id,
'aircraft_id' => $subfleet['aircraft']->random(),
'source' => PirepSource::ACARS,
@@ -485,7 +498,7 @@ class FinanceTest extends TestCase
$payment = $this->financeSvc->getPilotPay($pirep_acars);
$this->assertEquals(100, $payment->getValue());
$pirep_acars = factory(App\Models\Pirep::class)->create([
$pirep_acars = factory(Pirep::class)->create([
'user_id' => $this->user->id,
'aircraft_id' => $subfleet['aircraft']->random(),
'source' => PirepSource::ACARS,
@@ -506,16 +519,16 @@ class FinanceTest extends TestCase
'acars_pay' => $acars_pay_rate,
]);
$this->user = factory(App\Models\User::class)->create([
$this->user = factory(User::class)->create([
'rank_id' => $rank->id,
]);
$flight = factory(App\Models\Flight::class)->create([
$flight = factory(Flight::class)->create([
'airline_id' => $this->user->airline_id,
'pilot_pay' => 1000,
]);
$pirep_acars = factory(App\Models\Pirep::class)->create([
$pirep_acars = factory(Pirep::class)->create([
'user_id' => $this->user->id,
'aircraft_id' => $subfleet['aircraft']->random(),
'source' => PirepSource::ACARS,
@@ -526,7 +539,7 @@ class FinanceTest extends TestCase
$payment = $this->financeSvc->getPilotPay($pirep_acars);
$this->assertEquals(1000, $payment->getValue());
$pirep_acars = factory(App\Models\Pirep::class)->create([
$pirep_acars = factory(Pirep::class)->create([
'user_id' => $this->user->id,
'aircraft_id' => $subfleet['aircraft']->random(),
'source' => PirepSource::ACARS,
@@ -544,8 +557,8 @@ class FinanceTest extends TestCase
{
$journalRepo = app(JournalRepository::class);
$user = factory(App\Models\User::class)->create();
$journal = factory(App\Models\Journal::class)->create();
$user = factory(User::class)->create();
$journal = factory(Journal::class)->create();
$journalRepo->post(
$journal,
@@ -624,18 +637,18 @@ class FinanceTest extends TestCase
*/
public function testPirepExpenses()
{
$airline = factory(App\Models\Airline::class)->create();
$airline2 = factory(App\Models\Airline::class)->create();
$airline = factory(Airline::class)->create();
$airline2 = factory(Airline::class)->create();
factory(App\Models\Expense::class)->create([
factory(Expense::class)->create([
'airline_id' => $airline->id,
]);
factory(App\Models\Expense::class)->create([
factory(Expense::class)->create([
'airline_id' => $airline2->id,
]);
factory(App\Models\Expense::class)->create([
factory(Expense::class)->create([
'airline_id' => null,
]);
@@ -660,8 +673,8 @@ class FinanceTest extends TestCase
* Test the subfleet class
*/
$subfleet = factory(App\Models\Subfleet::class)->create();
factory(App\Models\Expense::class)->create([
$subfleet = factory(Subfleet::class)->create();
factory(Expense::class)->create([
'airline_id' => null,
'ref_model' => Subfleet::class,
'ref_model_id' => $subfleet->id,
@@ -737,7 +750,7 @@ class FinanceTest extends TestCase
$journalRepo = app(JournalRepository::class);
// Add an expense that's only for a cargo flight
factory(App\Models\Expense::class)->create([
factory(Expense::class)->create([
'airline_id' => null,
'amount' => 100,
'flight_type' => FlightType::SCHED_CARGO,
@@ -784,7 +797,7 @@ class FinanceTest extends TestCase
}
// Add a new PIREP;
$pirep2 = factory(App\Models\Pirep::class)->create([
$pirep2 = factory(Pirep::class)->create([
'flight_number' => 100,
'flight_type' => FlightType::SCHED_CARGO,
'dpt_airport_id' => $pirep->dpt_airport_id,