<?php use App\Models\Category; use Illuminate\Support\Facades\Hash; use Illuminate\Foundation\Testing\WithoutMiddleware; use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation\Testing\DatabaseTransactions; class CategoryTest extends BaseTest { /** * @var \UnitTester */ protected $tester; public function testFailsEmptyValidation() { // An Asset requires a name, a qty, and a category_id. $a = Category::create(); $this->assertFalse($a->isValid()); $fields = [ 'name' => 'name', 'category_type' => 'category type' ]; $errors = $a->getErrors(); foreach ($fields as $field => $fieldTitle) { $this->assertEquals($errors->get($field)[0], "The ${fieldTitle} field is required."); } } public function testACategoryCanHaveAssets() { $this->createValidAssetModel(); //This will seed various things to make the following work better. $category = $this->createValidCategory('asset-desktop-category'); $models = factory(App\Models\AssetModel::class, 5)->states('mbp-13-model')->create(['category_id' => $category->id]); $this->assertEquals(5, $category->models->count()); $this->assertCount(5, $category->models); $models->each(function($model) { // This is intentionally run twice to generate the ten imagined assets, done this way to keep it in sync with createValidAsset rather than using the factory directly. $this->createValidAsset(['model_id' => $model->id]); $this->createValidAsset(['model_id' => $model->id]); }); $this->assertEquals(10, $category->itemCount()); } public function testACategoryCanHaveAccessories() { $category = $this->createValidCategory('accessory-keyboard-category'); factory(App\Models\Accessory::class, 5)->states('apple-bt-keyboard')->create(['category_id' => $category->id]); $this->assertCount(5, $category->accessories); $this->assertEquals(5, $category->itemCount()); } public function testACategoryCanHaveConsumables() { $category = $this->createValidCategory('consumable-paper-category'); factory(App\Models\Consumable::class, 5)->states('cardstock')->create(['category_id' => $category->id]); $this->assertCount(5, $category->consumables); $this->assertEquals(5, $category->itemCount()); } public function testACategoryCanHaveComponents() { $category = $this->createValidCategory('component-ram-category'); factory(App\Models\Component::class, 5)->states('ram-crucial4')->create(['category_id' => $category->id]); $this->assertCount(5, $category->components); $this->assertEquals(5, $category->itemCount()); } }