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()); } }