From 2d5fc9e0668f312b38dc282e8952084d1117c4d6 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Thu, 4 Apr 2019 09:40:56 +1100 Subject: [PATCH] Working on tests for Product Route --- .../Requests/Product/UpdateProductRequest.php | 2 +- routes/web.php | 2 +- tests/Feature/ProductTest.php | 115 ++++++++++++++++++ 3 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 tests/Feature/ProductTest.php diff --git a/app/Http/Requests/Product/UpdateProductRequest.php b/app/Http/Requests/Product/UpdateProductRequest.php index c529a23395db..ae48a6d41175 100644 --- a/app/Http/Requests/Product/UpdateProductRequest.php +++ b/app/Http/Requests/Product/UpdateProductRequest.php @@ -26,7 +26,7 @@ class UpdateProductRequest extends Request //when updating you need to ignore the column ID return [ - 'product_key' => 'required|unique:products,product_key,'.$this->product->id.',id,company_id,'.auth()->user()->companyId(), + 'product_key' => 'unique:products,product_key,'.$this->product->id.',id,company_id,'.auth()->user()->companyId(), ]; } diff --git a/routes/web.php b/routes/web.php index 1d16a59c8cd8..88a0d27fa528 100644 --- a/routes/web.php +++ b/routes/web.php @@ -14,7 +14,7 @@ Route::post('logout', 'Auth\LoginController@logout')->name('logout'); Route::redirect('/', '/login', 301); Route::get('signup', 'AccountController@index')->name('signup'); Route::post('signup', 'AccountController@store')->name('signup.submit'); -s + Route::get('contact/login', 'Auth\ContactLoginController@showLoginForm')->name('contact.login'); Route::post('contact/login', 'Auth\ContactLoginController@login')->name('contact.login.submit'); diff --git a/tests/Feature/ProductTest.php b/tests/Feature/ProductTest.php new file mode 100644 index 000000000000..70c10ef5ca20 --- /dev/null +++ b/tests/Feature/ProductTest.php @@ -0,0 +1,115 @@ +faker = \Faker\Factory::create(); + + Model::reguard(); + + } + + public function testProductList() + { + + $data = [ + 'first_name' => $this->faker->firstName, + 'last_name' => $this->faker->lastName, + 'email' => $this->faker->unique()->safeEmail, + 'password' => 'ALongAndBrilliantPassword123', + '_token' => csrf_token(), + 'privacy_policy' => 1, + 'terms_of_service' => 1 + ]; + + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + ])->post('/api/v1/signup', $data); + + + $response->assertStatus(200) + ->assertJson([ + 'first_name' => $data['first_name'], + ]); + + $acc = $response->json(); + + $account = Account::find($acc['id']); + + $token = $account->default_company->tokens->first()->token; + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $token, + ])->get('/api/v1/products'); + + $response->assertStatus(200); + + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $token, + ])->post('/api/v1/products/', + [ + 'product_key' => 'a-new-product-key', + 'notes' => 'Product Notes', + 'cost' => 10, + 'qty' => 10, + 'tax_name1' => 'GST', + 'tax_rate1' => 10, + 'tax_name2' => 'VAT', + 'tax_rate2' => 17.5, + 'custom_value1' => 'custom', + 'custom_value2' => 'custom', + 'custom_value3' => 'custom', + 'custom_value4' => 'custom', + 'is_deleted' => 0 + ] + ) + ->assertStatus(200); + + $product = Product::all()->first(); + + $product_update = [ + 'notes' => 'CHANGE' + ]; + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $token, + ])->put('/api/v1/products/'.$this->encodePrimaryKey($product->id), $product_update) + ->assertStatus(200); + + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $token, + ])->delete('/api/v1/products/'.$this->encodePrimaryKey($product->id)) + ->assertStatus(200); + } +}