Skip to content

Commit

Permalink
new test not quite working, almost there
Browse files Browse the repository at this point in the history
  • Loading branch information
spencerrlongg committed May 1, 2024
1 parent 39cc99c commit 6a7f3ec
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 5 deletions.
9 changes: 9 additions & 0 deletions database/factories/AssetFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,15 @@ public function hasEncryptedCustomField(CustomField $field = null)
});
}

public function hasMultipleCustomFields(array $fields = null): self
{
return $this->state(function () use ($fields) {
return [
'model_id' => AssetModel::factory()->hasMultipleCustomFields($fields),
];
});
}


/**
* This allows bypassing model level validation if you want to purposefully
Expand Down
9 changes: 9 additions & 0 deletions database/factories/AssetModelFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -439,4 +439,13 @@ public function hasEncryptedCustomField(CustomField $field = null)
];
});
}

public function hasMultipleCustomFields(array $fields = null)
{
return $this->state(function () use ($fields) {
return [
'fieldset_id' => CustomFieldset::factory()->hasMultipleCustomFields($fields),
];
});
}
}
21 changes: 21 additions & 0 deletions database/factories/CustomFieldsetFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,25 @@ public function hasEncryptedCustomField(CustomField $field = null)
$fieldset->fields()->attach($field, ['order' => '1', 'required' => false]);
});
}

public function hasMultipleCustomFields(array $fields = null): self
{
return $this->afterCreating(function (CustomFieldset $fieldset) {
if (empty($fields)) {
return $this->afterCreating(function (CustomFieldset $fieldset) {
$mac_address = CustomField::factory()->macAddress()->create();
$ram = CustomField::factory()->ram()->create();
$cpu = CustomField::factory()->cpu()->create();

$fieldset->fields()->attach($mac_address, ['order' => '1', 'required' => false]);
$fieldset->fields()->attach($ram, ['order' => '2', 'required' => false]);
$fieldset->fields()->attach($cpu, ['order' => '3', 'required' => false]);
});
} else {
foreach ($fields as $field) {
$fieldset->fields()->attach($field, ['order' => '1', 'required' => false]);
}
}
});
}
}
37 changes: 32 additions & 5 deletions tests/Feature/Assets/AssetsBulkEditTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
use App\Models\Asset;
use App\Models\AssetModel;
use App\Models\Company;
use App\Models\CustomField;
use App\Models\Statuslabel;
use App\Models\Supplier;
use App\Models\User;
use Carbon\Carbon;
use Tests\TestCase;

class AssetsBulkEditTest extends TestCase
Expand Down Expand Up @@ -44,7 +44,7 @@ public function testBulkEditAssetsAcceptsAllPossibleAttributes()
$id_array = $assets->pluck('id')->toArray();

// submits the ids and new values for each attribute
$response = $this->actingAs(User::factory()->editAssets()->create())->post(route('hardware/bulksave'), [
$this->actingAs(User::factory()->editAssets()->create())->post(route('hardware/bulksave'), [
'ids' => $id_array,
'purchase_date' => '2024-01-01',
'expected_checkin' => '2024-01-01',
Expand Down Expand Up @@ -73,12 +73,39 @@ public function testBulkEditAssetsAcceptsAllPossibleAttributes()
$this->assertEquals(7890, $asset->order_number);
$this->assertEquals(36, $asset->warranty_months);
$this->assertEquals('2025-01-01', $asset->next_audit_date->format('Y-m-d'));
// shouldn't requestable be cast as a boolean???
// shouldn't requestable be cast as a boolean??? it's not.
$this->assertEquals(1, $asset->requestable);
});
}

public function testBulkEditAssetsAcceptsAndUpdatesUnencryptedCustomFields()
{
$this->markIncompleteIfMySQL('Custom Fields tests do not work on MySQL');

$mac_address = CustomField::factory()->macAddress()->create();
$ram = CustomField::factory()->ram()->create();
$cpu = CustomField::factory()->cpu()->create();

$assets = Asset::factory()->laptopMbp()->count(10)->hasMultipleCustomFields([$mac_address, $ram, $cpu])->create([
$ram->db_column => 8,
$cpu->db_column => '2.1',
]);

$this->assertDatabaseHas('assets', [
'purchase_date' => '2024-01-01'
$id_array = $assets->pluck('id')->toArray();

// submits the ids and new values for each attribute
$asset = Asset::find(1);

$this->assertEquals(8, $asset->{$ram->db_column});
$this->actingAs(User::factory()->editAssets()->create())->post(route('hardware/bulksave'), [
'ids' => $id_array,
$ram->db_column => 16,
$cpu->db_column => '4.1',
]);

Asset::findMany($id_array)->each(function (Asset $asset) use ($ram, $cpu, $mac_address) {
$this->assertEquals(16, $asset->{$ram->db_column});
$this->assertEquals('4.1', $asset->{$ram->db_column});
});
}
}

0 comments on commit 6a7f3ec

Please sign in to comment.