More tests

Signed-off-by: snipe <snipe@snipe.net>
This commit is contained in:
snipe 2024-07-26 14:27:07 +01:00
parent ff6e6ef88c
commit 037cc4d098
6 changed files with 193 additions and 7 deletions

View file

@ -336,7 +336,7 @@ class AssetsController extends Controller
$status = Statuslabel::find($asset->status_id);
if($status->archived){
if ($status && $status->archived) {
$asset->assigned_to = null;
}
@ -355,14 +355,26 @@ class AssetsController extends Controller
}
// Update the asset data
$asset_tag = $request->input('asset_tags');
$serial = $request->input('serials');
$asset->serial = $request->input('serials');
if (is_array($request->input('serials'))) {
$asset->serial = $serial[1];
}
$asset->name = $request->input('name');
$asset->serial = $serial[1];
$asset->company_id = Company::getIdForCurrentUser($request->input('company_id'));
$asset->model_id = $request->input('model_id');
$asset->order_number = $request->input('order_number');
$asset->asset_tag = $asset_tag[1];
$asset_tags = $request->input('asset_tags');
$asset->asset_tag = $request->input('asset_tags');
if (is_array($request->input('asset_tags'))) {
$asset->asset_tag = $asset_tags[1];
}
$asset->notes = $request->input('notes');
$asset = $request->handleImages($asset);
@ -374,6 +386,7 @@ class AssetsController extends Controller
$model = AssetModel::find($request->get('model_id'));
if (($model) && ($model->fieldset)) {
foreach ($model->fieldset->fields as $field) {
if ($field->field_encrypted == '1') {
if (Gate::allows('admin')) {
if (is_array($request->input($field->db_column))) {

View file

@ -3,17 +3,65 @@
namespace Feature\Assets\Ui;
use App\Models\Asset;
use App\Models\AssetModel;
use App\Models\StatusLabel;
use App\Models\User;
use Tests\TestCase;
class EditAssetTest extends TestCase
{
public function testPermissionRequiredToViewLicense()
{
$asset = Asset::factory()->create();
$this->actingAs(User::factory()->create())
->get(route('hardware.edit', $asset))
->assertForbidden();
}
public function testPageCanBeAccessed(): void
{
$asset = Asset::factory()->create();
$user = User::factory()->editAssets()->create();
$response = $this->actingAs($user)->get(route('hardware.edit', $asset->id));
$response->assertStatus(200);
}
public function testAssetEditPostIsRedirectedIfRedirectSelectionIsIndex()
{
$asset = Asset::factory()->assignedToUser()->create();
$this->actingAs(User::factory()->viewAssets()->editAssets()->create())
->from(route('hardware.edit', $asset))
->put(route('hardware.update', $asset),
[
'redirect_option' => 'index',
'name' => 'New name',
'asset_tags' => 'New Asset Tag',
'status_id' => StatusLabel::factory()->create()->id,
'model_id' => AssetModel::factory()->create()->id,
])
->assertStatus(302)
->assertRedirect(route('hardware.index'));
$this->assertDatabaseHas('assets', ['asset_tag' => 'New Asset Tag']);
}
public function testAssetEditPostIsRedirectedIfRedirectSelectionIsItem()
{
$asset = Asset::factory()->create();
$this->actingAs(User::factory()->viewAssets()->editAssets()->create())
->from(route('hardware.edit', $asset))
->put(route('hardware.update', $asset), [
'redirect_option' => 'item',
'name' => 'New name',
'asset_tags' => 'New Asset Tag',
'status_id' => StatusLabel::factory()->create()->id,
'model_id' => AssetModel::factory()->create()->id,
])
->assertStatus(302)
->assertRedirect(route('hardware.show', ['hardware' => $asset->id]));
$this->assertDatabaseHas('assets', ['asset_tag' => 'New Asset Tag']);
}
}

View file

@ -196,4 +196,31 @@ class AssetCheckinTest extends TestCase
->assertSessionHas('error')
->assertRedirect(route('hardware.show', ['hardware' => $asset->id]));
}
public function testAssetCheckinPagePostIsRedirectedIfRedirectSelectionIsIndex()
{
$asset = Asset::factory()->assignedToUser()->create();
$this->actingAs(User::factory()->admin()->create())
->from(route('hardware.index'))
->post(route('hardware.checkin.store', $asset), [
'redirect_option' => 'index',
])
->assertStatus(302)
->assertRedirect(route('hardware.index'));
}
public function testAssetCheckinPagePostIsRedirectedIfRedirectSelectionIsItem()
{
$asset = Asset::factory()->assignedToUser()->create();
$this->actingAs(User::factory()->admin()->create())
->from(route('hardware.index'))
->post(route('hardware.checkin.store', $asset), [
'redirect_option' => 'item',
])
->assertStatus(302)
->assertSessionHasNoErrors()
->assertRedirect(route('hardware.show', ['hardware' => $asset->id]));
}
}

View file

@ -17,7 +17,8 @@ class ComponentCheckinTest extends TestCase
->assertForbidden();
}
public function testAssetCheckinPagePostIsRedirectedIfModelIsInvalid()
public function testComponentCheckinPagePostIsRedirectedIfRedirectSelectionIsIndex()
{
$component = Component::factory()->checkedOutToAsset()->create();
@ -31,7 +32,7 @@ class ComponentCheckinTest extends TestCase
->assertRedirect(route('components.index'));
}
public function testComponentCheckinPagePostIsRedirectedIfRedirectSelectioonGiven()
public function testComponentCheckinPagePostIsRedirectedIfRedirectSelectionIsItem()
{
$component = Component::factory()->checkedOutToAsset()->create();
@ -42,6 +43,7 @@ class ComponentCheckinTest extends TestCase
'checkin_qty' => 1,
])
->assertStatus(302)
->assertSessionHasNoErrors()
->assertRedirect(route('components.show', ['component' => $component->id]));
}

View file

@ -140,4 +140,51 @@ class AccessoryCheckoutTest extends TestCase
'Log entry either does not exist or there are more than expected'
);
}
public function testAccessoryCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex()
{
$accessory = Accessory::factory()->create();
$this->actingAs(User::factory()->admin()->create())
->from(route('accessories.index'))
->post(route('accessories.checkout.store', $accessory), [
'assigned_to' => User::factory()->create()->id,
'redirect_option' => 'index',
'assigned_qty' => 1,
])
->assertStatus(302)
->assertRedirect(route('accessories.index'));
}
public function testAccessoryCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem()
{
$accessory = Accessory::factory()->create();
$this->actingAs(User::factory()->admin()->create())
->from(route('accessories.index'))
->post(route('accessories.checkout.store' , $accessory), [
'assigned_to' => User::factory()->create()->id,
'redirect_option' => 'item',
'assigned_qty' => 1,
])
->assertStatus(302)
->assertSessionHasNoErrors()
->assertRedirect(route('accessories.show', ['accessory' => $accessory->id]));
}
public function testAccessoryCheckoutPagePostIsRedirectedIfRedirectSelectionIsTarget()
{
$user = User::factory()->create();
$accessory = Accessory::factory()->create();
$this->actingAs(User::factory()->admin()->create())
->from(route('accessories.index'))
->post(route('accessories.checkout.store' , $accessory), [
'assigned_to' => $user->id,
'redirect_option' => 'target',
'assigned_qty' => 1,
])
->assertStatus(302)
->assertRedirect(route('users.show', ['user' => $user]));
}
}

View file

@ -3,6 +3,8 @@
namespace Tests\Feature\Checkouts\Ui;
use App\Models\Actionlog;
use App\Models\Asset;
use App\Models\Component;
use App\Models\Consumable;
use App\Models\User;
use App\Notifications\CheckoutConsumableNotification;
@ -90,4 +92,51 @@ class ConsumableCheckoutTest extends TestCase
'Log entry either does not exist or there are more than expected'
);
}
public function testConsumableCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex()
{
$consumable = Consumable::factory()->create();
$this->actingAs(User::factory()->admin()->create())
->from(route('consumables.index'))
->post(route('consumables.checkout.store', $consumable), [
'assigned_to' => User::factory()->create()->id,
'redirect_option' => 'index',
'assigned_qty' => 1,
])
->assertStatus(302)
->assertRedirect(route('consumables.index'));
}
public function testConsumableCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem()
{
$consumable = Consumable::factory()->create();
$this->actingAs(User::factory()->admin()->create())
->from(route('consumables.index'))
->post(route('consumables.checkout.store' , $consumable), [
'assigned_to' => User::factory()->create()->id,
'redirect_option' => 'item',
'assigned_qty' => 1,
])
->assertStatus(302)
->assertRedirect(route('consumables.show', ['consumable' => $consumable->id]));
}
public function testConsumableCheckoutPagePostIsRedirectedIfRedirectSelectionIsTarget()
{
$user = User::factory()->create();
$consumable = Consumable::factory()->create();
$this->actingAs(User::factory()->admin()->create())
->from(route('components.index'))
->post(route('consumables.checkout.store' , $consumable), [
'assigned_to' => $user->id,
'redirect_option' => 'target',
'assigned_qty' => 1,
])
->assertStatus(302)
->assertRedirect(route('users.show', ['user' => $user]));
}
}