withoutMiddleware(ThrottleRequests::class); config(['database.default' => config('ninja.db.default')]); $this->makeTestData(); $this->withoutExceptionHandling(); } public function testClientInvoicelyImport() { $csv = file_get_contents( base_path().'/tests/Feature/Import/invoicely_clients.csv' ); $hash = Str::random(32); $column_map = [ 0 => 'Client Name', 1 => 'Email', 2 => 'Phone', 3 => 'Country', ]; $data = [ 'hash' => $hash, 'column_map' => ['client' => ['mapping' => $column_map]], 'skip_header' => true, 'import_type' => 'invoicely', ]; Cache::put($hash.'-client', base64_encode($csv), 360); $csv_importer = new Invoicely($data, $this->company); $count = $csv_importer->import('client'); $base_transformer = new BaseTransformer($this->company); $this->assertTrue($base_transformer->hasClient('Alexander Hamilton')); $this->assertTrue($base_transformer->hasClient('Bruce Wayne')); $client_id = $base_transformer->getClient('', 'alexander@iamhamllton.com'); $client = Client::find($client_id); $this->assertInstanceOf(Client::class, $client); $this->assertEquals('5558675309', $client->phone); } public function testInvoiceInvoicelyImport() { $csv = file_get_contents( base_path().'/tests/Feature/Import/invoicely_clients.csv' ); $hash = Str::random(32); $column_map = [ 0 => 'Client Name', 1 => 'Email', 2 => 'Phone', 3 => 'Country', ]; $data = [ 'hash' => $hash, 'column_map' => ['client' => ['mapping' => $column_map]], 'skip_header' => true, 'import_type' => 'invoicely', ]; Cache::put($hash.'-client', base64_encode($csv), 360); $csv_importer = new Invoicely($data, $this->company); $count = $csv_importer->import('client'); $base_transformer = new BaseTransformer($this->company); $this->assertTrue($base_transformer->hasClient('Alexander Hamilton')); $this->assertTrue($base_transformer->hasClient('Bruce Wayne')); $client_id = $base_transformer->getClient('', 'alexander@iamhamllton.com'); $client = Client::find($client_id); $this->assertInstanceOf(Client::class, $client); $this->assertEquals('5558675309', $client->phone); //now import the invoices $csv = file_get_contents( base_path().'/tests/Feature/Import/invoicely_invoices.csv' ); $hash = Str::random(32); $column_map = [ 0 => 'Date', 1 => 'Due', 2 => 'Details', 3 => 'Client', 4 => 'Status', 5 => 'Total', ]; $data = [ 'hash' => $hash, 'column_map' => ['invoice' => ['mapping' => $column_map]], 'skip_header' => true, 'import_type' => 'invoicely', ]; Cache::put($hash.'-invoice', base64_encode($csv), 360); $csv_importer = new Invoicely($data, $this->company); $count = $csv_importer->import('invoice'); $base_transformer = new BaseTransformer($this->company); nlog($count); $this->assertTrue($base_transformer->hasInvoice('INV-1')); $invoice_id = $base_transformer->getInvoiceId('INV-1'); $invoice = Invoice::find($invoice_id); $this->assertEquals(1020, $invoice->amount); $this->assertEquals(2, $invoice->status_id); $this->assertEquals(1020, $invoice->balance); $this->assertEquals(1, count($invoice->line_items)); $this->assertFalse($invoice->payments()->exists()); } }