Strip timestamps from comparison for api tests, in an attempt to fix the test failures. (#5847)
This commit is contained in:
parent
8f6e0ad5be
commit
dcf72ce2da
13 changed files with 168 additions and 13 deletions
|
@ -43,4 +43,17 @@ class ApiTester extends \Codeception\Actor
|
|||
|
||||
return $token;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove Timestamps from transformed array
|
||||
* This fixes false negatives when comparing json due to timestamp second rounding issues
|
||||
* @param array $array Array returned from the transformer
|
||||
* @return array Transformed item striped of created_at and updated_at
|
||||
*/
|
||||
public function removeTimeStamps($array)
|
||||
{
|
||||
unset($array['created_at']);
|
||||
unset($array['updated_at']);
|
||||
return $array;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ class ApiAccessoriesCest
|
|||
$response = json_decode($I->grabResponse(), true);
|
||||
// sample verify
|
||||
$accessory = App\Models\Accessory::orderByDesc('created_at')->take(10)->get()->shuffle()->first();
|
||||
$I->seeResponseContainsJson((new AccessoriesTransformer)->transformAccessory($accessory));
|
||||
$I->seeResponseContainsJson($I->removeTimestamps((new AccessoriesTransformer)->transformAccessory($accessory)));
|
||||
}
|
||||
|
||||
/** @test */
|
||||
|
|
|
@ -34,7 +34,7 @@ class ApiAssetsCest
|
|||
$response = json_decode($I->grabResponse(), true);
|
||||
// sample verify
|
||||
$asset = Asset::orderByDesc('id')->take(20)->get()->first();
|
||||
$I->seeResponseContainsJson((new AssetsTransformer)->transformAsset($asset));
|
||||
$I->seeResponseContainsJson($I->removeTimestamps((new AssetsTransformer)->transformAsset($asset)));
|
||||
}
|
||||
|
||||
/** @test */
|
||||
|
|
|
@ -30,12 +30,10 @@ class ApiCategoriesCest
|
|||
$I->seeResponseCodeIs(200);
|
||||
|
||||
$response = json_decode($I->grabResponse(), true);
|
||||
// dd($response);
|
||||
// sample verify
|
||||
$category = App\Models\Category::withCount('assets','accessories','consumables','components','licenses')
|
||||
->orderByDesc('created_at')->take(10)->get()->shuffle()->first();
|
||||
|
||||
$I->seeResponseContainsJson((new CategoriesTransformer)->transformCategory($category));
|
||||
$I->seeResponseContainsJson($I->removeTimestamps((new CategoriesTransformer)->transformCategory($category)));
|
||||
}
|
||||
|
||||
/** @test */
|
||||
|
|
|
@ -35,7 +35,7 @@ class ApiCompaniesCest
|
|||
$company = App\Models\Company::withCount('assets','licenses','accessories','consumables','components','users')
|
||||
->orderByDesc('created_at')->take(10)->get()->shuffle()->first();
|
||||
|
||||
$I->seeResponseContainsJson((new CompaniesTransformer)->transformCompany($company));
|
||||
$I->seeResponseContainsJson($I->removeTimestamps((new CompaniesTransformer)->transformCompany($company)));
|
||||
}
|
||||
|
||||
/** @test */
|
||||
|
|
|
@ -32,7 +32,7 @@ class ApiComponentsCest
|
|||
// sample verify
|
||||
$component = App\Models\Component::orderByDesc('created_at')->take(10)->get()->shuffle()->first();
|
||||
|
||||
$I->seeResponseContainsJson((new ComponentsTransformer)->transformComponent($component));
|
||||
$I->seeResponseContainsJson($I->removeTimestamps((new ComponentsTransformer)->transformComponent($component)));
|
||||
}
|
||||
|
||||
/** @test */
|
||||
|
|
|
@ -32,7 +32,7 @@ class ApiConsumablesCest
|
|||
// sample verify
|
||||
$consumable = App\Models\Consumable::orderByDesc('created_at')->take(10)->get()->shuffle()->first();
|
||||
|
||||
$I->seeResponseContainsJson((new ConsumablesTransformer)->transformConsumable($consumable));
|
||||
$I->seeResponseContainsJson($I->removeTimestamps((new ConsumablesTransformer)->transformConsumable($consumable)));
|
||||
}
|
||||
|
||||
/** @test */
|
||||
|
|
|
@ -33,7 +33,7 @@ class ApiLicensesCest
|
|||
$license = App\Models\License::orderByDesc('created_at')
|
||||
->withCount('freeSeats')
|
||||
->take(10)->get()->shuffle()->first();
|
||||
$I->seeResponseContainsJson((new LicensesTransformer)->transformLicense($license));
|
||||
$I->seeResponseContainsJson($I->removeTimestamps((new LicensesTransformer)->transformLicense($license)));
|
||||
}
|
||||
|
||||
/** @test */
|
||||
|
|
|
@ -34,7 +34,7 @@ class ApiLocationsCest
|
|||
$location = App\Models\Location::orderByDesc('created_at')
|
||||
->withCount('assignedAssets', 'assets', 'users')
|
||||
->take(10)->get()->shuffle()->first();
|
||||
$I->seeResponseContainsJson((new LocationsTransformer)->transformLocation($location));
|
||||
$I->seeResponseContainsJson($I->removeTimestamps((new LocationsTransformer)->transformLocation($location)));
|
||||
}
|
||||
|
||||
/** @test */
|
||||
|
|
|
@ -34,7 +34,7 @@ class ApiManufacturersCest
|
|||
$manufacturer = App\Models\Manufacturer::withCount('assets','accessories','consumables','licenses')
|
||||
->orderByDesc('created_at')->take(10)->get()->shuffle()->first();
|
||||
|
||||
$I->seeResponseContainsJson((new ManufacturersTransformer)->transformManufacturer($manufacturer));
|
||||
$I->seeResponseContainsJson($I->removeTimestamps((new ManufacturersTransformer)->transformManufacturer($manufacturer)));
|
||||
}
|
||||
|
||||
/** @test */
|
||||
|
|
143
tests/api/ApiModelsCest.php
Normal file
143
tests/api/ApiModelsCest.php
Normal file
|
@ -0,0 +1,143 @@
|
|||
<?php
|
||||
|
||||
use App\Helpers\Helper;
|
||||
use App\Http\Transformers\AssetModelsTransformer;
|
||||
use App\Models\AssetModel;
|
||||
use App\Models\Setting;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class ApiAssetModelsCest
|
||||
{
|
||||
protected $user;
|
||||
protected $timeFormat;
|
||||
|
||||
public function _before(ApiTester $I)
|
||||
{
|
||||
$this->user = \App\Models\User::find(1);
|
||||
$I->haveHttpHeader('Accept', 'application/json');
|
||||
$I->amBearerAuthenticated($I->getToken($this->user));
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function indexAssetModels(ApiTester $I)
|
||||
{
|
||||
|
||||
$I->wantTo('Get a list of assetmodels');
|
||||
|
||||
// call
|
||||
$I->sendGET('/models?limit=10');
|
||||
$I->seeResponseIsJson();
|
||||
$I->seeResponseCodeIs(200);
|
||||
|
||||
$response = json_decode($I->grabResponse(), true);
|
||||
$assetmodel = App\Models\AssetModel::orderByDesc('created_at')
|
||||
->withCount('assets')->take(10)->get()->shuffle()->first();
|
||||
$I->seeResponseContainsJson($I->removeTimestamps((new AssetModelsTransformer)->transformAssetModel($assetmodel)));
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function createAssetModel(ApiTester $I, $scenario)
|
||||
{
|
||||
$I->wantTo('Create a new assetmodel');
|
||||
|
||||
$temp_assetmodel = factory(\App\Models\AssetModel::class)->states('mbp-13-model')->make([
|
||||
'name' => "Test AssetModel Tag",
|
||||
]);
|
||||
|
||||
// setup
|
||||
$data = [
|
||||
'category_id' => $temp_assetmodel->category_id,
|
||||
'depreciation_id' => $temp_assetmodel->depreciation_id,
|
||||
'eol' => $temp_assetmodel->eol,
|
||||
'image' => $temp_assetmodel->image,
|
||||
'manufacturer_id' => $temp_assetmodel->manufacturer_id,
|
||||
'model_number' => $temp_assetmodel->model_number,
|
||||
'name' => $temp_assetmodel->name,
|
||||
'notes' => $temp_assetmodel->notes,
|
||||
];
|
||||
|
||||
// create
|
||||
$I->sendPOST('/models', $data);
|
||||
$I->seeResponseIsJson();
|
||||
$I->seeResponseCodeIs(200);
|
||||
}
|
||||
|
||||
// Put is routed to the same method in the controller
|
||||
// DO we actually need to test both?
|
||||
/** @test */
|
||||
public function updateAssetModelWithPatch(ApiTester $I, $scenario)
|
||||
{
|
||||
$I->wantTo('Update an assetmodel with PATCH');
|
||||
|
||||
// create
|
||||
$assetmodel = factory(\App\Models\AssetModel::class)->states('mbp-13-model')->create([
|
||||
'name' => 'Original AssetModel Name',
|
||||
]);
|
||||
$I->assertInstanceOf(\App\Models\AssetModel::class, $assetmodel);
|
||||
|
||||
$temp_assetmodel = factory(\App\Models\AssetModel::class)->states('polycomcx-model')->make([
|
||||
'name' => "updated AssetModel name",
|
||||
]);
|
||||
|
||||
$data = [
|
||||
'category_id' => $temp_assetmodel->category_id,
|
||||
'depreciation_id' => $temp_assetmodel->depreciation_id,
|
||||
'eol' => $temp_assetmodel->eol,
|
||||
'image' => $temp_assetmodel->image,
|
||||
'manufacturer_id' => $temp_assetmodel->manufacturer_id,
|
||||
'model_number' => $temp_assetmodel->model_number,
|
||||
'name' => $temp_assetmodel->name,
|
||||
'notes' => $temp_assetmodel->notes,
|
||||
];
|
||||
|
||||
$I->assertNotEquals($assetmodel->name, $data['name']);
|
||||
|
||||
// update
|
||||
$I->sendPATCH('/models/' . $assetmodel->id, $data);
|
||||
$I->seeResponseIsJson();
|
||||
$I->seeResponseCodeIs(200);
|
||||
|
||||
$response = json_decode($I->grabResponse());
|
||||
|
||||
$I->assertEquals('success', $response->status);
|
||||
$I->assertEquals(trans('admin/models/message.update.success'), $response->messages);
|
||||
$I->assertEquals($assetmodel->id, $response->payload->id); // assetmodel id does not change
|
||||
$I->assertEquals($temp_assetmodel->name, $response->payload->name); // assetmodel name updated
|
||||
|
||||
// Some necessary manual copying
|
||||
$temp_assetmodel->created_at = Carbon::parse($response->payload->created_at);
|
||||
$temp_assetmodel->updated_at = Carbon::parse($response->payload->updated_at);
|
||||
$temp_assetmodel->id = $assetmodel->id;
|
||||
// verify
|
||||
$I->sendGET('/models/' . $assetmodel->id);
|
||||
$I->seeResponseIsJson();
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->seeResponseContainsJson((new AssetModelsTransformer)->transformAssetModel($temp_assetmodel));
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function deleteAssetModelTest(ApiTester $I, $scenario)
|
||||
{
|
||||
$I->wantTo('Delete an assetmodel');
|
||||
|
||||
// create
|
||||
$assetmodel = factory(\App\Models\AssetModel::class)->states('mbp-13-model')->create([
|
||||
'name' => "Soon to be deleted"
|
||||
]);
|
||||
$I->assertInstanceOf(\App\Models\AssetModel::class, $assetmodel);
|
||||
|
||||
// delete
|
||||
$I->sendDELETE('/models/' . $assetmodel->id);
|
||||
$I->seeResponseIsJson();
|
||||
$I->seeResponseCodeIs(200);
|
||||
|
||||
$response = json_decode($I->grabResponse());
|
||||
$I->assertEquals('success', $response->status);
|
||||
$I->assertEquals(trans('admin/models/message.delete.success'), $response->messages);
|
||||
|
||||
// verify, expect a 200
|
||||
$I->sendGET('/models/' . $assetmodel->id);
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->seeResponseIsJson();
|
||||
}
|
||||
}
|
|
@ -34,7 +34,7 @@ class ApiStatuslabelsCest
|
|||
$statuslabel = App\Models\Statuslabel::orderByDesc('created_at')
|
||||
->withCount('assets')
|
||||
->take(10)->get()->shuffle()->first();
|
||||
$I->seeResponseContainsJson((new StatuslabelsTransformer)->transformStatuslabel($statuslabel));
|
||||
$I->seeResponseContainsJson($I->removeTimestamps((new StatuslabelsTransformer)->transformStatuslabel($statuslabel)));
|
||||
}
|
||||
|
||||
/** @test */
|
||||
|
|
|
@ -33,7 +33,7 @@ class ApiUsersCest
|
|||
$user = App\Models\User::orderByDesc('created_at')
|
||||
->withCount('assets', 'licenses', 'accessories', 'consumables')
|
||||
->take(10)->get()->shuffle()->first();
|
||||
$I->seeResponseContainsJson((new UsersTransformer)->transformUser($user));
|
||||
$I->seeResponseContainsJson($I->removeTimestamps((new UsersTransformer)->transformUser($user)));
|
||||
}
|
||||
|
||||
/** @test */
|
||||
|
@ -124,6 +124,7 @@ class ApiUsersCest
|
|||
// update
|
||||
$I->sendPATCH('/users/' . $user->id, $data);
|
||||
$I->seeResponseIsJson();
|
||||
|
||||
$I->seeResponseCodeIs(200);
|
||||
|
||||
$response = json_decode($I->grabResponse());
|
||||
|
|
Loading…
Add table
Reference in a new issue