Skip to content

Commit

Permalink
Allow nullable field and calculate distance if nulled for flight import
Browse files Browse the repository at this point in the history
  • Loading branch information
nabeelio authored Dec 25, 2019
1 parent 17637c3 commit 4f4d0c2
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 6 deletions.
11 changes: 9 additions & 2 deletions app/Services/ImportExport/FlightImporter.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
namespace App\Services\ImportExport;

use App\Contracts\ImportExport;
use App\Models\Airport;
use App\Models\Enums\Days;
use App\Models\Enums\FlightType;
use App\Models\Fare;
Expand Down Expand Up @@ -37,7 +36,7 @@ class FlightImporter extends ImportExport
'dpt_time' => 'nullable',
'arr_time' => 'nullable',
'level' => 'nullable|integer',
'distance' => 'required|numeric',
'distance' => 'nullable|numeric',
'flight_time' => 'required|integer',
'flight_type' => 'required|alpha',
'route' => 'nullable',
Expand Down Expand Up @@ -109,6 +108,14 @@ public function import(array $row, $index): bool

// Any specific transformations

// Check/calculate the distance
if (empty($row['distance'])) {
$row['distance'] = $this->airportSvc->calculateDistance(
$row['dpt_airport'],
$row['arr_airport']
);
}

// Check for a valid value
$flight_type = $row['flight_type'];
if (!array_key_exists($flight_type, FlightType::labels())) {
Expand Down
5 changes: 1 addition & 4 deletions tests/ImporterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,6 @@
use App\Services\ImportService;
use Illuminate\Validation\ValidationException;

/**
* Class ImporterTest
*/
class ImporterTest extends TestCase
{
private $importBaseClass;
Expand Down Expand Up @@ -470,7 +467,7 @@ public function testFlightImporter(): void
$file_path = base_path('tests/data/flights.csv');
$status = $this->importSvc->importFlights($file_path);

$this->assertCount(1, $status['success']);
$this->assertCount(2, $status['success']);
$this->assertCount(1, $status['errors']);

// See if it imported
Expand Down
1 change: 1 addition & 0 deletions tests/data/flights.csv
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
airline,flight_number,route_code,route_leg,dpt_airport,arr_airport,alt_airport,days,dpt_time,arr_time,level,distance,flight_time,flight_type,route,notes,active,subfleets,fares,fields
VMS,1972,,,KAUS,KJFK,KLGA,15,0810 CST,1235 EST,350,1477,207,J,ILEXY2 ZENZI LFK ELD J29 MEM Q29 JHW J70 STENT J70 MAGIO J70 LVZ LENDY6,"Just a flight",1,A32X,Y?price=300&cost=100&capacity=130;F?price=600&cost=400;B?,Departure Gate=4;Arrival Gate=C41
" ",1972,,,KAUS,KJFK,KLGA,15,0810 CST,1235 EST,350,1477,207,J,ILEXY2 ZENZI LFK ELD J29 MEM Q29 JHW J70 STENT J70 MAGIO J70 LVZ LENDY6,"Just a flight",1,A32X,Y?price=300&cost=100&capacity=130;F?price=600&cost=400;B?,Departure Gate=4;Arrival Gate=C41
VMS,113,,,KJFK,KAUS,KDFW,15,0810 EST,1035 CST,350,,207,J,,"Empty distance",1,A32X,Y?price=300&cost=100&capacity=130;F?price=600&cost=400;B?,Departure Gate=C41;Arrival Gate=2

0 comments on commit 4f4d0c2

Please sign in to comment.