mirror of
https://github.com/snipe/snipe-it.git
synced 2025-01-11 22:07:29 -08:00
Add tests for update accessory endpoint
This commit is contained in:
parent
a5be18bb14
commit
fff069824b
|
@ -3,11 +3,17 @@
|
|||
namespace Tests\Feature\Accessories\Api;
|
||||
|
||||
use App\Models\Accessory;
|
||||
use App\Models\Category;
|
||||
use App\Models\Company;
|
||||
use App\Models\Location;
|
||||
use App\Models\Manufacturer;
|
||||
use App\Models\Supplier;
|
||||
use App\Models\User;
|
||||
use Tests\Concerns\TestsFullMultipleCompaniesSupport;
|
||||
use Tests\Concerns\TestsPermissionsRequirement;
|
||||
use Tests\TestCase;
|
||||
|
||||
class UpdateAccessoryTest extends TestCase implements TestsPermissionsRequirement
|
||||
class UpdateAccessoryTest extends TestCase implements TestsFullMultipleCompaniesSupport, TestsPermissionsRequirement
|
||||
{
|
||||
public function testRequiresPermission()
|
||||
{
|
||||
|
@ -17,4 +23,84 @@ class UpdateAccessoryTest extends TestCase implements TestsPermissionsRequiremen
|
|||
->patchJson(route('api.accessories.update', $accessory))
|
||||
->assertForbidden();
|
||||
}
|
||||
|
||||
public function testAdheresToFullMultipleCompaniesSupportScoping()
|
||||
{
|
||||
[$companyA, $companyB] = Company::factory()->count(2)->create();
|
||||
|
||||
$accessoryA = Accessory::factory()->for($companyA)->create(['name' => 'A Name to Change']);
|
||||
$accessoryB = Accessory::factory()->for($companyB)->create(['name' => 'A Name to Change']);
|
||||
$accessoryC = Accessory::factory()->for($companyB)->create(['name' => 'A Name to Change']);
|
||||
|
||||
$superuser = User::factory()->superuser()->create();
|
||||
$userInCompanyA = $companyA->users()->save(User::factory()->editAccessories()->make());
|
||||
$userInCompanyB = $companyB->users()->save(User::factory()->editAccessories()->make());
|
||||
|
||||
$this->settings->enableMultipleFullCompanySupport();
|
||||
|
||||
$this->actingAsForApi($userInCompanyA)
|
||||
->patchJson(route('api.accessories.update', $accessoryB), ['name' => 'New Name'])
|
||||
->assertStatusMessageIs('error');
|
||||
|
||||
$this->actingAsForApi($userInCompanyB)
|
||||
->patchJson(route('api.accessories.update', $accessoryA), ['name' => 'New Name'])
|
||||
->assertStatusMessageIs('error');
|
||||
|
||||
$this->actingAsForApi($superuser)
|
||||
->patchJson(route('api.accessories.update', $accessoryC), ['name' => 'New Name'])
|
||||
->assertOk();
|
||||
|
||||
$this->assertEquals('A Name to Change', $accessoryA->fresh()->name);
|
||||
$this->assertEquals('A Name to Change', $accessoryB->fresh()->name);
|
||||
$this->assertEquals('New Name', $accessoryC->fresh()->name);
|
||||
}
|
||||
|
||||
public function testCanUpdateAccessoryViaPatch()
|
||||
{
|
||||
[$categoryA, $categoryB] = Category::factory()->count(2)->create();
|
||||
[$companyA, $companyB] = Company::factory()->count(2)->create();
|
||||
[$locationA, $locationB] = Location::factory()->count(2)->create();
|
||||
[$manufacturerA, $manufacturerB] = Manufacturer::factory()->count(2)->create();
|
||||
[$supplierA, $supplierB] = Supplier::factory()->count(2)->create();
|
||||
|
||||
$accessory = Accessory::factory()->create([
|
||||
'name' => 'A Name to Change',
|
||||
'qty' => 5,
|
||||
'order_number' => 'A12345',
|
||||
'purchase_cost' => 99.99,
|
||||
'model_number' => 'ABC098',
|
||||
'category_id' => $categoryA->id,
|
||||
'company_id' => $companyA->id,
|
||||
'location_id' => $locationA->id,
|
||||
'manufacturer_id' => $manufacturerA->id,
|
||||
'supplier_id' => $supplierA->id,
|
||||
]);
|
||||
|
||||
$this->actingAsForApi(User::factory()->editAccessories()->create())
|
||||
->patchJson(route('api.accessories.update', $accessory), [
|
||||
'name' => 'A New Name',
|
||||
'qty' => 10,
|
||||
'order_number' => 'B54321',
|
||||
'purchase_cost' => 199.99,
|
||||
'model_number' => 'XYZ123',
|
||||
'category_id' => $categoryB->id,
|
||||
'company_id' => $companyB->id,
|
||||
'location_id' => $locationB->id,
|
||||
'manufacturer_id' => $manufacturerB->id,
|
||||
'supplier_id' => $supplierB->id,
|
||||
])
|
||||
->assertOk();
|
||||
|
||||
$accessory = $accessory->fresh();
|
||||
$this->assertEquals('A New Name', $accessory->name);
|
||||
$this->assertEquals(10, $accessory->qty);
|
||||
$this->assertEquals('B54321', $accessory->order_number);
|
||||
$this->assertEquals(199.99, $accessory->purchase_cost);
|
||||
$this->assertEquals('XYZ123', $accessory->model_number);
|
||||
$this->assertEquals($categoryB->id, $accessory->category_id);
|
||||
$this->assertEquals($companyB->id, $accessory->company_id);
|
||||
$this->assertEquals($locationB->id, $accessory->location_id);
|
||||
$this->assertEquals($manufacturerB->id, $accessory->manufacturer_id);
|
||||
$this->assertEquals($supplierB->id, $accessory->supplier_id);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue