diff --git a/app/Http/Controllers/Api/CategoriesController.php b/app/Http/Controllers/Api/CategoriesController.php index e772bec4df..319b51dd11 100644 --- a/app/Http/Controllers/Api/CategoriesController.php +++ b/app/Http/Controllers/Api/CategoriesController.php @@ -39,6 +39,7 @@ class CategoriesController extends Controller 'components_count', 'licenses_count', 'image', + 'notes', ]; $categories = Category::select([ @@ -52,6 +53,7 @@ class CategoriesController extends Controller 'require_acceptance', 'checkin_email', 'image', + 'notes', ]) ->with('adminuser') ->withCount('accessories as accessories_count', 'consumables as consumables_count', 'components as components_count', 'licenses as licenses_count'); diff --git a/app/Http/Controllers/Api/CompaniesController.php b/app/Http/Controllers/Api/CompaniesController.php index 5ba342db33..2f1f0740b3 100644 --- a/app/Http/Controllers/Api/CompaniesController.php +++ b/app/Http/Controllers/Api/CompaniesController.php @@ -38,6 +38,7 @@ class CompaniesController extends Controller 'accessories_count', 'consumables_count', 'components_count', + 'notes', ]; $companies = Company::withCount(['assets as assets_count' => function ($query) { diff --git a/app/Http/Controllers/Api/DepartmentsController.php b/app/Http/Controllers/Api/DepartmentsController.php index a7b30a10fc..167d5cbc2a 100644 --- a/app/Http/Controllers/Api/DepartmentsController.php +++ b/app/Http/Controllers/Api/DepartmentsController.php @@ -23,7 +23,7 @@ class DepartmentsController extends Controller public function index(Request $request) : JsonResponse | array { $this->authorize('view', Department::class); - $allowed_columns = ['id', 'name', 'image', 'users_count']; + $allowed_columns = ['id', 'name', 'image', 'users_count', 'notes']; $departments = Department::select( 'departments.id', @@ -35,7 +35,8 @@ class DepartmentsController extends Controller 'departments.manager_id', 'departments.created_at', 'departments.updated_at', - 'departments.image' + 'departments.image', + 'departments.notes', )->with('users')->with('location')->with('manager')->with('company')->withCount('users as users_count'); if ($request->filled('search')) { diff --git a/app/Http/Controllers/Api/GroupsController.php b/app/Http/Controllers/Api/GroupsController.php index 81217ce8db..5f2e222c70 100644 --- a/app/Http/Controllers/Api/GroupsController.php +++ b/app/Http/Controllers/Api/GroupsController.php @@ -24,7 +24,7 @@ class GroupsController extends Controller $this->authorize('view', Group::class); - $groups = Group::select('id', 'name', 'permissions', 'created_at', 'updated_at', 'created_by')->with('adminuser')->withCount('users as users_count'); + $groups = Group::select('id', 'name', 'permissions', 'notes', 'created_at', 'updated_at', 'created_by')->with('adminuser')->withCount('users as users_count'); if ($request->filled('search')) { $groups = $groups->TextSearch($request->input('search')); @@ -81,6 +81,7 @@ class GroupsController extends Controller $group->name = $request->input('name'); $group->created_by = auth()->id(); + $group->notes = $request->input('notes'); $group->permissions = json_encode($request->input('permissions', $groupPermissions)); if ($group->save()) { @@ -118,6 +119,7 @@ class GroupsController extends Controller $group = Group::findOrFail($id); $group->name = $request->input('name'); + $group->notes = $request->input('notes'); $group->permissions = $request->input('permissions'); // Todo - some JSON validation stuff here if ($group->save()) { diff --git a/app/Http/Controllers/Api/LocationsController.php b/app/Http/Controllers/Api/LocationsController.php index f4f788d563..53990e9a97 100644 --- a/app/Http/Controllers/Api/LocationsController.php +++ b/app/Http/Controllers/Api/LocationsController.php @@ -53,6 +53,7 @@ class LocationsController extends Controller 'updated_at', 'users_count', 'zip', + 'notes', ]; $locations = Location::with('parent', 'manager', 'children')->select([ @@ -73,6 +74,7 @@ class LocationsController extends Controller 'locations.image', 'locations.ldap_ou', 'locations.currency', + 'locations.notes', ]) ->withCount('assignedAssets as assigned_assets_count') ->withCount('assets as assets_count') @@ -190,6 +192,7 @@ class LocationsController extends Controller 'locations.updated_at', 'locations.image', 'locations.currency', + 'locations.notes', ]) ->withCount('assignedAssets as assigned_assets_count') ->withCount('assets as assets_count') diff --git a/app/Http/Controllers/Api/ManufacturersController.php b/app/Http/Controllers/Api/ManufacturersController.php index f716fbbf7f..652fad1cfc 100644 --- a/app/Http/Controllers/Api/ManufacturersController.php +++ b/app/Http/Controllers/Api/ManufacturersController.php @@ -39,7 +39,8 @@ class ManufacturersController extends Controller 'assets_count', 'consumables_count', 'components_count', - 'licenses_count' + 'licenses_count', + 'notes', ]; $manufacturers = Manufacturer::select([ @@ -55,6 +56,7 @@ class ManufacturersController extends Controller 'updated_at', 'image', 'deleted_at', + 'notes', ]) ->with('adminuser') ->withCount('assets as assets_count') diff --git a/app/Http/Controllers/CategoriesController.php b/app/Http/Controllers/CategoriesController.php index 93b3d4a0d0..1b42037f3b 100755 --- a/app/Http/Controllers/CategoriesController.php +++ b/app/Http/Controllers/CategoriesController.php @@ -69,6 +69,7 @@ class CategoriesController extends Controller $category->use_default_eula = $request->input('use_default_eula', '0'); $category->require_acceptance = $request->input('require_acceptance', '0'); $category->checkin_email = $request->input('checkin_email', '0'); + $category->notes = $request->input('notes'); $category->created_by = auth()->id(); $category = $request->handleImages($category); @@ -134,6 +135,7 @@ class CategoriesController extends Controller $category->use_default_eula = $request->input('use_default_eula', '0'); $category->require_acceptance = $request->input('require_acceptance', '0'); $category->checkin_email = $request->input('checkin_email', '0'); + $category->notes = $request->input('notes'); $category = $request->handleImages($category); diff --git a/app/Http/Controllers/CompaniesController.php b/app/Http/Controllers/CompaniesController.php index 238ffc85f5..12655cb2a5 100644 --- a/app/Http/Controllers/CompaniesController.php +++ b/app/Http/Controllers/CompaniesController.php @@ -60,6 +60,7 @@ final class CompaniesController extends Controller $company->phone = $request->input('phone'); $company->fax = $request->input('fax'); $company->email = $request->input('email'); + $company->notes = $request->input('notes'); $company->created_by = auth()->id(); $company = $request->handleImages($company); @@ -111,6 +112,7 @@ final class CompaniesController extends Controller $company->phone = $request->input('phone'); $company->fax = $request->input('fax'); $company->email = $request->input('email'); + $company->notes = $request->input('notes'); $company = $request->handleImages($company); diff --git a/app/Http/Controllers/DepartmentsController.php b/app/Http/Controllers/DepartmentsController.php index 287315ef2c..fe90162c48 100644 --- a/app/Http/Controllers/DepartmentsController.php +++ b/app/Http/Controllers/DepartmentsController.php @@ -55,6 +55,7 @@ class DepartmentsController extends Controller $department->manager_id = ($request->filled('manager_id') ? $request->input('manager_id') : null); $department->location_id = ($request->filled('location_id') ? $request->input('location_id') : null); $department->company_id = ($request->filled('company_id') ? $request->input('company_id') : null); + $department->notes = $request->input('notes'); $department = $request->handleImages($department); if ($department->save()) { @@ -171,7 +172,7 @@ class DepartmentsController extends Controller $department->company_id = ($request->filled('company_id') ? $request->input('company_id') : null); $department->phone = $request->input('phone'); $department->fax = $request->input('fax'); - + $department->notes = $request->input('notes'); $department = $request->handleImages($department); if ($department->save()) { diff --git a/app/Http/Controllers/GroupsController.php b/app/Http/Controllers/GroupsController.php index a85cabf246..6aaf58ebde 100755 --- a/app/Http/Controllers/GroupsController.php +++ b/app/Http/Controllers/GroupsController.php @@ -62,6 +62,7 @@ class GroupsController extends Controller $group->name = $request->input('name'); $group->permissions = json_encode($request->input('permission')); $group->created_by = auth()->id(); + $group->notes = $request->input('notes'); if ($group->save()) { return redirect()->route('groups.index')->with('success', trans('admin/groups/message.success.create')); @@ -108,6 +109,7 @@ class GroupsController extends Controller } $group->name = $request->input('name'); $group->permissions = json_encode($request->input('permission')); + $group->notes = $request->input('notes'); if (! config('app.lock_passwords')) { if ($group->save()) { diff --git a/app/Http/Controllers/LocationsController.php b/app/Http/Controllers/LocationsController.php index 75abce97ed..e250e5cfa5 100755 --- a/app/Http/Controllers/LocationsController.php +++ b/app/Http/Controllers/LocationsController.php @@ -78,6 +78,7 @@ class LocationsController extends Controller $location->created_by = auth()->id(); $location->phone = request('phone'); $location->fax = request('fax'); + $location->notes = $request->input('notes'); $location = $request->handleImages($location); @@ -138,6 +139,7 @@ class LocationsController extends Controller $location->fax = request('fax'); $location->ldap_ou = $request->input('ldap_ou'); $location->manager_id = $request->input('manager_id'); + $location->notes = $request->input('notes'); $location = $request->handleImages($location); diff --git a/app/Http/Controllers/ManufacturersController.php b/app/Http/Controllers/ManufacturersController.php index 68124f644c..eb8c80d877 100755 --- a/app/Http/Controllers/ManufacturersController.php +++ b/app/Http/Controllers/ManufacturersController.php @@ -67,6 +67,7 @@ class ManufacturersController extends Controller $manufacturer->warranty_lookup_url = $request->input('warranty_lookup_url'); $manufacturer->support_phone = $request->input('support_phone'); $manufacturer->support_email = $request->input('support_email'); + $manufacturer->notes = $request->input('notes'); $manufacturer = $request->handleImages($manufacturer); if ($manufacturer->save()) { @@ -123,6 +124,7 @@ class ManufacturersController extends Controller $manufacturer->warranty_lookup_url = $request->input('warranty_lookup_url'); $manufacturer->support_phone = $request->input('support_phone'); $manufacturer->support_email = $request->input('support_email'); + $manufacturer->notes = $request->input('notes'); // Set the model's image property to null if the image is being deleted if ($request->input('image_delete') == 1) { diff --git a/app/Http/Transformers/CategoriesTransformer.php b/app/Http/Transformers/CategoriesTransformer.php index 2dd82b3b70..0d1834649d 100644 --- a/app/Http/Transformers/CategoriesTransformer.php +++ b/app/Http/Transformers/CategoriesTransformer.php @@ -66,6 +66,7 @@ class CategoriesTransformer 'id' => (int) $category->adminuser->id, 'name'=> e($category->adminuser->present()->fullName()), ] : null, + 'notes' => Helper::parseEscapedMarkedownInline($category->notes), 'created_at' => Helper::getFormattedDateObject($category->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($category->updated_at, 'datetime'), ]; diff --git a/app/Http/Transformers/CompaniesTransformer.php b/app/Http/Transformers/CompaniesTransformer.php index 530df32044..8ca5344de6 100644 --- a/app/Http/Transformers/CompaniesTransformer.php +++ b/app/Http/Transformers/CompaniesTransformer.php @@ -40,6 +40,7 @@ class CompaniesTransformer 'id' => (int) $company->adminuser->id, 'name'=> e($company->adminuser->present()->fullName()), ] : null, + 'notes' => Helper::parseEscapedMarkedownInline($company->notes), 'created_at' => Helper::getFormattedDateObject($company->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($company->updated_at, 'datetime'), ]; diff --git a/app/Http/Transformers/DepartmentsTransformer.php b/app/Http/Transformers/DepartmentsTransformer.php index 546cedf04f..3d1e4c6f90 100644 --- a/app/Http/Transformers/DepartmentsTransformer.php +++ b/app/Http/Transformers/DepartmentsTransformer.php @@ -44,6 +44,7 @@ class DepartmentsTransformer 'name' => e($department->location->name), ] : null, 'users_count' => e($department->users_count), + 'notes' => Helper::parseEscapedMarkedownInline($department->notes), 'created_at' => Helper::getFormattedDateObject($department->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($department->updated_at, 'datetime'), ]; diff --git a/app/Http/Transformers/GroupsTransformer.php b/app/Http/Transformers/GroupsTransformer.php index 03e96d5622..920c856b1a 100644 --- a/app/Http/Transformers/GroupsTransformer.php +++ b/app/Http/Transformers/GroupsTransformer.php @@ -26,6 +26,7 @@ class GroupsTransformer 'name' => e($group->name), 'permissions' => json_decode($group->permissions), 'users_count' => (int) $group->users_count, + 'notes' => Helper::parseEscapedMarkedownInline($group->notes), 'created_by' => ($group->adminuser) ? [ 'id' => (int) $group->adminuser->id, 'name'=> e($group->adminuser->present()->fullName()), diff --git a/app/Http/Transformers/LocationsTransformer.php b/app/Http/Transformers/LocationsTransformer.php index d6ba2f01b2..331f3839b2 100644 --- a/app/Http/Transformers/LocationsTransformer.php +++ b/app/Http/Transformers/LocationsTransformer.php @@ -55,6 +55,7 @@ class LocationsTransformer 'users_count' => (int) $location->users_count, 'currency' => ($location->currency) ? e($location->currency) : null, 'ldap_ou' => ($location->ldap_ou) ? e($location->ldap_ou) : null, + 'notes' => Helper::parseEscapedMarkedownInline($location->notes), 'created_at' => Helper::getFormattedDateObject($location->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($location->updated_at, 'datetime'), 'parent' => ($location->parent) ? [ diff --git a/app/Http/Transformers/ManufacturersTransformer.php b/app/Http/Transformers/ManufacturersTransformer.php index d6954c1d24..cf17eb7764 100644 --- a/app/Http/Transformers/ManufacturersTransformer.php +++ b/app/Http/Transformers/ManufacturersTransformer.php @@ -37,6 +37,7 @@ class ManufacturersTransformer 'consumables_count' => (int) $manufacturer->consumables_count, 'accessories_count' => (int) $manufacturer->accessories_count, 'components_count' => (int) $manufacturer->components_count, + 'notes' => Helper::parseEscapedMarkedownInline($manufacturer->notes), 'created_by' => ($manufacturer->adminuser) ? [ 'id' => (int) $manufacturer->adminuser->id, 'name'=> e($manufacturer->adminuser->present()->fullName()), diff --git a/app/Importer/LocationImporter.php b/app/Importer/LocationImporter.php index 5a87d069e5..1fcef6625d 100644 --- a/app/Importer/LocationImporter.php +++ b/app/Importer/LocationImporter.php @@ -74,6 +74,8 @@ class LocationImporter extends ItemImporter $this->item['ldap_ou'] = trim($this->findCsvMatch($row, 'ldap_ou')); $this->item['manager'] = trim($this->findCsvMatch($row, 'manager')); $this->item['manager_username'] = trim($this->findCsvMatch($row, 'manager_username')); + $this->item['notes'] = trim($this->findCsvMatch($row, 'notes')); + if ($this->findCsvMatch($row, 'parent_location')) { $this->item['parent_id'] = $this->createOrFetchLocation(trim($this->findCsvMatch($row, 'parent_location'))); diff --git a/app/Livewire/Importer.php b/app/Livewire/Importer.php index aee6b852d4..eea319a400 100644 --- a/app/Livewire/Importer.php +++ b/app/Livewire/Importer.php @@ -342,6 +342,7 @@ class Importer extends Component 'manager_username' => trans('general.importer.manager_username'), 'manager' => trans('general.importer.manager_full_name'), 'parent_location' => trans('admin/locations/table.parent'), + 'notes' => trans('general.notes'), ]; $this->assetmodels_fields = [ diff --git a/app/Models/Category.php b/app/Models/Category.php index 5965404f59..cfa83328ab 100755 --- a/app/Models/Category.php +++ b/app/Models/Category.php @@ -71,6 +71,7 @@ class Category extends SnipeModel 'require_acceptance', 'use_default_eula', 'created_by', + 'notes', ]; use Searchable; @@ -80,7 +81,7 @@ class Category extends SnipeModel * * @var array */ - protected $searchableAttributes = ['name', 'category_type']; + protected $searchableAttributes = ['name', 'category_type', 'notes']; /** * The relations and their attributes that should be included when searching the model. diff --git a/app/Models/Group.php b/app/Models/Group.php index 7278152df9..ef60e6737c 100755 --- a/app/Models/Group.php +++ b/app/Models/Group.php @@ -18,7 +18,8 @@ class Group extends SnipeModel protected $fillable = [ 'name', - 'permissions' + 'permissions', + 'notes', ]; /** @@ -37,7 +38,7 @@ class Group extends SnipeModel * * @var array */ - protected $searchableAttributes = ['name', 'created_at']; + protected $searchableAttributes = ['name', 'created_at', 'notes']; /** * The relations and their attributes that should be included when searching the model. diff --git a/app/Models/Location.php b/app/Models/Location.php index f146d37c66..63cb2de39d 100755 --- a/app/Models/Location.php +++ b/app/Models/Location.php @@ -72,6 +72,7 @@ class Location extends SnipeModel 'currency', 'manager_id', 'image', + 'notes', ]; protected $hidden = ['user_id']; @@ -82,7 +83,7 @@ class Location extends SnipeModel * * @var array */ - protected $searchableAttributes = ['name', 'address', 'city', 'state', 'zip', 'created_at', 'ldap_ou', 'phone', 'fax']; + protected $searchableAttributes = ['name', 'address', 'city', 'state', 'zip', 'created_at', 'ldap_ou', 'phone', 'fax', 'notes']; /** * The relations and their attributes that should be included when searching the model. diff --git a/app/Models/Manufacturer.php b/app/Models/Manufacturer.php index 1b31f496d3..6d7b010677 100755 --- a/app/Models/Manufacturer.php +++ b/app/Models/Manufacturer.php @@ -53,6 +53,7 @@ class Manufacturer extends SnipeModel 'support_url', 'url', 'warranty_lookup_url', + 'notes', ]; use Searchable; @@ -62,7 +63,7 @@ class Manufacturer extends SnipeModel * * @var array */ - protected $searchableAttributes = ['name', 'created_at']; + protected $searchableAttributes = ['name', 'created_at', 'notes']; /** * The relations and their attributes that should be included when searching the model. diff --git a/app/Presenters/CategoryPresenter.php b/app/Presenters/CategoryPresenter.php index f551c0ba1b..d4a9f01a05 100644 --- a/app/Presenters/CategoryPresenter.php +++ b/app/Presenters/CategoryPresenter.php @@ -77,7 +77,13 @@ class CategoryPresenter extends Presenter "title" => trans('admin/categories/general.use_default_eula_column'), 'visible' => true, "formatter" => 'trueFalseFormatter', - ],[ + ], [ + 'field' => 'notes', + 'searchable' => true, + 'sortable' => true, + 'visible' => false, + 'title' => trans('general.notes'), + ], [ 'field' => 'created_by', 'searchable' => false, 'sortable' => true, diff --git a/app/Presenters/CompanyPresenter.php b/app/Presenters/CompanyPresenter.php index 6f9ece2141..fb86166092 100644 --- a/app/Presenters/CompanyPresenter.php +++ b/app/Presenters/CompanyPresenter.php @@ -105,7 +105,13 @@ class CompanyPresenter extends Presenter 'title' => trans('general.components'), 'visible' => true, 'class' => 'css-component', - ],[ + ], [ + 'field' => 'notes', + 'searchable' => true, + 'sortable' => true, + 'visible' => false, + 'title' => trans('general.notes'), + ], [ 'field' => 'created_by', 'searchable' => false, 'sortable' => true, diff --git a/app/Presenters/LocationPresenter.php b/app/Presenters/LocationPresenter.php index af910bfdc1..9283824a28 100644 --- a/app/Presenters/LocationPresenter.php +++ b/app/Presenters/LocationPresenter.php @@ -184,6 +184,12 @@ class LocationPresenter extends Presenter 'title' => trans('admin/users/table.manager'), 'visible' => false, 'formatter' => 'usersLinkObjFormatter', + ], [ + 'field' => 'notes', + 'searchable' => true, + 'sortable' => true, + 'visible' => false, + 'title' => trans('general.notes'), ], [ 'field' => 'created_at', 'searchable' => true, diff --git a/config/version.php b/config/version.php index 05925848b5..d0f4c480e6 100644 --- a/config/version.php +++ b/config/version.php @@ -6,5 +6,5 @@ return array ( 'prerelease_version' => '', 'hash_version' => 'gfb857ccf5', 'full_hash' => 'v7.1.16-510-gfb857ccf5', - 'branch' => 'master', + 'branch' => 'develop', ); \ No newline at end of file diff --git a/database/factories/CategoryFactory.php b/database/factories/CategoryFactory.php index 540dcb3085..9897b396c1 100644 --- a/database/factories/CategoryFactory.php +++ b/database/factories/CategoryFactory.php @@ -30,6 +30,7 @@ class CategoryFactory extends Factory 'require_acceptance' => false, 'use_default_eula' => $this->faker->boolean(), 'created_by' => User::factory()->superuser(), + 'notes' => 'Created by DB seeder', ]; } diff --git a/database/factories/CompanyFactory.php b/database/factories/CompanyFactory.php index 5f1ac0c98a..12195d78a5 100644 --- a/database/factories/CompanyFactory.php +++ b/database/factories/CompanyFactory.php @@ -24,6 +24,7 @@ class CompanyFactory extends Factory return [ 'name' => $this->faker->unique()->company(), 'created_by' => 1, + 'notes' => 'Created by DB seeder', ]; } } diff --git a/database/factories/DepartmentFactory.php b/database/factories/DepartmentFactory.php index 011a632669..7e6c2f0025 100644 --- a/database/factories/DepartmentFactory.php +++ b/database/factories/DepartmentFactory.php @@ -27,6 +27,7 @@ class DepartmentFactory extends Factory 'name' => $this->faker->unique()->word() . ' Department', 'created_by' => User::factory()->superuser(), 'location_id' => Location::factory(), + 'notes' => 'Created by DB seeder', ]; } diff --git a/database/factories/GroupFactory.php b/database/factories/GroupFactory.php index 1c6eaa8125..fecf8239bb 100644 --- a/database/factories/GroupFactory.php +++ b/database/factories/GroupFactory.php @@ -24,6 +24,7 @@ class GroupFactory extends Factory return [ 'name' => $this->faker->name(), 'permissions' => json_encode([]), + 'notes' => 'Created by DB seeder', ]; } } diff --git a/database/factories/LocationFactory.php b/database/factories/LocationFactory.php index 3aa0577bd8..3d0b444f70 100644 --- a/database/factories/LocationFactory.php +++ b/database/factories/LocationFactory.php @@ -23,6 +23,7 @@ class LocationFactory extends Factory 'currency' => $this->faker->currencyCode(), 'zip' => $this->faker->postcode(), 'image' => rand(1, 9).'.jpg', + 'notes' => 'Created by DB seeder', ]; } diff --git a/database/factories/ManufacturerFactory.php b/database/factories/ManufacturerFactory.php index 47d4f672f3..a8d6208d7e 100644 --- a/database/factories/ManufacturerFactory.php +++ b/database/factories/ManufacturerFactory.php @@ -28,6 +28,7 @@ class ManufacturerFactory extends Factory 'support_phone' => $this->faker->phoneNumber(), 'url' => $this->faker->url(), 'support_email' => $this->faker->safeEmail(), + 'notes' => 'Created by DB seeder', ]; } diff --git a/database/migrations/2025_02_10_230155_add_notes_to_locations_companies_categories_manufacturers_groups.php b/database/migrations/2025_02_10_230155_add_notes_to_locations_companies_categories_manufacturers_groups.php new file mode 100644 index 0000000000..bbffc50305 --- /dev/null +++ b/database/migrations/2025_02_10_230155_add_notes_to_locations_companies_categories_manufacturers_groups.php @@ -0,0 +1,60 @@ +text('notes')->nullable()->default(null); + }); + + Schema::table('companies', function (Blueprint $table) { + $table->text('notes')->nullable()->default(null); + }); + + Schema::table('categories', function (Blueprint $table) { + $table->text('notes')->nullable()->default(null); + }); + + Schema::table('manufacturers', function (Blueprint $table) { + $table->text('notes')->nullable()->default(null); + }); + + Schema::table('permission_groups', function (Blueprint $table) { + $table->text('notes')->nullable()->default(null); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('locations', function (Blueprint $table) { + $table->dropColumn('notes'); + }); + + Schema::table('companies', function (Blueprint $table) { + $table->dropColumn('notes'); + }); + + Schema::table('categories', function (Blueprint $table) { + $table->dropColumn('notes'); + }); + + Schema::table('manufacturers', function (Blueprint $table) { + $table->dropColumn('notes'); + }); + + Schema::table('permission_groups', function (Blueprint $table) { + $table->dropColumn('notes'); + }); + } +}; diff --git a/resources/lang/en-US/general.php b/resources/lang/en-US/general.php index 77670b5a7e..cf344273be 100644 --- a/resources/lang/en-US/general.php +++ b/resources/lang/en-US/general.php @@ -561,6 +561,7 @@ return [ 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', ], + 'more_info' => 'More Info', 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', 'whoops' => 'Whoops!', @@ -577,4 +578,9 @@ return [ 'user_managed_passwords_disallow' => 'Disallow users from managing their own passwords', 'user_managed_passwords_allow' => 'Allow users to manage their own passwords', +// Add form placeholders here + 'placeholders' => [ + 'notes' => 'Add a note', + ], + ]; diff --git a/resources/views/categories/edit.blade.php b/resources/views/categories/edit.blade.php index 1ef3b7aa6a..96ef8e08a8 100755 --- a/resources/views/categories/edit.blade.php +++ b/resources/views/categories/edit.blade.php @@ -33,6 +33,21 @@ @include ('partials.forms.edit.image-upload', ['image_path' => app('categories_upload_path')]) +
+ +
+ + {!! $errors->first('notes', '') !!} +
+
+ @stop diff --git a/resources/views/companies/edit.blade.php b/resources/views/companies/edit.blade.php index 60d5f74ccb..d6b9cf9afd 100644 --- a/resources/views/companies/edit.blade.php +++ b/resources/views/companies/edit.blade.php @@ -14,4 +14,20 @@ @include ('partials.forms.edit.email') @include ('partials.forms.edit.image-upload', ['image_path' => app('companies_upload_path')]) +
+ +
+ + + +
+
+ @stop diff --git a/resources/views/departments/edit.blade.php b/resources/views/departments/edit.blade.php index c1a2b38d56..05d9b49e4c 100644 --- a/resources/views/departments/edit.blade.php +++ b/resources/views/departments/edit.blade.php @@ -26,6 +26,20 @@ @include ('partials.forms.edit.location-select', ['translated_name' => trans('general.location'), 'fieldname' => 'location_id']) @include ('partials.forms.edit.image-upload', ['image_path' => app('departments_upload_path')]) +
+ +
+ + {!! $errors->first('notes', '') !!} +
+
@stop diff --git a/resources/views/departments/index.blade.php b/resources/views/departments/index.blade.php index aa9d09e660..d05d5c9d75 100644 --- a/resources/views/departments/index.blade.php +++ b/resources/views/departments/index.blade.php @@ -43,6 +43,7 @@ {{ trans('admin/departments/table.manager') }} {{ trans('general.users') }} {{ trans('admin/departments/table.location') }} + {{ trans('general.notes') }} {{ trans('table.actions') }} diff --git a/resources/views/groups/edit.blade.php b/resources/views/groups/edit.blade.php index bd6bd85d1c..4c387f73ef 100755 --- a/resources/views/groups/edit.blade.php +++ b/resources/views/groups/edit.blade.php @@ -54,12 +54,29 @@ @section('inputFields')
- -
+ +
{!! $errors->first('name', '') !!}
+ +
+ +
+ + + {!! $errors->first('notes', '') !!} +
+
+
diff --git a/resources/views/locations/edit.blade.php b/resources/views/locations/edit.blade.php index 4b4e655a52..004053d8ab 100755 --- a/resources/views/locations/edit.blade.php +++ b/resources/views/locations/edit.blade.php @@ -57,6 +57,23 @@ @endif + @include ('partials.forms.edit.image-upload', ['image_path' => app('locations_upload_path')]) + +
+ +
+ + {!! $errors->first('notes', '') !!} +
+
+ @stop diff --git a/resources/views/manufacturers/edit.blade.php b/resources/views/manufacturers/edit.blade.php index b5429e5f34..000fd3a8f6 100755 --- a/resources/views/manufacturers/edit.blade.php +++ b/resources/views/manufacturers/edit.blade.php @@ -63,6 +63,21 @@ @include ('partials.forms.edit.image-upload', ['image_path' => app('manufacturers_upload_path')]) +
+ +
+ + {!! $errors->first('notes', '') !!} +
+
+ @stop diff --git a/resources/views/partials/forms/edit/notes.blade.php b/resources/views/partials/forms/edit/notes.blade.php index f6b08ea1aa..5f82616c2c 100644 --- a/resources/views/partials/forms/edit/notes.blade.php +++ b/resources/views/partials/forms/edit/notes.blade.php @@ -1,6 +1,6 @@
- +
{!! $errors->first('notes', '') !!} diff --git a/tests/Feature/Categories/Api/CreateCategoriesTest.php b/tests/Feature/Categories/Api/CreateCategoriesTest.php index fc464242af..2a4a0661a6 100644 --- a/tests/Feature/Categories/Api/CreateCategoriesTest.php +++ b/tests/Feature/Categories/Api/CreateCategoriesTest.php @@ -27,6 +27,7 @@ class CreateCategoriesTest extends TestCase 'name' => 'Test Category', 'eula_text' => 'Test EULA', 'category_type' => 'accessory', + 'notes' => 'Test Note', ]) ->assertOk() ->assertStatusMessageIs('success') @@ -38,6 +39,7 @@ class CreateCategoriesTest extends TestCase $category = Category::find($response['payload']['id']); $this->assertEquals('Test Category', $category->name); $this->assertEquals('Test EULA', $category->eula_text); + $this->assertEquals('Test Note', $category->notes); $this->assertEquals('accessory', $category->category_type); } diff --git a/tests/Feature/Categories/Api/UpdateCategoriesTest.php b/tests/Feature/Categories/Api/UpdateCategoriesTest.php index 1a784c1179..6d6bc8da10 100644 --- a/tests/Feature/Categories/Api/UpdateCategoriesTest.php +++ b/tests/Feature/Categories/Api/UpdateCategoriesTest.php @@ -17,6 +17,7 @@ class UpdateCategoriesTest extends TestCase ->patchJson(route('api.categories.update', $category), [ 'name' => 'Test Category', 'eula_text' => 'Test EULA', + 'notes' => 'Test Note', ]) ->assertOk() ->assertStatusMessageIs('success') @@ -27,6 +28,7 @@ class UpdateCategoriesTest extends TestCase $category->refresh(); $this->assertEquals('Test Category', $category->name, 'Name was not updated'); $this->assertEquals('Test EULA', $category->eula_text, 'EULA was not updated'); + $this->assertEquals('Test Note', $category->notes, 'Note was not updated'); } @@ -39,6 +41,7 @@ class UpdateCategoriesTest extends TestCase 'name' => 'Test Category', 'eula_text' => 'Test EULA', 'category_type' => 'accessory', + 'note' => 'Test Note', ]) ->assertOk() ->assertStatusMessageIs('error') @@ -48,6 +51,7 @@ class UpdateCategoriesTest extends TestCase $category->refresh(); $this->assertNotEquals('Test Category', $category->name, 'Name was not updated'); $this->assertNotEquals('Test EULA', $category->eula_text, 'EULA was not updated'); + $this->assertNotEquals('Test Note', $category->notes, 'Note was not updated'); $this->assertNotEquals('accessory', $category->category_type, 'EULA was not updated'); } diff --git a/tests/Feature/Categories/Ui/CreateCategoriesTest.php b/tests/Feature/Categories/Ui/CreateCategoriesTest.php index 45e821d9d9..694b61c613 100644 --- a/tests/Feature/Categories/Ui/CreateCategoriesTest.php +++ b/tests/Feature/Categories/Ui/CreateCategoriesTest.php @@ -33,11 +33,12 @@ class CreateCategoriesTest extends TestCase $this->actingAs(User::factory()->superuser()->create()) ->post(route('categories.store'), [ 'name' => 'Test Category', - 'category_type' => 'asset' + 'category_type' => 'asset', + 'notes' => 'Test Note', ]) ->assertRedirect(route('categories.index')); - $this->assertTrue(Category::where('name', 'Test Category')->exists()); + $this->assertTrue(Category::where('name', 'Test Category')->where('notes', 'Test Note')->exists()); } public function testUserCannotCreateCategoriesWithInvalidType() @@ -48,7 +49,7 @@ class CreateCategoriesTest extends TestCase ->from(route('categories.create')) ->post(route('categories.store'), [ 'name' => 'Test Category', - 'category_type' => 'invalid' + 'category_type' => 'invalid', ]) ->assertRedirect(route('categories.create')); diff --git a/tests/Feature/Categories/Ui/UpdateCategoriesTest.php b/tests/Feature/Categories/Ui/UpdateCategoriesTest.php index 901b779582..7e61097793 100644 --- a/tests/Feature/Categories/Ui/UpdateCategoriesTest.php +++ b/tests/Feature/Categories/Ui/UpdateCategoriesTest.php @@ -32,7 +32,7 @@ class UpdateCategoriesTest extends TestCase $this->actingAs(User::factory()->superuser()->create()) ->post(route('categories.store'), [ 'name' => 'Test Category', - 'category_type' => 'asset' + 'category_type' => 'asset', ]) ->assertStatus(302) ->assertSessionHasNoErrors() @@ -49,13 +49,14 @@ class UpdateCategoriesTest extends TestCase $response = $this->actingAs(User::factory()->superuser()->create()) ->put(route('categories.update', ['category' => $category]), [ 'name' => 'Test Category Edited', + 'notes' => 'Test Note Edited', ]) ->assertStatus(302) ->assertSessionHasNoErrors() ->assertRedirect(route('categories.index')); $this->followRedirects($response)->assertSee('Success'); - $this->assertTrue(Category::where('name', 'Test Category Edited')->exists()); + $this->assertTrue(Category::where('name', 'Test Category Edited')->where('notes', 'Test Note Edited')->exists()); } @@ -69,13 +70,14 @@ class UpdateCategoriesTest extends TestCase ->put(route('categories.update', ['category' => $category]), [ 'name' => 'Test Category Edited', 'category_type' => 'accessory', + 'notes' => 'Test Note Edited', ]) ->assertSessionHasNoErrors() ->assertStatus(302) ->assertRedirect(route('categories.index')); $this->followRedirects($response)->assertSee('Success'); - $this->assertTrue(Category::where('name', 'Test Category Edited')->exists()); + $this->assertTrue(Category::where('name', 'Test Category Edited')->where('notes', 'Test Note Edited')->exists()); } @@ -89,6 +91,7 @@ class UpdateCategoriesTest extends TestCase ->put(route('categories.update', ['category' => $category]), [ 'name' => 'Test Category Edited', 'category_type' => 'accessory', + 'notes' => 'Test Note Edited', ]) ->assertSessionHasErrors(['category_type']) ->assertInvalid(['category_type']) @@ -96,7 +99,7 @@ class UpdateCategoriesTest extends TestCase ->assertRedirect(route('categories.edit', ['category' => $category->id])); $this->followRedirects($response)->assertSee(trans('general.error')); - $this->assertFalse(Category::where('name', 'Test Category Edited')->exists()); + $this->assertFalse(Category::where('name', 'Test Category Edited')->where('notes', 'Test Note Edited')->exists()); } diff --git a/tests/Feature/Departments/Api/CreateDepartmentsTest.php b/tests/Feature/Departments/Api/CreateDepartmentsTest.php index a8725c5ff2..e0f975dd7f 100644 --- a/tests/Feature/Departments/Api/CreateDepartmentsTest.php +++ b/tests/Feature/Departments/Api/CreateDepartmentsTest.php @@ -20,4 +20,23 @@ class CreateDepartmentsTest extends TestCase ->assertForbidden(); } + public function testCanCreateDepartment() + { + $response = $this->actingAsForApi(User::factory()->superuser()->create()) + ->postJson(route('api.departments.store'), [ + 'name' => 'Test Department', + 'notes' => 'Test Note', + ]) + ->assertOk() + ->assertStatusMessageIs('success') + ->assertStatus(200) + ->json(); + + $this->assertTrue(Department::where('name', 'Test Department')->exists()); + + $department = Department::find($response['payload']['id']); + $this->assertEquals('Test Department', $department->name); + $this->assertEquals('Test Note', $department->notes); + } + } diff --git a/tests/Feature/Departments/Api/UpdateDepartmentsTest.php b/tests/Feature/Departments/Api/UpdateDepartmentsTest.php index 2a6401e7f1..b4eb38301a 100644 --- a/tests/Feature/Departments/Api/UpdateDepartmentsTest.php +++ b/tests/Feature/Departments/Api/UpdateDepartmentsTest.php @@ -25,6 +25,7 @@ class UpdateDepartmentsTest extends TestCase $this->actingAsForApi(User::factory()->superuser()->create()) ->patchJson(route('api.departments.update', $department), [ 'name' => 'Test Department', + 'notes' => 'Test Note', ]) ->assertOk() ->assertStatusMessageIs('success') @@ -33,6 +34,7 @@ class UpdateDepartmentsTest extends TestCase $department->refresh(); $this->assertEquals('Test Department', $department->name, 'Name was not updated'); + $this->assertEquals('Test Note', $department->notes, 'Note was not updated'); } diff --git a/tests/Feature/Departments/Ui/CreateDepartmentsTest.php b/tests/Feature/Departments/Ui/CreateDepartmentsTest.php index 08dc12ba09..f20a2c7b6a 100644 --- a/tests/Feature/Departments/Ui/CreateDepartmentsTest.php +++ b/tests/Feature/Departments/Ui/CreateDepartmentsTest.php @@ -34,11 +34,12 @@ class CreateDepartmentsTest extends TestCase $this->actingAs(User::factory()->superuser()->create()) ->post(route('departments.store'), [ 'name' => 'Test Department', - 'company_id' => Company::factory()->create()->id + 'company_id' => Company::factory()->create()->id, + 'notes' => 'Test Note', ]) ->assertRedirect(route('departments.index')); - $this->assertTrue(Department::where('name', 'Test Department')->exists()); + $this->assertTrue(Department::where('name', 'Test Department')->where('notes', 'Test Note')->exists()); } diff --git a/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php b/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php index 71f7cfe477..bb5fc27e14 100644 --- a/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php +++ b/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php @@ -34,13 +34,14 @@ class UpdateDepartmentsTest extends TestCase $response = $this->actingAs(User::factory()->superuser()->create()) ->put(route('departments.update', ['department' => $department]), [ 'name' => 'Test Department Edited', + 'notes' => 'Test Note Edited', ]) ->assertStatus(302) ->assertSessionHasNoErrors() ->assertRedirect(route('departments.index')); $this->followRedirects($response)->assertSee('Success'); - $this->assertTrue(Department::where('name', 'Test Department Edited')->exists()); + $this->assertTrue(Department::where('name', 'Test Department Edited')->where('notes', 'Test Note Edited')->exists()); } diff --git a/tests/Feature/Groups/Api/StoreGroupTest.php b/tests/Feature/Groups/Api/StoreGroupTest.php index ebcbff71c5..484c921a6c 100644 --- a/tests/Feature/Groups/Api/StoreGroupTest.php +++ b/tests/Feature/Groups/Api/StoreGroupTest.php @@ -21,6 +21,7 @@ class StoreGroupTest extends TestCase $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.groups.store'), [ 'name' => 'My Awesome Group', + 'notes' => 'My Awesome Note', 'permissions' => [ 'admin' => '1', 'import' => '1', @@ -29,7 +30,7 @@ class StoreGroupTest extends TestCase ]) ->assertOk(); - $group = Group::where('name', 'My Awesome Group')->first(); + $group = Group::where('name', 'My Awesome Group')->where('notes', 'My Awesome Note')->first(); $this->assertNotNull($group); $this->assertEquals('1', $group->decodePermissions()['admin']); diff --git a/tests/Feature/Groups/Ui/CreateGroupTest.php b/tests/Feature/Groups/Ui/CreateGroupTest.php index 56b3a76053..796905c50f 100644 --- a/tests/Feature/Groups/Ui/CreateGroupTest.php +++ b/tests/Feature/Groups/Ui/CreateGroupTest.php @@ -2,6 +2,7 @@ namespace Tests\Feature\Groups\Ui; +use App\Models\Group; use App\Models\User; use Tests\TestCase; @@ -13,4 +14,18 @@ class CreateGroupTest extends TestCase ->get(route('groups.create')) ->assertOk(); } + + public function testUserCanCreateGroup() + { + $this->assertFalse(Group::where('name', 'Test Group')->exists()); + + $this->actingAs(User::factory()->superuser()->create()) + ->post(route('groups.store'), [ + 'name' => 'Test Group', + 'notes' => 'Test Note', + ]) + ->assertRedirect(route('groups.index')); + + $this->assertTrue(Group::where('name', 'Test Group')->where('notes', 'Test Note')->exists()); + } } diff --git a/tests/Feature/Groups/Ui/UpdateGroupTest.php b/tests/Feature/Groups/Ui/UpdateGroupTest.php index c68d7cb84b..edb2368726 100644 --- a/tests/Feature/Groups/Ui/UpdateGroupTest.php +++ b/tests/Feature/Groups/Ui/UpdateGroupTest.php @@ -14,4 +14,22 @@ class UpdateGroupTest extends TestCase ->get(route('groups.edit', Group::factory()->create()->id)) ->assertOk(); } + + public function testUserCanEditGroups() + { + $group = Group::factory()->create(['name' => 'Test Group']); + $this->assertTrue(Group::where('name', 'Test Group')->exists()); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->put(route('groups.update', ['group' => $group]), [ + 'name' => 'Test Group Edited', + 'notes' => 'Test Note Edited', + ]) + ->assertStatus(302) + ->assertSessionHasNoErrors() + ->assertRedirect(route('groups.index')); + + $this->followRedirects($response)->assertSee('Success'); + $this->assertTrue(Group::where('name', 'Test Group Edited')->where('notes', 'Test Note Edited')->exists()); + } } diff --git a/tests/Feature/Locations/Api/CreateLocationsTest.php b/tests/Feature/Locations/Api/CreateLocationsTest.php index 171508b725..0a75517f31 100644 --- a/tests/Feature/Locations/Api/CreateLocationsTest.php +++ b/tests/Feature/Locations/Api/CreateLocationsTest.php @@ -16,6 +16,26 @@ class CreateLocationsTest extends TestCase ->assertForbidden(); } + + public function testCanCreateLocation() + { + $response = $this->actingAsForApi(User::factory()->superuser()->create()) + ->postJson(route('api.locations.store'), [ + 'name' => 'Test Location', + 'notes' => 'Test Note', + ]) + ->assertOk() + ->assertStatusMessageIs('success') + ->assertStatus(200) + ->json(); + + $this->assertTrue(Location::where('name', 'Test Location')->exists()); + + $department = Location::find($response['payload']['id']); + $this->assertEquals('Test Location', $department->name); + $this->assertEquals('Test Note', $department->notes); + } + public function testCannotCreateNewLocationsWithTheSameName() { $location = Location::factory()->create(); diff --git a/tests/Feature/Locations/Api/UpdateLocationsTest.php b/tests/Feature/Locations/Api/UpdateLocationsTest.php index a3dd8c228c..a169ba87bf 100644 --- a/tests/Feature/Locations/Api/UpdateLocationsTest.php +++ b/tests/Feature/Locations/Api/UpdateLocationsTest.php @@ -22,7 +22,8 @@ class UpdateLocationsTest extends TestCase $this->actingAsForApi(User::factory()->superuser()->create()) ->patchJson(route('api.locations.update', $location), [ - 'name' => 'Test Location', + 'name' => 'Test Updated Location', + 'notes' => 'Test Updated Note', ]) ->assertOk() ->assertStatusMessageIs('success') @@ -30,7 +31,8 @@ class UpdateLocationsTest extends TestCase ->json(); $location->refresh(); - $this->assertEquals('Test Location', $location->name, 'Name was not updated'); + $this->assertEquals('Test Updated Location', $location->name, 'Name was not updated'); + $this->assertEquals('Test Updated Note', $location->notes, 'Note was not updated'); } diff --git a/tests/Feature/Locations/Ui/CreateLocationsTest.php b/tests/Feature/Locations/Ui/CreateLocationsTest.php index 2e2e1e0aa9..794ee06c67 100644 --- a/tests/Feature/Locations/Ui/CreateLocationsTest.php +++ b/tests/Feature/Locations/Ui/CreateLocationsTest.php @@ -33,11 +33,11 @@ class CreateLocationsTest extends TestCase $this->actingAs(User::factory()->superuser()->create()) ->post(route('locations.store'), [ 'name' => 'Test Location', - 'company_id' => Company::factory()->create()->id + 'notes' => 'Test Note', ]) ->assertRedirect(route('locations.index')); - $this->assertTrue(Location::where('name', 'Test Location')->exists()); + $this->assertTrue(Location::where('name', 'Test Location')->where('notes', 'Test Note')->exists()); } public function testUserCannotCreateLocationsWithInvalidParent() diff --git a/tests/Feature/Locations/Ui/UpdateLocationsTest.php b/tests/Feature/Locations/Ui/UpdateLocationsTest.php index 6cead815bc..c38ee25f8e 100644 --- a/tests/Feature/Locations/Ui/UpdateLocationsTest.php +++ b/tests/Feature/Locations/Ui/UpdateLocationsTest.php @@ -33,13 +33,14 @@ class UpdateLocationsTest extends TestCase $response = $this->actingAs(User::factory()->superuser()->create()) ->put(route('locations.update', ['location' => $location]), [ 'name' => 'Test Location Edited', + 'notes' => 'Test Note Edited', ]) ->assertStatus(302) ->assertSessionHasNoErrors() ->assertRedirect(route('locations.index')); $this->followRedirects($response)->assertSee('Success'); - $this->assertTrue(Location::where('name', 'Test Location Edited')->exists()); + $this->assertTrue(Location::where('name', 'Test Location Edited')->where('notes', 'Test Note Edited')->exists()); } public function testUserCannotEditLocationsToMakeThemTheirOwnParent() diff --git a/tests/Feature/Manufacturers/Api/CreateManufacturersTest.php b/tests/Feature/Manufacturers/Api/CreateManufacturersTest.php new file mode 100644 index 0000000000..9dc953148e --- /dev/null +++ b/tests/Feature/Manufacturers/Api/CreateManufacturersTest.php @@ -0,0 +1,39 @@ +actingAsForApi(User::factory()->create()) + ->postJson(route('api.departments.store')) + ->assertForbidden(); + } + + public function testCanCreateManufacturer() + { + $response = $this->actingAsForApi(User::factory()->superuser()->create()) + ->postJson(route('api.manufacturers.store'), [ + 'name' => 'Test Manufacturer', + 'notes' => 'Test Note', + ]) + ->assertOk() + ->assertStatusMessageIs('success') + ->assertStatus(200) + ->json(); + + $this->assertTrue(Manufacturer::where('name', 'Test Manufacturer')->where('notes', 'Test Note')->exists()); + + $manufacturer = Manufacturer::find($response['payload']['id']); + $this->assertEquals('Test Manufacturer', $manufacturer->name); + $this->assertEquals('Test Note', $manufacturer->notes); + } + +} diff --git a/tests/Feature/Manufacturers/Api/UpdateManufacturersTest.php b/tests/Feature/Manufacturers/Api/UpdateManufacturersTest.php new file mode 100644 index 0000000000..d3ab461b4f --- /dev/null +++ b/tests/Feature/Manufacturers/Api/UpdateManufacturersTest.php @@ -0,0 +1,50 @@ +actingAs(User::factory()->create()) + ->post(route('manufacturers.store'), [ + 'name' => 'Test Manufacturer', + ]) + ->assertStatus(403) + ->assertForbidden(); + } + + public function testPageRenders() + { + $this->actingAs(User::factory()->superuser()->create()) + ->get(route('manufacturers.edit', Manufacturer::factory()->create()->id)) + ->assertOk(); + } + + public function testUserCanEditManufacturers() + { + $department = Manufacturer::factory()->create(['name' => 'Test Manufacturer']); + $this->assertTrue(Manufacturer::where('name', 'Test Manufacturer')->exists()); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->put(route('manufacturers.update', ['manufacturer' => $department]), [ + 'name' => 'Test Manufacturer Edited', + 'notes' => 'Test Note Edited', + ]) + ->assertStatus(302) + ->assertSessionHasNoErrors() + ->assertRedirect(route('manufacturers.index')); + + $this->followRedirects($response)->assertSee('Success'); + $this->assertTrue(Manufacturer::where('name', 'Test Manufacturer Edited')->where('notes', 'Test Note Edited')->exists()); + + } + + + +} diff --git a/tests/Feature/Manufacturers/Ui/CreateManufacturerTest.php b/tests/Feature/Manufacturers/Ui/CreateManufacturerTest.php index 133b271ea3..4eb9d4fb7e 100644 --- a/tests/Feature/Manufacturers/Ui/CreateManufacturerTest.php +++ b/tests/Feature/Manufacturers/Ui/CreateManufacturerTest.php @@ -3,6 +3,7 @@ namespace Tests\Feature\Manufacturers\Ui; use App\Models\User; +use App\Models\Manufacturer; use Tests\TestCase; class CreateManufacturerTest extends TestCase @@ -13,4 +14,19 @@ class CreateManufacturerTest extends TestCase ->get(route('manufacturers.create')) ->assertOk(); } + + public function testUserCanCreateManufacturer() + { + $this->assertFalse(Manufacturer::where('name', 'Test Manufacturer')->exists()); + + $this->actingAs(User::factory()->superuser()->create()) + ->post(route('manufacturers.store'), [ + 'name' => 'Test Manufacturer', + 'notes' => 'Test Note', + ]) + ->assertRedirect(route('manufacturers.index')); + + $this->assertTrue(Manufacturer::where('name', 'Test Manufacturer')->where('notes', 'Test Note')->exists()); + } + } diff --git a/tests/Feature/Manufacturers/Ui/UpdateManufacturerTest.php b/tests/Feature/Manufacturers/Ui/UpdateManufacturerTest.php index e2f7724fa3..398b7fe239 100644 --- a/tests/Feature/Manufacturers/Ui/UpdateManufacturerTest.php +++ b/tests/Feature/Manufacturers/Ui/UpdateManufacturerTest.php @@ -14,4 +14,23 @@ class UpdateManufacturerTest extends TestCase ->get(route('manufacturers.edit', Manufacturer::factory()->create()->id)) ->assertOk(); } + + public function testUserCanEditManufacturers() + { + $manufacturer = Manufacturer::factory()->create(['name' => 'Test Manufacturer']); + $this->assertTrue(Manufacturer::where('name', 'Test Manufacturer')->exists()); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->put(route('manufacturers.update', ['manufacturer' => $manufacturer]), [ + 'name' => 'Test Manufacturer Edited', + 'notes' => 'Test Note Edited', + ]) + ->assertStatus(302) + ->assertSessionHasNoErrors() + ->assertRedirect(route('manufacturers.index')); + + $this->followRedirects($response)->assertSee('Success'); + $this->assertTrue(Manufacturer::where('name', 'Test Manufacturer Edited')->where('notes', 'Test Note Edited')->exists()); + } + }