Change exporter to use utf-8 close #282
This commit is contained in:
@@ -1,7 +1,23 @@
|
||||
<?php
|
||||
|
||||
use App\Contracts\ImportExport;
|
||||
use App\Models\Aircraft;
|
||||
use App\Models\Airport;
|
||||
use App\Models\Enums\Days;
|
||||
use App\Models\Enums\ExpenseType;
|
||||
use App\Models\Enums\FlightType;
|
||||
use App\Models\Expense;
|
||||
use App\Models\Fare;
|
||||
use App\Models\Flight;
|
||||
use App\Models\FlightFieldValue;
|
||||
use App\Models\Subfleet;
|
||||
use App\Services\ExportService;
|
||||
use App\Services\FareService;
|
||||
use App\Services\ImportExport\AircraftExporter;
|
||||
use App\Services\ImportExport\AirportExporter;
|
||||
use App\Services\ImportExport\FlightExporter;
|
||||
use App\Services\ImportService;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
|
||||
/**
|
||||
* Class ImporterTest
|
||||
@@ -15,9 +31,9 @@ class ImporterTest extends TestCase
|
||||
public function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
$this->importBaseClass = new \App\Contracts\ImportExport();
|
||||
$this->importSvc = app(\App\Services\ImportService::class);
|
||||
$this->fareSvc = app(\App\Services\FareService::class);
|
||||
$this->importBaseClass = new ImportExport();
|
||||
$this->importSvc = app(ImportService::class);
|
||||
$this->fareSvc = app(FareService::class);
|
||||
|
||||
Storage::fake('local');
|
||||
}
|
||||
@@ -229,13 +245,13 @@ class ImporterTest extends TestCase
|
||||
/**
|
||||
* Test exporting all the flights to a file
|
||||
*
|
||||
* @throws \Illuminate\Validation\ValidationException
|
||||
* @throws ValidationException
|
||||
*/
|
||||
public function testAircraftExporter(): void
|
||||
{
|
||||
$aircraft = factory(App\Models\Aircraft::class)->create();
|
||||
|
||||
$exporter = new \App\Services\ImportExport\AircraftExporter();
|
||||
$exporter = new AircraftExporter();
|
||||
$exported = $exporter->export($aircraft);
|
||||
|
||||
$this->assertEquals($aircraft->iata, $exported['iata']);
|
||||
@@ -244,8 +260,8 @@ class ImporterTest extends TestCase
|
||||
$this->assertEquals($aircraft->zfw, $exported['zfw']);
|
||||
$this->assertEquals($aircraft->subfleet->type, $exported['subfleet']);
|
||||
|
||||
$importer = app(\App\Services\ImportService::class);
|
||||
$exporter = app(\App\Services\ExportService::class);
|
||||
$importer = app(ImportService::class);
|
||||
$exporter = app(ExportService::class);
|
||||
$file = $exporter->exportAircraft(collect([$aircraft]));
|
||||
$status = $importer->importAircraft($file);
|
||||
$this->assertCount(1, $status['success']);
|
||||
@@ -257,18 +273,24 @@ class ImporterTest extends TestCase
|
||||
*/
|
||||
public function testAirportExporter(): void
|
||||
{
|
||||
$airport = factory(App\Models\Airport::class)->create();
|
||||
$exporter = new \App\Services\ImportExport\AirportExporter();
|
||||
$airport_name = 'Adolfo Suárez Madrid–Barajas Airport';
|
||||
|
||||
$airport = factory(App\Models\Airport::class)->create([
|
||||
'name' => $airport_name,
|
||||
]);
|
||||
|
||||
$exporter = new AirportExporter();
|
||||
$exported = $exporter->export($airport);
|
||||
|
||||
$this->assertEquals($airport->iata, $exported['iata']);
|
||||
$this->assertEquals($airport->icao, $exported['icao']);
|
||||
$this->assertEquals($airport->name, $exported['name']);
|
||||
|
||||
$importer = app(\App\Services\ImportService::class);
|
||||
$exporter = app(\App\Services\ExportService::class);
|
||||
$importer = app(ImportService::class);
|
||||
$exporter = app(ExportService::class);
|
||||
$file = $exporter->exportAirports(collect([$airport]));
|
||||
$status = $importer->importAirports($file);
|
||||
|
||||
$this->assertCount(1, $status['success']);
|
||||
$this->assertCount(0, $status['errors']);
|
||||
}
|
||||
@@ -283,15 +305,15 @@ class ImporterTest extends TestCase
|
||||
[$airline, $subfleet] = $this->insertFlightsScaffoldData();
|
||||
$subfleet2 = factory(App\Models\Subfleet::class)->create(['type' => 'B74X']);
|
||||
|
||||
$fareY = \App\Models\Fare::where('code', 'Y')->first();
|
||||
$fareF = \App\Models\Fare::where('code', 'F')->first();
|
||||
$fareY = Fare::where('code', 'Y')->first();
|
||||
$fareF = Fare::where('code', 'F')->first();
|
||||
|
||||
$flight = factory(App\Models\Flight::class)->create([
|
||||
'airline_id' => $airline->id,
|
||||
'flight_type' => 'J',
|
||||
'days' => \App\Models\Enums\Days::getDaysMask([
|
||||
\App\Models\Enums\Days::TUESDAY,
|
||||
\App\Models\Enums\Days::SUNDAY,
|
||||
'days' => Days::getDaysMask([
|
||||
Days::TUESDAY,
|
||||
Days::SUNDAY,
|
||||
]),
|
||||
]);
|
||||
|
||||
@@ -302,13 +324,13 @@ class ImporterTest extends TestCase
|
||||
$fareSvc->setForFlight($flight, $fareF);
|
||||
|
||||
// Add some custom fields
|
||||
\App\Models\FlightFieldValue::create([
|
||||
FlightFieldValue::create([
|
||||
'flight_id' => $flight->id,
|
||||
'name' => 'Departure Gate',
|
||||
'value' => '4',
|
||||
]);
|
||||
|
||||
\App\Models\FlightFieldValue::create([
|
||||
FlightFieldValue::create([
|
||||
'flight_id' => $flight->id,
|
||||
'name' => 'Arrival Gate',
|
||||
'value' => 'C41',
|
||||
@@ -316,7 +338,7 @@ class ImporterTest extends TestCase
|
||||
|
||||
// Test the conversion
|
||||
|
||||
$exporter = new \App\Services\ImportExport\FlightExporter();
|
||||
$exporter = new FlightExporter();
|
||||
$exported = $exporter->export($flight);
|
||||
|
||||
$this->assertEquals('27', $exported['days']);
|
||||
@@ -327,8 +349,8 @@ class ImporterTest extends TestCase
|
||||
$this->assertEquals('Y?capacity=100;F', $exported['fares']);
|
||||
$this->assertEquals('Departure Gate=4;Arrival Gate=C41', $exported['fields']);
|
||||
|
||||
$importer = app(\App\Services\ImportService::class);
|
||||
$exporter = app(\App\Services\ExportService::class);
|
||||
$importer = app(ImportService::class);
|
||||
$exporter = app(ExportService::class);
|
||||
$file = $exporter->exportFlights(collect([$flight]));
|
||||
$status = $importer->importFlights($file);
|
||||
$this->assertCount(1, $status['success']);
|
||||
@@ -338,7 +360,7 @@ class ImporterTest extends TestCase
|
||||
/**
|
||||
* Try importing the aicraft in the airports. Should fail
|
||||
*
|
||||
* @expectedException \Illuminate\Validation\ValidationException
|
||||
* @expectedException ValidationException
|
||||
*/
|
||||
public function testInvalidFileImport(): void
|
||||
{
|
||||
@@ -361,7 +383,7 @@ class ImporterTest extends TestCase
|
||||
/**
|
||||
* Test the importing of expenses
|
||||
*
|
||||
* @throws \Illuminate\Validation\ValidationException
|
||||
* @throws ValidationException
|
||||
*/
|
||||
public function testExpenseImporter(): void
|
||||
{
|
||||
@@ -378,7 +400,7 @@ class ImporterTest extends TestCase
|
||||
$this->assertCount(8, $status['success']);
|
||||
$this->assertCount(0, $status['errors']);
|
||||
|
||||
$expenses = \App\Models\Expense::all();
|
||||
$expenses = Expense::all();
|
||||
|
||||
$on_airline = $expenses->where('name', 'Per-Flight (multiplier, on airline)')->first();
|
||||
$this->assertEquals(200, $on_airline->amount);
|
||||
@@ -386,21 +408,21 @@ class ImporterTest extends TestCase
|
||||
|
||||
$pf = $expenses->where('name', 'Per-Flight (no muliplier)')->first();
|
||||
$this->assertEquals(100, $pf->amount);
|
||||
$this->assertEquals(\App\Models\Enums\ExpenseType::FLIGHT, $pf->type);
|
||||
$this->assertEquals(ExpenseType::FLIGHT, $pf->type);
|
||||
|
||||
$catering = $expenses->where('name', 'Catering Staff')->first();
|
||||
$this->assertEquals(1000, $catering->amount);
|
||||
$this->assertEquals(\App\Models\Enums\ExpenseType::DAILY, $catering->type);
|
||||
$this->assertEquals(\App\Models\Subfleet::class, $catering->ref_model);
|
||||
$this->assertEquals(ExpenseType::DAILY, $catering->type);
|
||||
$this->assertEquals(Subfleet::class, $catering->ref_model);
|
||||
$this->assertEquals($subfleet->id, $catering->ref_model_id);
|
||||
|
||||
$mnt = $expenses->where('name', 'Maintenance')->first();
|
||||
$this->assertEquals(\App\Models\Aircraft::class, $mnt->ref_model);
|
||||
$this->assertEquals(Aircraft::class, $mnt->ref_model);
|
||||
$this->assertEquals($aircraft->id, $mnt->ref_model_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \Illuminate\Validation\ValidationException
|
||||
* @throws ValidationException
|
||||
*/
|
||||
public function testFareImporter(): void
|
||||
{
|
||||
@@ -410,7 +432,7 @@ class ImporterTest extends TestCase
|
||||
$this->assertCount(3, $status['success']);
|
||||
$this->assertCount(0, $status['errors']);
|
||||
|
||||
$fares = \App\Models\Fare::all();
|
||||
$fares = Fare::all();
|
||||
|
||||
$y_class = $fares->where('code', 'Y')->first();
|
||||
$this->assertEquals('Economy', $y_class->name);
|
||||
@@ -440,7 +462,7 @@ class ImporterTest extends TestCase
|
||||
/**
|
||||
* Test the flight importer
|
||||
*
|
||||
* @throws \Illuminate\Validation\ValidationException
|
||||
* @throws ValidationException
|
||||
*/
|
||||
public function testFlightImporter(): void
|
||||
{
|
||||
@@ -453,7 +475,7 @@ class ImporterTest extends TestCase
|
||||
$this->assertCount(1, $status['errors']);
|
||||
|
||||
// See if it imported
|
||||
$flight = \App\Models\Flight::where([
|
||||
$flight = Flight::where([
|
||||
'airline_id' => $airline->id,
|
||||
'flight_number' => '1972',
|
||||
])->first();
|
||||
@@ -474,12 +496,12 @@ class ImporterTest extends TestCase
|
||||
$this->assertEquals(true, $flight->active);
|
||||
|
||||
// Test that the days were set properly
|
||||
$this->assertTrue($flight->on_day(\App\Models\Enums\Days::MONDAY));
|
||||
$this->assertTrue($flight->on_day(\App\Models\Enums\Days::FRIDAY));
|
||||
$this->assertFalse($flight->on_day(\App\Models\Enums\Days::TUESDAY));
|
||||
$this->assertTrue($flight->on_day(Days::MONDAY));
|
||||
$this->assertTrue($flight->on_day(Days::FRIDAY));
|
||||
$this->assertFalse($flight->on_day(Days::TUESDAY));
|
||||
|
||||
// Check the custom fields entered
|
||||
$fields = \App\Models\FlightFieldValue::where([
|
||||
$fields = FlightFieldValue::where([
|
||||
'flight_id' => $flight->id,
|
||||
])->get();
|
||||
|
||||
@@ -512,7 +534,7 @@ class ImporterTest extends TestCase
|
||||
/**
|
||||
* Test the flight importer
|
||||
*
|
||||
* @throws \Illuminate\Validation\ValidationException
|
||||
* @throws ValidationException
|
||||
*/
|
||||
public function testFlightImporterEmptyCustomFields(): void
|
||||
{
|
||||
@@ -525,7 +547,7 @@ class ImporterTest extends TestCase
|
||||
$this->assertCount(0, $status['errors']);
|
||||
|
||||
// See if it imported
|
||||
$flight = \App\Models\Flight::where([
|
||||
$flight = Flight::where([
|
||||
'airline_id' => $airline->id,
|
||||
'flight_number' => '1972',
|
||||
])->first();
|
||||
@@ -533,7 +555,7 @@ class ImporterTest extends TestCase
|
||||
$this->assertNotNull($flight);
|
||||
|
||||
// Check the custom fields entered
|
||||
$fields = \App\Models\FlightFieldValue::where([
|
||||
$fields = FlightFieldValue::where([
|
||||
'flight_id' => $flight->id,
|
||||
])->get();
|
||||
|
||||
@@ -541,7 +563,7 @@ class ImporterTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \Illuminate\Validation\ValidationException
|
||||
* @throws ValidationException
|
||||
*/
|
||||
public function testAircraftImporter(): void
|
||||
{
|
||||
@@ -554,7 +576,7 @@ class ImporterTest extends TestCase
|
||||
$this->assertCount(1, $status['errors']);
|
||||
|
||||
// See if it imported
|
||||
$aircraft = \App\Models\Aircraft::where([
|
||||
$aircraft = Aircraft::where([
|
||||
'registration' => 'N309US',
|
||||
])->first();
|
||||
|
||||
@@ -569,7 +591,7 @@ class ImporterTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \Illuminate\Validation\ValidationException
|
||||
* @throws ValidationException
|
||||
*/
|
||||
public function testAirportImporter(): void
|
||||
{
|
||||
@@ -580,7 +602,7 @@ class ImporterTest extends TestCase
|
||||
$this->assertCount(1, $status['errors']);
|
||||
|
||||
// See if it imported
|
||||
$airport = \App\Models\Airport::where([
|
||||
$airport = Airport::where([
|
||||
'id' => 'KAUS',
|
||||
])->first();
|
||||
|
||||
@@ -597,7 +619,7 @@ class ImporterTest extends TestCase
|
||||
$this->assertEquals('-97.6699', $airport->lon);
|
||||
|
||||
// See if it imported
|
||||
$airport = \App\Models\Airport::where([
|
||||
$airport = Airport::where([
|
||||
'id' => 'KSFO',
|
||||
])->first();
|
||||
|
||||
@@ -608,7 +630,7 @@ class ImporterTest extends TestCase
|
||||
/**
|
||||
* Test importing the subfleets
|
||||
*
|
||||
* @throws \Illuminate\Validation\ValidationException
|
||||
* @throws ValidationException
|
||||
*/
|
||||
public function testSubfleetImporter(): void
|
||||
{
|
||||
@@ -623,7 +645,7 @@ class ImporterTest extends TestCase
|
||||
$this->assertCount(1, $status['errors']);
|
||||
|
||||
// See if it imported
|
||||
$subfleet = \App\Models\Subfleet::where([
|
||||
$subfleet = Subfleet::where([
|
||||
'type' => 'A32X',
|
||||
])->first();
|
||||
|
||||
@@ -653,4 +675,18 @@ class ImporterTest extends TestCase
|
||||
$this->assertEquals(100, $busi->pivot->capacity);
|
||||
$this->assertEquals(null, $busi->pivot->cost);
|
||||
}
|
||||
|
||||
public function testAirportSpecialCharsImporter(): void
|
||||
{
|
||||
$file_path = base_path('tests/data/airports_special_chars.csv');
|
||||
$status = $this->importSvc->importAirports($file_path);
|
||||
|
||||
// See if it imported
|
||||
$airport = Airport::where([
|
||||
'id' => 'LEMD',
|
||||
])->first();
|
||||
|
||||
$this->assertNotNull($airport);
|
||||
$this->assertEquals('Adolfo Suárez Madrid–Barajas Airport', $airport->name);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user