From b72217d74c7c593f448c969dbde74ca040c0f47f Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sun, 30 May 2021 21:26:43 +1000 Subject: [PATCH] Fixes for import company tests --- app/Http/Controllers/ImportJsonController.php | 64 ++++++++++++++++++ app/Jobs/Company/CompanyExport.php | 7 +- app/Models/Company.php | 5 ++ ..._make_documents_assigned_user_nullable.php | 41 +++++++++++ routes/api.php | 1 + tests/Feature/Import/ImportCompanyTest.php | 7 +- tests/Feature/Import/backup.zip | Bin 13809 -> 14067 bytes 7 files changed, 121 insertions(+), 4 deletions(-) create mode 100644 app/Http/Controllers/ImportJsonController.php create mode 100644 database/migrations/2021_05_30_100933_make_documents_assigned_user_nullable.php diff --git a/app/Http/Controllers/ImportJsonController.php b/app/Http/Controllers/ImportJsonController.php new file mode 100644 index 000000000000..5a95fa23a813 --- /dev/null +++ b/app/Http/Controllers/ImportJsonController.php @@ -0,0 +1,64 @@ +user()->getCompany(), auth()->user()); + + return response()->json(['message' => 'Processing'], 200); + + } +} diff --git a/app/Jobs/Company/CompanyExport.php b/app/Jobs/Company/CompanyExport.php index 3794be9dd6c6..fd26f3a33ce6 100644 --- a/app/Jobs/Company/CompanyExport.php +++ b/app/Jobs/Company/CompanyExport.php @@ -220,9 +220,10 @@ class CompanyExport implements ShouldQueue $this->export_data['designs'] = $this->company->user_designs->makeHidden(['id'])->all(); - $this->export_data['documents'] = $this->company->documents->map(function ($document){ + $this->export_data['documents'] = $this->company->all_documents->map(function ($document){ - $document = $this->transformArrayOfKeys($document, ['user_id', 'assigned_user_id', 'company_id', 'project_id', 'vendor_id']); + $document = $this->transformArrayOfKeys($document, ['user_id', 'assigned_user_id', 'company_id', 'project_id', 'vendor_id','documentable_id']); + $document->hashed_id = $this->encodePrimaryKey($document->id); return $document->makeVisible(['id']); @@ -431,7 +432,7 @@ class CompanyExport implements ShouldQueue })->makeHidden(['id'])->all(); //write to tmp and email to owner(); - + $this->zipAndSend(); return true; diff --git a/app/Models/Company.php b/app/Models/Company.php index e197b6de4da4..50096c00abe4 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -131,6 +131,11 @@ class Company extends BaseModel return $this->morphMany(Document::class, 'documentable'); } + public function all_documents() + { + return $this->HasMany(Document::class); + } + public function getEntityType() { return self::class; diff --git a/database/migrations/2021_05_30_100933_make_documents_assigned_user_nullable.php b/database/migrations/2021_05_30_100933_make_documents_assigned_user_nullable.php new file mode 100644 index 000000000000..6b4f3b3ea5f8 --- /dev/null +++ b/database/migrations/2021_05_30_100933_make_documents_assigned_user_nullable.php @@ -0,0 +1,41 @@ +unsignedInteger('assigned_user_id')->nullable()->change(); + }); + + Document::where('assigned_user_id', 0)->update(['assigned_user_id' => null]); + + if(config('ninja.db.multi_db_enabled')){ + Document::on('db-ninja-01')->where('assigned_user_id', 0)->update(['assigned_user_id' => null]); + Document::on('db-ninja-02')->where('assigned_user_id', 0)->update(['assigned_user_id' => null]); + } + else{ + Document::where('assigned_user_id', 0)->update(['assigned_user_id' => null]); + } + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/routes/api.php b/routes/api.php index ea1477edd5a8..1ce7f9bc8ce3 100644 --- a/routes/api.php +++ b/routes/api.php @@ -84,6 +84,7 @@ Route::group(['middleware' => ['api_db', 'token_auth', 'locale'], 'prefix' => 'a Route::post('group_settings/bulk', 'GroupSettingController@bulk'); Route::post('import', 'ImportController@import')->name('import.import'); + Route::post('import_json', 'ImportJsonController@import')->name('import.import_json'); Route::post('preimport', 'ImportController@preimport')->name('import.preimport'); Route::resource('invoices', 'InvoiceController'); // name = (invoices. index / create / show / update / destroy / edit diff --git a/tests/Feature/Import/ImportCompanyTest.php b/tests/Feature/Import/ImportCompanyTest.php index f9addafd91ed..d4918b3a1150 100644 --- a/tests/Feature/Import/ImportCompanyTest.php +++ b/tests/Feature/Import/ImportCompanyTest.php @@ -855,7 +855,12 @@ class ImportCompanyTest extends TestCase // Designs // Documents + $this->assertEquals(2, count($this->backup_json_object->documents)); + $this->documentsImport(); + + $this->assertEquals(2, Document::count()); + // Documents } @@ -912,7 +917,7 @@ class ImportCompanyTest extends TestCase case Expense::class: return $this->transformId('expenses', $id); break; - case Invoice::class: + case 'invoices': return $this->transformId('invoices', $id); break; case Payment::class: diff --git a/tests/Feature/Import/backup.zip b/tests/Feature/Import/backup.zip index 33cbe23c9ab01a58a883ad8e859bf20a155f216b..66f5bfdc7e50b70d2d30313a90b3354cdc899735 100644 GIT binary patch literal 14067 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 literal 13809 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 P0rLK-e?OBleO&!7z^dU;