From 428c925995d20ce4b9c1749c5bc3e6a004e56831 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Tue, 21 Jun 2022 20:07:23 +0100 Subject: [PATCH 01/17] Better phpunit defaults --- phpunit.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phpunit.xml b/phpunit.xml index 79f7943d..731f74ba 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -24,7 +24,7 @@ - - + + From b2939ecaa3266fac49715a89c1bb2843b4d65b2f Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Tue, 21 Jun 2022 20:07:32 +0100 Subject: [PATCH 02/17] Fix PageTest failure --- tests/Main/Template/PageTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Main/Template/PageTest.php b/tests/Main/Template/PageTest.php index 72a8bc4e..d36a92b3 100644 --- a/tests/Main/Template/PageTest.php +++ b/tests/Main/Template/PageTest.php @@ -8,5 +8,5 @@ it('reads page settings from pages.yml', function () { $page = Page::load(resolve(ThemeManager::class)->getActiveTheme(), 'nested-page'); - expect($page->settings['title'])->toBe('Nested page'); + expect($page->title)->toBe('Nested page'); }); From 5e5b22ec59825d8c56c855f297953ec63af76a46 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Tue, 21 Jun 2022 20:10:44 +0100 Subject: [PATCH 03/17] Fix LocationTest failure --- tests/Admin/Requests/LocationTest.php | 42 +++++++++++++++------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/tests/Admin/Requests/LocationTest.php b/tests/Admin/Requests/LocationTest.php index 5eb925e8..af3937d8 100644 --- a/tests/Admin/Requests/LocationTest.php +++ b/tests/Admin/Requests/LocationTest.php @@ -5,43 +5,49 @@ use Igniter\Admin\Requests\Location; it('has required rule for location_name, location_email and ...', function () { - expect('required')->toBeIn(array_get((new Location)->rules(), 'location_name')); + $rules = (new Location)->rules(); - expect('required')->toBeIn(array_get((new Location)->rules(), 'location_email')); + expect('required')->toBeIn(array_get($rules, 'location_name')); - expect('required')->toBeIn(array_get((new Location)->rules(), 'location_address_1')); + expect('required')->toBeIn(array_get($rules, 'location_email')); - expect('required')->toBeIn(array_get((new Location)->rules(), 'location_country_id')); + expect('required')->toBeIn(array_get($rules, 'location_address_1')); - expect('required')->toBeIn(array_get((new Location)->rules(), 'options.auto_lat_lng')); + expect('required')->toBeIn(array_get($rules, 'location_country_id')); + + expect('required')->toBeIn(array_get($rules, 'options.auto_lat_lng')); }); it('has sometimes rule for inputs', function () { - expect('sometimes')->toBeIn(array_get((new Location)->rules(), 'location_telephone')); + $rules = (new Location)->rules(); + + expect('sometimes')->toBeIn(array_get($rules, 'location_telephone')); - expect('sometimes')->toBeIn(array_get((new Location)->rules(), 'location_lat')); + expect('sometimes')->toBeIn(array_get($rules, 'location_lat')); - expect('sometimes')->toBeIn(array_get((new Location)->rules(), 'location_lng')); + expect('sometimes')->toBeIn(array_get($rules, 'location_lng')); }); it('has max characters rule for inputs', function () { - expect('max:96')->toBeIn(array_get((new Location)->rules(), 'location_email')); + $rules = (new Location)->rules(); + + expect('max:96')->toBeIn(array_get($rules, 'location_email')); - expect('between:2,128')->toBeIn(array_get((new Location)->rules(), 'location_address_1')); + expect('between:2,128')->toBeIn(array_get($rules, 'location_address_1')); - expect('max:128')->toBeIn(array_get((new Location)->rules(), 'location_address_2')); + expect('max:128')->toBeIn(array_get($rules, 'location_address_2')); - expect('max:128')->toBeIn(array_get((new Location)->rules(), 'location_city')); + expect('max:128')->toBeIn(array_get($rules, 'location_city')); - expect('max:128')->toBeIn(array_get((new Location)->rules(), 'location_state')); + expect('max:128')->toBeIn(array_get($rules, 'location_state')); - expect('max:15')->toBeIn(array_get((new Location)->rules(), 'location_postcode')); + expect('max:15')->toBeIn(array_get($rules, 'location_postcode')); - expect('max:3028')->toBeIn(array_get((new Location)->rules(), 'description')); + expect('max:3028')->toBeIn(array_get($rules, 'description')); - expect('max:255')->toBeIn(array_get((new Location)->rules(), 'permalink_slug')); + expect('max:255')->toBeIn(array_get($rules, 'permalink_slug')); - expect('max:128')->toBeIn(array_get((new Location)->rules(), 'gallery.title')); + expect('max:128')->toBeIn(array_get($rules, 'options.gallery.title')); - expect('max:255')->toBeIn(array_get((new Location)->rules(), 'gallery.description')); + expect('max:255')->toBeIn(array_get($rules, 'options.gallery.description')); }); From ac980862fbfbd46c92fb387b6ade6466828250c6 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Tue, 21 Jun 2022 20:19:19 +0100 Subject: [PATCH 04/17] DRY --- tests/Admin/Requests/LocationTest.php | 15 -------- tests/Admin/Requests/MealtimeTest.php | 24 +++++++------ tests/Admin/Requests/MenuTest.php | 18 ++++++---- tests/Admin/Requests/ReservationTest.php | 32 ++++++++--------- tests/Admin/Requests/StatusTest.php | 20 ++++++----- tests/Admin/Requests/TableTest.php | 36 +++++++++++-------- tests/Admin/Requests/UserGroupTest.php | 22 ++++++------ tests/Admin/Requests/UserRoleTest.php | 21 ++++++----- tests/Admin/Requests/UserTest.php | 46 +++++++++++------------- 9 files changed, 119 insertions(+), 115 deletions(-) diff --git a/tests/Admin/Requests/LocationTest.php b/tests/Admin/Requests/LocationTest.php index af3937d8..77426571 100644 --- a/tests/Admin/Requests/LocationTest.php +++ b/tests/Admin/Requests/LocationTest.php @@ -8,13 +8,9 @@ $rules = (new Location)->rules(); expect('required')->toBeIn(array_get($rules, 'location_name')); - expect('required')->toBeIn(array_get($rules, 'location_email')); - expect('required')->toBeIn(array_get($rules, 'location_address_1')); - expect('required')->toBeIn(array_get($rules, 'location_country_id')); - expect('required')->toBeIn(array_get($rules, 'options.auto_lat_lng')); }); @@ -22,9 +18,7 @@ $rules = (new Location)->rules(); expect('sometimes')->toBeIn(array_get($rules, 'location_telephone')); - expect('sometimes')->toBeIn(array_get($rules, 'location_lat')); - expect('sometimes')->toBeIn(array_get($rules, 'location_lng')); }); @@ -32,22 +26,13 @@ $rules = (new Location)->rules(); expect('max:96')->toBeIn(array_get($rules, 'location_email')); - expect('between:2,128')->toBeIn(array_get($rules, 'location_address_1')); - expect('max:128')->toBeIn(array_get($rules, 'location_address_2')); - expect('max:128')->toBeIn(array_get($rules, 'location_city')); - expect('max:128')->toBeIn(array_get($rules, 'location_state')); - expect('max:15')->toBeIn(array_get($rules, 'location_postcode')); - expect('max:3028')->toBeIn(array_get($rules, 'description')); - expect('max:255')->toBeIn(array_get($rules, 'permalink_slug')); - expect('max:128')->toBeIn(array_get($rules, 'options.gallery.title')); - expect('max:255')->toBeIn(array_get($rules, 'options.gallery.description')); }); diff --git a/tests/Admin/Requests/MealtimeTest.php b/tests/Admin/Requests/MealtimeTest.php index 61765614..2bf55070 100644 --- a/tests/Admin/Requests/MealtimeTest.php +++ b/tests/Admin/Requests/MealtimeTest.php @@ -5,25 +5,29 @@ use Igniter\Admin\Requests\Mealtime; it('has required rule for inputs', function () { - expect('required')->toBeIn(array_get((new Mealtime)->rules(), 'mealtime_name')); + $rules = (new Mealtime)->rules(); - expect('required')->toBeIn(array_get((new Mealtime)->rules(), 'start_time')); - - expect('required')->toBeIn(array_get((new Mealtime)->rules(), 'end_time')); - - expect('required')->toBeIn(array_get((new Mealtime)->rules(), 'mealtime_status')); + expect('required')->toBeIn(array_get($rules, 'mealtime_name')); + expect('required')->toBeIn(array_get($rules, 'start_time')); + expect('required')->toBeIn(array_get($rules, 'end_time')); + expect('required')->toBeIn(array_get($rules, 'mealtime_status')); }); it('has max characters rule for mealtime_name input', function () { - expect('between:2,128')->toBeIn(array_get((new Mealtime)->rules(), 'mealtime_name')); + $rules = (new Mealtime)->rules(); + + expect('between:2,128')->toBeIn(array_get($rules, 'mealtime_name')); }); it('has unique rule for mealtime_name input', function () { - expect('unique:mealtimes')->toBeIn(array_get((new Mealtime)->rules(), 'mealtime_name')); + $rules = (new Mealtime)->rules(); + + expect('unique:mealtimes')->toBeIn(array_get($rules, 'mealtime_name')); }); it('has valid_time rule for start_time and end_time input', function () { - expect('valid_time')->toBeIn(array_get((new Mealtime)->rules(), 'start_time')); + $rules = (new Mealtime)->rules(); - expect('valid_time')->toBeIn(array_get((new Mealtime)->rules(), 'end_time')); + expect('valid_time')->toBeIn(array_get($rules, 'start_time')); + expect('valid_time')->toBeIn(array_get($rules, 'end_time')); }); diff --git a/tests/Admin/Requests/MenuTest.php b/tests/Admin/Requests/MenuTest.php index a3d79158..91faadf4 100644 --- a/tests/Admin/Requests/MenuTest.php +++ b/tests/Admin/Requests/MenuTest.php @@ -5,16 +5,22 @@ use Igniter\Admin\Requests\Menu; it('has rules for menu_name', function () { - expect('required')->toBeIn(array_get((new Menu)->rules(), 'menu_name')); - expect('between:2,255')->toBeIn(array_get((new Menu)->rules(), 'menu_name')); - expect('unique:menus')->toBeIn(array_get((new Menu)->rules(), 'menu_name')); + $rules = (new Menu)->rules(); + + expect('required')->toBeIn(array_get($rules, 'menu_name')); + expect('between:2,255')->toBeIn(array_get($rules, 'menu_name')); + expect('unique:menus')->toBeIn(array_get($rules, 'menu_name')); }); it('has rules for menu_price', function () { - expect('required')->toBeIn(array_get((new Menu)->rules(), 'menu_price')); - expect('min:0')->toBeIn(array_get((new Menu)->rules(), 'menu_price')); + $rules = (new Menu)->rules(); + + expect('required')->toBeIn(array_get($rules, 'menu_price')); + expect('min:0')->toBeIn(array_get($rules, 'menu_price')); }); it('has rules for menu_description', function () { - expect('between:2,1028')->toBeIn(array_get((new Menu)->rules(), 'menu_description')); + $rules = (new Menu)->rules(); + + expect('between:2,1028')->toBeIn(array_get($rules, 'menu_description')); }); diff --git a/tests/Admin/Requests/ReservationTest.php b/tests/Admin/Requests/ReservationTest.php index e6c9f0b6..ad777f69 100644 --- a/tests/Admin/Requests/ReservationTest.php +++ b/tests/Admin/Requests/ReservationTest.php @@ -5,29 +5,27 @@ use Igniter\Admin\Requests\Reservation; it('has required rule for inputs', function () { - expect('required')->toBeIn(array_get((new Reservation)->rules(), 'location_id')); - - expect('required')->toBeIn(array_get((new Reservation)->rules(), 'first_name')); - - expect('required')->toBeIn(array_get((new Reservation)->rules(), 'last_name')); - - expect('required')->toBeIn(array_get((new Reservation)->rules(), 'reserve_date')); - - expect('required')->toBeIn(array_get((new Reservation)->rules(), 'reserve_time')); - - expect('required')->toBeIn(array_get((new Reservation)->rules(), 'guest_num')); + $rules = (new Reservation)->rules(); + + expect('required')->toBeIn(array_get($rules, 'location_id')); + expect('required')->toBeIn(array_get($rules, 'first_name')); + expect('required')->toBeIn(array_get($rules, 'last_name')); + expect('required')->toBeIn(array_get($rules, 'reserve_date')); + expect('required')->toBeIn(array_get($rules, 'reserve_time')); + expect('required')->toBeIn(array_get($rules, 'guest_num')); }); it('has max characters rule for inputs', function () { - expect('between:1,48')->toBeIn(array_get((new Reservation)->rules(), 'first_name')); - - expect('between:1,48')->toBeIn(array_get((new Reservation)->rules(), 'last_name')); + $rules = (new Reservation)->rules(); - expect('max:96')->toBeIn(array_get((new Reservation)->rules(), 'email')); + expect('between:1,48')->toBeIn(array_get($rules, 'first_name')); + expect('between:1,48')->toBeIn(array_get($rules, 'last_name')); + expect('max:96')->toBeIn(array_get($rules, 'email')); }); it('has valid_date and valid_time rule for inputs', function () { - expect('valid_date')->toBeIn(array_get((new Reservation)->rules(), 'reserve_date')); + $rules = (new Reservation)->rules(); - expect('valid_time')->toBeIn(array_get((new Reservation)->rules(), 'reserve_time')); + expect('valid_date')->toBeIn(array_get($rules, 'reserve_date')); + expect('valid_time')->toBeIn(array_get($rules, 'reserve_time')); }); diff --git a/tests/Admin/Requests/StatusTest.php b/tests/Admin/Requests/StatusTest.php index c5d062f7..cbcd2092 100644 --- a/tests/Admin/Requests/StatusTest.php +++ b/tests/Admin/Requests/StatusTest.php @@ -5,21 +5,23 @@ use Igniter\Admin\Requests\Status; it('has required rule for inputs', function () { - expect('required')->toBeIn(array_get((new Status)->rules(), 'status_name')); + $rules = (new Status)->rules(); - expect('required')->toBeIn(array_get((new Status)->rules(), 'status_for')); - - expect('required')->toBeIn(array_get((new Status)->rules(), 'notify_customer')); + expect('required')->toBeIn(array_get($rules, 'status_name')); + expect('required')->toBeIn(array_get($rules, 'status_for')); + expect('required')->toBeIn(array_get($rules, 'notify_customer')); }); it('has max characters rule for inputs', function () { - expect('between:2,32')->toBeIn(array_get((new Status)->rules(), 'status_name')); - - expect('max:7')->toBeIn(array_get((new Status)->rules(), 'status_color')); + $rules = (new Status)->rules(); - expect('max:1028')->toBeIn(array_get((new Status)->rules(), 'status_comment')); + expect('between:2,32')->toBeIn(array_get($rules, 'status_name')); + expect('max:7')->toBeIn(array_get($rules, 'status_color')); + expect('max:1028')->toBeIn(array_get($rules, 'status_comment')); }); it('has in:order,reservation rule for inputs', function () { - expect('in:order,reservation')->toBeIn(array_get((new Status)->rules(), 'status_for')); + $rules = (new Status)->rules(); + + expect('in:order,reservation')->toBeIn(array_get($rules, 'status_for')); }); diff --git a/tests/Admin/Requests/TableTest.php b/tests/Admin/Requests/TableTest.php index 9ce2fbe1..488fbc83 100644 --- a/tests/Admin/Requests/TableTest.php +++ b/tests/Admin/Requests/TableTest.php @@ -5,34 +5,42 @@ use Igniter\Admin\Requests\Table; it('has required rule for inputs', function () { - expect('required')->toBeIn(array_get((new Table)->rules(), 'table_name')); + $rules = (new Table)->rules(); - expect('required')->toBeIn(array_get((new Table)->rules(), 'min_capacity')); + expect('required')->toBeIn(array_get($rules, 'table_name')); - expect('required')->toBeIn(array_get((new Table)->rules(), 'max_capacity')); + expect('required')->toBeIn(array_get($rules, 'min_capacity')); - expect('required')->toBeIn(array_get((new Table)->rules(), 'extra_capacity')); + expect('required')->toBeIn(array_get($rules, 'max_capacity')); - expect('required')->toBeIn(array_get((new Table)->rules(), 'priority')); + expect('required')->toBeIn(array_get($rules, 'extra_capacity')); - expect('required')->toBeIn(array_get((new Table)->rules(), 'is_joinable')); + expect('required')->toBeIn(array_get($rules, 'priority')); - expect('required')->toBeIn(array_get((new Table)->rules(), 'table_status')); + expect('required')->toBeIn(array_get($rules, 'is_joinable')); - expect('required')->toBeIn(array_get((new Table)->rules(), 'locations')); + expect('required')->toBeIn(array_get($rules, 'table_status')); + + expect('required')->toBeIn(array_get($rules, 'locations')); }); it('has rules for table_name input', function () { - expect('between:2,255')->toBeIn(array_get((new Table)->rules(), 'table_name')); - expect('unique:tables')->toBeIn(array_get((new Table)->rules(), 'table_name')); + $rules = (new Table)->rules(); + + expect('between:2,255')->toBeIn(array_get($rules, 'table_name')); + expect('unique:tables')->toBeIn(array_get($rules, 'table_name')); }); it('has min character rule for min_capacity and max_capacity input', function () { - expect('min:1')->toBeIn(array_get((new Table)->rules(), 'min_capacity')); - expect('min:1')->toBeIn(array_get((new Table)->rules(), 'max_capacity')); + $rules = (new Table)->rules(); + + expect('min:1')->toBeIn(array_get($rules, 'min_capacity')); + expect('min:1')->toBeIn(array_get($rules, 'max_capacity')); }); it('has rules for max_capacity input', function () { - expect('lte:max_capacity')->toBeIn(array_get((new Table)->rules(), 'min_capacity')); - expect('gte:min_capacity')->toBeIn(array_get((new Table)->rules(), 'max_capacity')); + $rules = (new Table)->rules(); + + expect('lte:max_capacity')->toBeIn(array_get($rules, 'min_capacity')); + expect('gte:min_capacity')->toBeIn(array_get($rules, 'max_capacity')); }); diff --git a/tests/Admin/Requests/UserGroupTest.php b/tests/Admin/Requests/UserGroupTest.php index 44f56e0e..eb92dc98 100644 --- a/tests/Admin/Requests/UserGroupTest.php +++ b/tests/Admin/Requests/UserGroupTest.php @@ -5,19 +5,19 @@ use Igniter\Admin\Requests\UserGroup; it('has required rule for inputs', function () { - expect('required')->toBeIn(array_get((new UserGroup)->rules(), 'user_group_name')); + $rules = (new UserGroup)->rules(); - expect('required')->toBeIn(array_get((new UserGroup)->rules(), 'auto_assign')); - - expect('required_if:auto_assign,true')->toBeIn(array_get((new UserGroup)->rules(), 'auto_assign_mode')); - - expect('required_if:auto_assign_mode,2')->toBeIn(array_get((new UserGroup)->rules(), 'auto_assign_limit')); - - expect('required_if:auto_assign,true')->toBeIn(array_get((new UserGroup)->rules(), 'auto_assign_availability')); + expect('required')->toBeIn(array_get($rules, 'user_group_name')); + expect('required')->toBeIn(array_get($rules, 'auto_assign')); + expect('required_if:auto_assign,true')->toBeIn(array_get($rules, 'auto_assign_mode')); + expect('required_if:auto_assign_mode,2')->toBeIn(array_get($rules, 'auto_assign_limit')); + expect('required_if:auto_assign,true')->toBeIn(array_get($rules, 'auto_assign_availability')); }); it('has max characters rule for inputs', function () { - expect('between:2,128')->toBeIn(array_get((new UserGroup)->rules(), 'user_group_name')); - expect('max:2')->toBeIn(array_get((new UserGroup)->rules(), 'auto_assign_mode')); - expect('max:99')->toBeIn(array_get((new UserGroup)->rules(), 'auto_assign_limit')); + $rules = (new UserGroup)->rules(); + + expect('between:2,128')->toBeIn(array_get($rules, 'user_group_name')); + expect('max:2')->toBeIn(array_get($rules, 'auto_assign_mode')); + expect('max:99')->toBeIn(array_get($rules, 'auto_assign_limit')); }); diff --git a/tests/Admin/Requests/UserRoleTest.php b/tests/Admin/Requests/UserRoleTest.php index 9fe7b570..8e71e0fc 100644 --- a/tests/Admin/Requests/UserRoleTest.php +++ b/tests/Admin/Requests/UserRoleTest.php @@ -5,23 +5,28 @@ use Igniter\Admin\Requests\UserRole; it('has required rule for inputs', function () { - expect('required')->toBeIn(array_get((new UserRole)->rules(), 'name')); + $rules = (new UserRole)->rules(); - expect('required')->toBeIn(array_get((new UserRole)->rules(), 'permissions')); - - expect('required')->toBeIn(array_get((new UserRole)->rules(), 'permissions.*')); + expect('required')->toBeIn(array_get($rules, 'name')); + expect('required')->toBeIn(array_get($rules, 'permissions')); + expect('required')->toBeIn(array_get($rules, 'permissions.*')); }); it('has max characters rule for inputs', function () { - expect('between:2,32')->toBeIn(array_get((new UserRole)->rules(), 'code')); + $rules = (new UserRole)->rules(); - expect('between:2,128')->toBeIn(array_get((new UserRole)->rules(), 'name')); + expect('between:2,32')->toBeIn(array_get($rules, 'code')); + expect('between:2,128')->toBeIn(array_get($rules, 'name')); }); it('has alpha_dash rule for inputs', function () { - expect('alpha_dash')->toBeIn(array_get((new UserRole)->rules(), 'code')); + $rules = (new UserRole)->rules(); + + expect('alpha_dash')->toBeIn(array_get($rules, 'code')); }); it('has unique:admin_user_roles rule for inputs', function () { - expect('unique:admin_user_roles')->toBeIn(array_get((new UserRole)->rules(), 'name')); + $rules = (new UserRole)->rules(); + + expect('unique:admin_user_roles')->toBeIn(array_get($rules, 'name')); }); diff --git a/tests/Admin/Requests/UserTest.php b/tests/Admin/Requests/UserTest.php index 80a7c91c..1eac7ab8 100644 --- a/tests/Admin/Requests/UserTest.php +++ b/tests/Admin/Requests/UserTest.php @@ -5,41 +5,37 @@ use Igniter\Admin\Requests\User; it('has required rule for inputs', function () { - expect('required')->toBeIn(array_get((new User)->rules(), 'name')); - - expect('required')->toBeIn(array_get((new User)->rules(), 'email')); - - expect('required')->toBeIn(array_get((new User)->rules(), 'username')); - - expect('required_if:send_invite,0')->toBeIn(array_get((new User)->rules(), 'password')); - - expect('required')->toBeIn(array_get((new User)->rules(), 'user_role_id')); - - expect('required')->toBeIn(array_get((new User)->rules(), 'groups')); + $rules = (new User)->rules(); + + expect('required')->toBeIn(array_get($rules, 'name')); + expect('required')->toBeIn(array_get($rules, 'email')); + expect('required')->toBeIn(array_get($rules, 'username')); + expect('required_if:send_invite,0')->toBeIn(array_get($rules, 'password')); + expect('required')->toBeIn(array_get($rules, 'user_role_id')); + expect('required')->toBeIn(array_get($rules, 'groups')); }); it('has sometimes rule for inputs', function () { - expect('sometimes')->toBeIn(array_get((new User)->rules(), 'password')); + $rules = (new User)->rules(); - expect('sometimes')->toBeIn(array_get((new User)->rules(), 'user_role_id')); - - expect('sometimes')->toBeIn(array_get((new User)->rules(), 'groups')); + expect('sometimes')->toBeIn(array_get($rules, 'password')); + expect('sometimes')->toBeIn(array_get($rules, 'user_role_id')); + expect('sometimes')->toBeIn(array_get($rules, 'groups')); }); it('has max characters rule for inputs', function () { - expect('between:2,128')->toBeIn(array_get((new User)->rules(), 'name')); - - expect('max:96')->toBeIn(array_get((new User)->rules(), 'email')); - - expect('email:filter')->toBeIn(array_get((new User)->rules(), 'email')); - - expect('between:2,32')->toBeIn(array_get((new User)->rules(), 'username')); + $rules = (new User)->rules(); - expect('between:6,32')->toBeIn(array_get((new User)->rules(), 'password')); + expect('between:2,128')->toBeIn(array_get($rules, 'name')); + expect('max:96')->toBeIn(array_get($rules, 'email')); + expect('email:filter')->toBeIn(array_get($rules, 'email')); + expect('between:2,32')->toBeIn(array_get($rules, 'username')); + expect('between:6,32')->toBeIn(array_get($rules, 'password')); }); it('has unique rule for inputs', function () { - expect('unique:admin_users,email')->toBeIn(array_get((new User)->rules(), 'email')); + $rules = (new User)->rules(); - expect('unique:admin_users,username')->toBeIn(array_get((new User)->rules(), 'username')); + expect('unique:admin_users,email')->toBeIn(array_get($rules, 'email')); + expect('unique:admin_users,username')->toBeIn(array_get($rules, 'username')); }); From 4cc5d51f48d19b934830371b365e107f5cd31c5b Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Tue, 21 Jun 2022 20:53:07 +0100 Subject: [PATCH 05/17] Better address formatting --- src/System/Libraries/Country.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/System/Libraries/Country.php b/src/System/Libraries/Country.php index 098cc0d5..b53de31f 100644 --- a/src/System/Libraries/Country.php +++ b/src/System/Libraries/Country.php @@ -46,10 +46,18 @@ public function addressFormat($address, $useLineBreaks = true) ) ); + while (stripos($formattedAddress, '

') !== false) { + $formattedAddress = str_replace('

', '
', $formattedAddress); + } + + if (substr($formattedAddress, -6) == '
') { + $formattedAddress = substr($formattedAddress, 0, -6); + } + if (!$useLineBreaks) $formattedAddress = str_replace('
', ', ', $formattedAddress); - return $formattedAddress; + return trim($formattedAddress); } public function getCountryNameById($id = null) From 6b3cffdcbf2ffd9c9b43fd055145919642254c03 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Tue, 21 Jun 2022 21:09:33 +0100 Subject: [PATCH 06/17] Beginnings of location tests and associated fixes --- src/Flame/Geolite/Geocoder.php | 8 +-- src/Flame/Providers/SystemServiceProvider.php | 10 ++-- tests/Admin/Models/LocationTest.php | 56 +++++++++++++++++++ 3 files changed, 65 insertions(+), 9 deletions(-) create mode 100644 tests/Admin/Models/LocationTest.php diff --git a/src/Flame/Geolite/Geocoder.php b/src/Flame/Geolite/Geocoder.php index 62750a93..9ab24dd9 100644 --- a/src/Flame/Geolite/Geocoder.php +++ b/src/Flame/Geolite/Geocoder.php @@ -135,7 +135,7 @@ public function makeProvider($name): AbstractProvider */ public function getDefaultDriver() { - return $this->container['config']['geocoder.default'] ?? 'nominatim'; + return $this->container['config']['igniter.geocoder.default'] ?? 'nominatim'; } protected function createProvider($name) @@ -154,21 +154,21 @@ protected function createProvider($name) protected function createChainProvider() { - $providers = $this->container['config']['geocoder.providers']; + $providers = $this->container['config']['igniter.geocoder.providers']; return new Provider\ChainProvider($this, $providers); } protected function createNominatimProvider() { - $config = $this->container['config']['geocoder.providers.nominatim']; + $config = $this->container['config']['igniter.geocoder.providers.nominatim']; return new Provider\NominatimProvider(new Client, $config); } protected function createGoogleProvider() { - $config = $this->container['config']['geocoder.providers.google']; + $config = $this->container['config']['igniter.geocoder.providers.google']; return new Provider\GoogleProvider(new Client, $config); } diff --git a/src/Flame/Providers/SystemServiceProvider.php b/src/Flame/Providers/SystemServiceProvider.php index d7152ac4..ddd9b912 100644 --- a/src/Flame/Providers/SystemServiceProvider.php +++ b/src/Flame/Providers/SystemServiceProvider.php @@ -266,14 +266,14 @@ protected function setConfiguration() }); $this->app->resolving('geocoder', function ($geocoder, $app) { - $app['config']->set('geocoder.default', setting('default_geocoder')); + $app['config']->set('igniter.geocoder.default', setting('default_geocoder')); $region = $app['country']->getCountryCodeById(setting('country_id')); - $app['config']->set('geocoder.providers.google.region', $region); - $app['config']->set('geocoder.providers.nominatim.region', $region); + $app['config']->set('igniter.geocoder.providers.google.region', $region); + $app['config']->set('igniter.geocoder.providers.nominatim.region', $region); - $app['config']->set('geocoder.providers.google.apiKey', setting('maps_api_key')); - $app['config']->set('geocoder.precision', setting('geocoder_boundary_precision', 8)); + $app['config']->set('igniter.geocoder.providers.google.apiKey', setting('maps_api_key')); + $app['config']->set('igniter.geocoder.precision', setting('geocoder_boundary_precision', 8)); }); Event::listen(CommandStarting::class, function () { diff --git a/tests/Admin/Models/LocationTest.php b/tests/Admin/Models/LocationTest.php new file mode 100644 index 00000000..eaeb8020 --- /dev/null +++ b/tests/Admin/Models/LocationTest.php @@ -0,0 +1,56 @@ +make(); + $location->location_name = null; + $location->save(); + $this->assertFalse(true); + } + catch (\Exception $e) { + $this->assertFalse(false); + } +}); + +it('should fail to create a location when no email is provided', function () { + try { + $location = Location::factory()->make(); + $location->location_email = null; + $location->save(); + $this->assertFalse(true); + } + catch (\Exception $e) { + $this->assertFalse(false); + } +}); + +it('should fail to create a location when no address line 1 is provided', function () { + try { + $location = Location::factory()->make(); + $location->location_address_1 = null; + $location->save(); + $this->assertFalse(true); + } + catch (\Exception $e) { + $this->assertFalse(false); + } +}); + +it('should create a latitude and longitude for the location when requested and address data is provided', function () { + $location = Location::factory()->make(); + $location->setOption('auto_lat_lng', TRUE); + $location->location_address_1 = '53 Church Road'; + $location->location_city = 'London'; + $location->location_postcode = 'SE19 2TJ'; + $location->location_lat = null; + $location->location_lng = null; + $location->save(); + + $this->assertNotNull($location->location_lat); + $this->assertNotNull($location->location_lng); +}); From 1d99401f766cc7cfca8ad6c9a4e03132e6fb564f Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Wed, 22 Jun 2022 07:17:23 +0100 Subject: [PATCH 07/17] Some more location tests --- .phpunit.result.cache | 1 + .../Database/Factories/LocationFactory.php | 1 + src/Admin/Requests/Location.php | 2 +- src/Flame/Providers/SystemServiceProvider.php | 20 +-- tests/Admin/Models/LocationTest.php | 127 ++++++++++++++++++ 5 files changed, 140 insertions(+), 11 deletions(-) create mode 100644 .phpunit.result.cache diff --git a/.phpunit.result.cache b/.phpunit.result.cache new file mode 100644 index 00000000..c77fd6dc --- /dev/null +++ b/.phpunit.result.cache @@ -0,0 +1 @@ +{"version":1,"defects":{"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location when no name is provided":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location when no email is provided":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location when no address line 1 is provided":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should be able to create and delete a location":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should be able to get and set a location option":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should create a latitude and longitude for the location when requested and address data is provided":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location with a duplicate slug":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should filter locations by status":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should filter locations by offer delivery":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should filter locations by offer collection":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should sort locations alphabetically by name ascending":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should sort locations alphabetically by name descending":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it can be made default":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/LocationTest.php::it has required rule for location_name, location_email and ...":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/LocationTest.php::it has sometimes rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/LocationTest.php::it has max characters rule for inputs":4},"times":{"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location when no name is provided":0.568,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location when no email is provided":0.015,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location when no address line 1 is provided":0.013,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should be able to create and delete a location":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should be able to get and set a location option":0.013,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should create a latitude and longitude for the location when requested and address data is provided":0.013,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location with a duplicate slug":0.015,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should filter locations by status":0.013,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should filter locations by offer delivery":0.015,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should filter locations by offer collection":0.018,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should sort locations alphabetically by name ascending":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should sort locations alphabetically by name descending":0.019,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it can be made default":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/LocationTest.php::it has required rule for location_name, location_email and ...":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/LocationTest.php::it has sometimes rule for inputs":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/LocationTest.php::it has max characters rule for inputs":0.015}} \ No newline at end of file diff --git a/src/Admin/Database/Factories/LocationFactory.php b/src/Admin/Database/Factories/LocationFactory.php index a573cc72..03dfbafa 100644 --- a/src/Admin/Database/Factories/LocationFactory.php +++ b/src/Admin/Database/Factories/LocationFactory.php @@ -20,6 +20,7 @@ public function definition(): array 'options' => [ 'auto_lat_lng' => FALSE, ], + 'location_status' => $this->faker->boolean, ]; } } diff --git a/src/Admin/Requests/Location.php b/src/Admin/Requests/Location.php index 077be561..8c970508 100644 --- a/src/Admin/Requests/Location.php +++ b/src/Admin/Requests/Location.php @@ -46,7 +46,7 @@ public function rules() 'location_lng' => ['sometimes', 'numeric'], 'description' => ['max:3028'], 'location_status' => ['boolean'], - 'permalink_slug' => ['alpha_dash', 'max:255'], + 'permalink_slug' => ['alpha_dash', 'max:255', 'unique:locations'], 'options.gallery.title' => ['string', 'max:128'], 'options.gallery.description' => ['string', 'max:255'], 'delivery_areas' => ['array'], diff --git a/src/Flame/Providers/SystemServiceProvider.php b/src/Flame/Providers/SystemServiceProvider.php index ddd9b912..47e20f31 100644 --- a/src/Flame/Providers/SystemServiceProvider.php +++ b/src/Flame/Providers/SystemServiceProvider.php @@ -251,18 +251,18 @@ protected function addTranslationDriver() protected function setConfiguration() { Event::listen('currency.beforeRegister', function () { - app('config')->set('currency.default', setting('default_currency_code')); - app('config')->set('currency.converter', setting('currency_converter.api', 'openexchangerates')); - app('config')->set('currency.converters.openexchangerates.apiKey', setting('currency_converter.oer.apiKey')); - app('config')->set('currency.converters.fixerio.apiKey', setting('currency_converter.fixerio.apiKey')); - app('config')->set('currency.ratesCacheDuration', setting('currency_converter.refreshInterval')); - app('config')->set('currency.model', \Igniter\System\Models\Currency::class); + app('config')->set('igniter.currency.default', setting('default_currency_code')); + app('config')->set('igniter.currency.converter', setting('currency_converter.api', 'openexchangerates')); + app('config')->set('igniter.currency.converters.openexchangerates.apiKey', setting('currency_converter.oer.apiKey')); + app('config')->set('igniter.currency.converters.fixerio.apiKey', setting('currency_converter.fixerio.apiKey')); + app('config')->set('igniter.currency.ratesCacheDuration', setting('currency_converter.refreshInterval')); + app('config')->set('igniter.currency.model', \Igniter\System\Models\Currency::class); }); $this->app->resolving('translator.localization', function ($localization, $app) { - $app['config']->set('localization.locale', setting('default_language', $app['config']['app.locale'])); - $app['config']->set('localization.supportedLocales', setting('supported_languages', []) ?: ['en']); - $app['config']->set('localization.detectBrowserLocale', (bool)setting('detect_language', false)); + $app['config']->set('igniter.localization.locale', setting('default_language', $app['config']['app.locale'])); + $app['config']->set('igniter.localization.supportedLocales', setting('supported_languages', []) ?: ['en']); + $app['config']->set('igniter.localization.detectBrowserLocale', (bool)setting('detect_language', false)); }); $this->app->resolving('geocoder', function ($geocoder, $app) { @@ -277,7 +277,7 @@ protected function setConfiguration() }); Event::listen(CommandStarting::class, function () { - config()->set('system.activityRecordsTTL', (int)setting('activity_log_timeout', 60)); + config()->set('igniter.system.activityRecordsTTL', (int)setting('activity_log_timeout', 60)); }); } diff --git a/tests/Admin/Models/LocationTest.php b/tests/Admin/Models/LocationTest.php index eaeb8020..3de62276 100644 --- a/tests/Admin/Models/LocationTest.php +++ b/tests/Admin/Models/LocationTest.php @@ -5,6 +5,10 @@ use Igniter\Admin\Models\Location; use Illuminate\Support\Arr; +beforeEach(function () { + Location::query()->delete(); +}); + it('should fail to create a location when no name is provided', function () { try { $location = Location::factory()->make(); @@ -41,6 +45,24 @@ } }); +it('should be able to create and delete a location', function () { + $location = Location::factory()->make(); + $location->save(); + + $location->delete(); + + $this->assertNull($location->fresh()); +}); + +it('should be able to get and set a location option', function () { + $location = Location::factory()->make(); + $location->save(); + + $location->setOption('test_option', TRUE); + + $this->assertNotNull($location->getOption('test_option')); +}); + it('should create a latitude and longitude for the location when requested and address data is provided', function () { $location = Location::factory()->make(); $location->setOption('auto_lat_lng', TRUE); @@ -54,3 +76,108 @@ $this->assertNotNull($location->location_lat); $this->assertNotNull($location->location_lng); }); + +it('should fail to create a location with a duplicate slug', function () { + $location1 = Location::factory()->make(); + $location1->permalink_slug = 'test'; + $location1->save(); + + $location2 = Location::factory()->make(); + $location2->permalink_slug = 'test'; + $location2->save(); + + $this->assertFalse(true); +}); + +it('should filter locations by status', function () { + $location1 = Location::factory()->make(); + $location1->location_status = TRUE; + $location1->save(); + + $location2 = Location::factory()->make(); + $location2->location_status = FALSE; + $location2->save(); + + $locations = Location::query()->isEnabled(); + + $this->assertCount($locations, 1); +}); + +it('should filter locations by offer delivery', function () { + $location1 = Location::factory()->make(); + $location1->save(); + $location1->setOption('offer_delivery', TRUE); + + $location2 = Location::factory()->make(); + $location2->save(); + $location2->setOption('offer_delivery', FALSE); + + $locations = Location::query()->listFrontEnd([ + 'hasDelivery' => TRUE, + 'pageLimit' => null, + ]); + + $this->assertCount($locations, 1); +}); + +it('should filter locations by offer collection', function () { + $location1 = Location::factory()->make(); + $location1->save(); + $location1->setOption('offer_collection', FALSE); + + $location2 = Location::factory()->make(); + $location2->save(); + $location2->setOption('offer_collection', TRUE); + + $locations = Location::query()->listFrontEnd([ + 'hasCollection' => TRUE, + 'pageLimit' => null, + ]); + + $this->assertCount($locations, 1); +}); + +it('should sort locations alphabetically by name ascending', function () { + $location1 = Location::factory()->make(); + $location1->location_name = 'Test 1'; + $location1->save(); + + $location2 = Location::factory()->make(); + $location2->location_name = 'A Test 2'; + $location2->save(); + + $locations = Location::query()->listFrontEnd([ + 'hasCollection' => TRUE, + 'pageLimit' => null, + 'sort' => 'location_name asc', + ]); + + $this->assertSame($locations->first()->location_name, $location2->location_name); +}); + +it('should sort locations alphabetically by name descending', function () { + $location1 = Location::factory()->make(); + $location1->location_name = 'Test 1'; + $location1->save(); + + $location2 = Location::factory()->make(); + $location2->location_name = 'A Test 2'; + $location2->save(); + + $locations = Location::query()->listFrontEnd([ + 'hasCollection' => TRUE, + 'pageLimit' => null, + 'sort' => 'location_name desc', + ]); + + $this->assertSame($locations->first()->location_name, $location1->location_name); +}); + +it('can be made default', function () { + $location = Location::factory()->make(); + $location->save(); + + $location->makeDefault(); + + $this->assertSame(Location::getDefault()->getKey(), $location->getKey()); +}); From 9096ea52a770d6ca530f56d57ad14217a334c083 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Wed, 22 Jun 2022 07:30:39 +0100 Subject: [PATCH 08/17] Shouldnt have committed cache file --- .phpunit.result.cache | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .phpunit.result.cache diff --git a/.phpunit.result.cache b/.phpunit.result.cache deleted file mode 100644 index c77fd6dc..00000000 --- a/.phpunit.result.cache +++ /dev/null @@ -1 +0,0 @@ -{"version":1,"defects":{"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location when no name is provided":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location when no email is provided":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location when no address line 1 is provided":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should be able to create and delete a location":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should be able to get and set a location option":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should create a latitude and longitude for the location when requested and address data is provided":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location with a duplicate slug":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should filter locations by status":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should filter locations by offer delivery":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should filter locations by offer collection":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should sort locations alphabetically by name ascending":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should sort locations alphabetically by name descending":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it can be made default":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/LocationTest.php::it has required rule for location_name, location_email and ...":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/LocationTest.php::it has sometimes rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/LocationTest.php::it has max characters rule for inputs":4},"times":{"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location when no name is provided":0.568,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location when no email is provided":0.015,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location when no address line 1 is provided":0.013,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should be able to create and delete a location":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should be able to get and set a location option":0.013,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should create a latitude and longitude for the location when requested and address data is provided":0.013,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location with a duplicate slug":0.015,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should filter locations by status":0.013,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should filter locations by offer delivery":0.015,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should filter locations by offer collection":0.018,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should sort locations alphabetically by name ascending":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should sort locations alphabetically by name descending":0.019,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it can be made default":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/LocationTest.php::it has required rule for location_name, location_email and ...":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/LocationTest.php::it has sometimes rule for inputs":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/LocationTest.php::it has max characters rule for inputs":0.015}} \ No newline at end of file From bb332259cc147a4f0bf6b55f1d63dd47c623e2c3 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Wed, 22 Jun 2022 07:43:13 +0100 Subject: [PATCH 09/17] StyleCI --- .phpunit.result.cache | 1 + .../Database/Factories/LocationFactory.php | 2 +- tests/Admin/Models/LocationTest.php | 25 +++++++++---------- 3 files changed, 14 insertions(+), 14 deletions(-) create mode 100644 .phpunit.result.cache diff --git a/.phpunit.result.cache b/.phpunit.result.cache new file mode 100644 index 00000000..73fc8c1f --- /dev/null +++ b/.phpunit.result.cache @@ -0,0 +1 @@ +{"version":1,"defects":{"Tests\\System\\Classes\\NavigationTest::testRegisterNavItems":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it has defined paths to locate layouts":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it has defined paths to locate views":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it has defined paths to locate partials":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it has defined paths to locate model config files":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it has defined paths to locate asset files":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it can find (default) layout":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it can find (edit) view":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it can find (flash) partial":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it can find controller config file":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it can find asset file":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it runs the requested controller action":3,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it runs the requested controller handler":3,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/BaseWidgetTest.php::it has defined paths to locate widget partials":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/BaseWidgetTest.php::it has defined paths to locate widget asset files":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/CategoryTest.php::it can create a category and assign it to a location":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/CategoryTest.php::it should fail to create a category when no name is provided":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location when no name is provided":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location when no email is provided":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location when no address line 1 is provided":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should be able to create and delete a location":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should be able to get and set a location option":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should create a latitude and longitude for the location when requested and address data is provided":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location with a duplicate slug":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should filter locations by status":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should filter locations by offer delivery":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should filter locations by offer collection":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should sort locations alphabetically by name ascending":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should sort locations alphabetically by name descending":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it can be made default":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/MenuOptionTest.php::it creates a new record":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/MenuOptionTest.php::it retrieves an existing record":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/MenuOptionTest.php::it updates an existing record":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/MenuOptionTest.php::it deletes an existing record":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/MenuOptionTest.php::it creates options values with new record":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/MenuOptionTest.php::it updates options values on existing record":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/MenuOptionTest.php::it deletes options values on existing record":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/MenuOptionTest.php::it attach an existing record to a menu item":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/MenuOptionTest.php::it updates options values on related menu item":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/CategoryTest.php::it has rules for name input":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/CategoryTest.php::it has rules for permalink slug input":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/CustomerGroupTest.php::it has rules for group_name field":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/CustomerGroupTest.php::it has rules for description field":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/CustomerTest.php::it has rules for first_name field":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/CustomerTest.php::it has rules for last_name field":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/CustomerTest.php::it has rules for email field":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/IngredientTest.php::it has rules for name input":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/IngredientTest.php::it has rules for description input":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/LocationTest.php::it has required rule for location_name, location_email and ...":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/LocationTest.php::it has sometimes rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/LocationTest.php::it has max characters rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/MealtimeTest.php::it has required rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/MealtimeTest.php::it has max characters rule for mealtime_name input":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/MealtimeTest.php::it has unique rule for mealtime_name input":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/MealtimeTest.php::it has valid_time rule for start_time and end_time input":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/MenuTest.php::it has rules for menu_name":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/MenuTest.php::it has rules for menu_price":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/MenuTest.php::it has rules for menu_description":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/ReservationTest.php::it has required rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/ReservationTest.php::it has max characters rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/ReservationTest.php::it has valid_date and valid_time rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/StatusTest.php::it has required rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/StatusTest.php::it has max characters rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/StatusTest.php::it has in:order,reservation rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/TableTest.php::it has required rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/TableTest.php::it has rules for table_name input":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/TableTest.php::it has min character rule for min_capacity and max_capacity input":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/TableTest.php::it has rules for max_capacity input":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/UserGroupTest.php::it has required rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/UserGroupTest.php::it has max characters rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/UserRoleTest.php::it has required rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/UserRoleTest.php::it has max characters rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/UserRoleTest.php::it has alpha_dash rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/UserRoleTest.php::it has unique:admin_user_roles rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/UserTest.php::it has required rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/UserTest.php::it has sometimes rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/UserTest.php::it has max characters rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/UserTest.php::it has unique rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/ExampleTest.php::example":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Flame\/Filesystem\/FilesystemTest.php::it symbolizes path":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Flame\/Router\/RouterTest.php::it converts a pagic route uri to laravel style":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/IgniterTest.php::it checks for admin routes":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/MainControllerTest.php::it finds assets file in active theme directory":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/MainControllerTest.php::it runs the requested page":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/MainControllerTest.php::it runs the requested page handler":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/MainControllerTest.php::it renders the requested page contents":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/MainControllerTest.php::it renders a defined component":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/MainControllerTest.php::it renders a component partial contents":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/MainControllerTest.php::it renders a theme partial contents":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/MainControllerTest.php::it renders a theme content contents":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/MainControllerTest.php::it rewrites page path to page url":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/RouterTest.php::it finds a theme page":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/RouterTest.php::it rewrites page path to url":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it loads test theme":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it has active theme":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it finds a theme file":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it fails when theme file does not exist":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it writes a theme file":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it renames a theme file":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it deletes a theme file":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it extracts a theme archive":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it deletes a theme directory":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it installs a theme":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it creates a child theme":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it validates a theme configuration":1,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Template\/PageTest.php::it reads page settings from pages.yml":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Classes\/MailManagerTest.php::it renders mail templates":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Models\/MailThemeTest.php::it compiles theme default css file":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Requests\/CountryTest.php::it has required rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Requests\/CountryTest.php::it has max characters rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Requests\/CurrencyTest.php::it has required rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Requests\/CurrencyTest.php::it has max characters rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Requests\/LanguageTest.php::it has required rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Requests\/LanguageTest.php::it has unique rule for code input":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Requests\/LanguageTest.php::it has max characters rule for code input":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Requests\/MailLayoutTest.php::it has required rule for inputs":4,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Requests\/MailLayoutTest.php::it has max characters rule for code input":4},"times":{"Tests\\System\\Classes\\NavigationTest::testRegisterNavItems":2.461,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it has defined paths to locate layouts":0.01,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it has defined paths to locate views":0.01,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it has defined paths to locate partials":0.01,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it has defined paths to locate model config files":0.012,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it has defined paths to locate asset files":0.011,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it can find (default) layout":0.01,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it can find (edit) view":0.01,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it can find (flash) partial":0.011,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it can find controller config file":0.011,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it can find asset file":0.011,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it runs the requested controller action":0.02,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/AdminControllerTest.php::it runs the requested controller handler":0.011,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/BaseWidgetTest.php::it has defined paths to locate widget partials":0.01,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Classes\/BaseWidgetTest.php::it has defined paths to locate widget asset files":0.009,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/CategoryTest.php::it can create a category and assign it to a location":0.01,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/CategoryTest.php::it should fail to create a category when no name is provided":0.019,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location when no name is provided":0.086,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location when no email is provided":0.017,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location when no address line 1 is provided":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should be able to create and delete a location":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should be able to get and set a location option":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should create a latitude and longitude for the location when requested and address data is provided":0.018,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should fail to create a location with a duplicate slug":0.017,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should filter locations by status":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should filter locations by offer delivery":0.015,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should filter locations by offer collection":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should sort locations alphabetically by name ascending":0.02,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it should sort locations alphabetically by name descending":0.017,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/LocationTest.php::it can be made default":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/MenuOptionTest.php::it creates a new record":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/MenuOptionTest.php::it retrieves an existing record":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/MenuOptionTest.php::it updates an existing record":0.013,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/MenuOptionTest.php::it deletes an existing record":0.011,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/MenuOptionTest.php::it creates options values with new record":0.013,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/MenuOptionTest.php::it updates options values on existing record":0.012,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/MenuOptionTest.php::it deletes options values on existing record":0.013,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/MenuOptionTest.php::it attach an existing record to a menu item":0.013,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Models\/MenuOptionTest.php::it updates options values on related menu item":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/CategoryTest.php::it has rules for name input":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/CategoryTest.php::it has rules for permalink slug input":0.019,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/CustomerGroupTest.php::it has rules for group_name field":0.015,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/CustomerGroupTest.php::it has rules for description field":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/CustomerTest.php::it has rules for first_name field":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/CustomerTest.php::it has rules for last_name field":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/CustomerTest.php::it has rules for email field":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/IngredientTest.php::it has rules for name input":0.013,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/IngredientTest.php::it has rules for description input":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/LocationTest.php::it has required rule for location_name, location_email and ...":0.017,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/LocationTest.php::it has sometimes rule for inputs":0.018,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/LocationTest.php::it has max characters rule for inputs":0.018,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/MealtimeTest.php::it has required rule for inputs":0.015,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/MealtimeTest.php::it has max characters rule for mealtime_name input":0.015,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/MealtimeTest.php::it has unique rule for mealtime_name input":0.015,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/MealtimeTest.php::it has valid_time rule for start_time and end_time input":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/MenuTest.php::it has rules for menu_name":0.013,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/MenuTest.php::it has rules for menu_price":0.015,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/MenuTest.php::it has rules for menu_description":0.018,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/ReservationTest.php::it has required rule for inputs":0.015,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/ReservationTest.php::it has max characters rule for inputs":0.013,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/ReservationTest.php::it has valid_date and valid_time rule for inputs":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/StatusTest.php::it has required rule for inputs":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/StatusTest.php::it has max characters rule for inputs":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/StatusTest.php::it has in:order,reservation rule for inputs":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/TableTest.php::it has required rule for inputs":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/TableTest.php::it has rules for table_name input":0.015,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/TableTest.php::it has min character rule for min_capacity and max_capacity input":0.017,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/TableTest.php::it has rules for max_capacity input":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/UserGroupTest.php::it has required rule for inputs":0.015,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/UserGroupTest.php::it has max characters rule for inputs":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/UserRoleTest.php::it has required rule for inputs":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/UserRoleTest.php::it has max characters rule for inputs":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/UserRoleTest.php::it has alpha_dash rule for inputs":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/UserRoleTest.php::it has unique:admin_user_roles rule for inputs":0.017,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/UserTest.php::it has required rule for inputs":0.019,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/UserTest.php::it has sometimes rule for inputs":0.015,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/UserTest.php::it has max characters rule for inputs":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/Admin\/Requests\/UserTest.php::it has unique rule for inputs":0.018,"\/Users\/ryan\/Git Repos\/flame\/tests\/ExampleTest.php::example":0.017,"\/Users\/ryan\/Git Repos\/flame\/tests\/Flame\/Filesystem\/FilesystemTest.php::it symbolizes path":0.017,"\/Users\/ryan\/Git Repos\/flame\/tests\/Flame\/Router\/RouterTest.php::it converts a pagic route uri to laravel style":0.015,"\/Users\/ryan\/Git Repos\/flame\/tests\/IgniterTest.php::it checks for admin routes":0.018,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/MainControllerTest.php::it finds assets file in active theme directory":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/MainControllerTest.php::it runs the requested page":0.017,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/MainControllerTest.php::it runs the requested page handler":0.015,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/MainControllerTest.php::it renders the requested page contents":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/MainControllerTest.php::it renders a defined component":0.015,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/MainControllerTest.php::it renders a component partial contents":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/MainControllerTest.php::it renders a theme partial contents":0.017,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/MainControllerTest.php::it renders a theme content contents":0.018,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/MainControllerTest.php::it rewrites page path to page url":0.022,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/RouterTest.php::it finds a theme page":0.018,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/RouterTest.php::it rewrites page path to url":0.017,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it loads test theme":0.017,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it has active theme":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it finds a theme file":0.018,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it fails when theme file does not exist":0.018,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it writes a theme file":0.013,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it renames a theme file":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it deletes a theme file":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it extracts a theme archive":0.018,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it deletes a theme directory":0.017,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it installs a theme":0.015,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it creates a child theme":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Classes\/ThemeManagerTest.php::it validates a theme configuration":0.014,"\/Users\/ryan\/Git Repos\/flame\/tests\/Main\/Template\/PageTest.php::it reads page settings from pages.yml":0.019,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Classes\/MailManagerTest.php::it renders mail templates":0.048,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Models\/MailThemeTest.php::it compiles theme default css file":0.022,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Requests\/CountryTest.php::it has required rule for inputs":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Requests\/CountryTest.php::it has max characters rule for inputs":0.02,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Requests\/CurrencyTest.php::it has required rule for inputs":0.018,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Requests\/CurrencyTest.php::it has max characters rule for inputs":0.019,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Requests\/LanguageTest.php::it has required rule for inputs":0.017,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Requests\/LanguageTest.php::it has unique rule for code input":0.017,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Requests\/LanguageTest.php::it has max characters rule for code input":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Requests\/MailLayoutTest.php::it has required rule for inputs":0.016,"\/Users\/ryan\/Git Repos\/flame\/tests\/System\/Requests\/MailLayoutTest.php::it has max characters rule for code input":0.019}} \ No newline at end of file diff --git a/src/Admin/Database/Factories/LocationFactory.php b/src/Admin/Database/Factories/LocationFactory.php index 03dfbafa..66b40360 100644 --- a/src/Admin/Database/Factories/LocationFactory.php +++ b/src/Admin/Database/Factories/LocationFactory.php @@ -18,7 +18,7 @@ public function definition(): array 'location_lat' => $this->faker->latitude, 'location_lng' => $this->faker->longitude, 'options' => [ - 'auto_lat_lng' => FALSE, + 'auto_lat_lng' => false, ], 'location_status' => $this->faker->boolean, ]; diff --git a/tests/Admin/Models/LocationTest.php b/tests/Admin/Models/LocationTest.php index 3de62276..e2eb07e2 100644 --- a/tests/Admin/Models/LocationTest.php +++ b/tests/Admin/Models/LocationTest.php @@ -3,7 +3,6 @@ namespace Tests\Admin\Models; use Igniter\Admin\Models\Location; -use Illuminate\Support\Arr; beforeEach(function () { Location::query()->delete(); @@ -58,14 +57,14 @@ $location = Location::factory()->make(); $location->save(); - $location->setOption('test_option', TRUE); + $location->setOption('test_option', true); $this->assertNotNull($location->getOption('test_option')); }); it('should create a latitude and longitude for the location when requested and address data is provided', function () { $location = Location::factory()->make(); - $location->setOption('auto_lat_lng', TRUE); + $location->setOption('auto_lat_lng', true); $location->location_address_1 = '53 Church Road'; $location->location_city = 'London'; $location->location_postcode = 'SE19 2TJ'; @@ -91,11 +90,11 @@ it('should filter locations by status', function () { $location1 = Location::factory()->make(); - $location1->location_status = TRUE; + $location1->location_status = true; $location1->save(); $location2 = Location::factory()->make(); - $location2->location_status = FALSE; + $location2->location_status = false; $location2->save(); $locations = Location::query()->isEnabled(); @@ -106,14 +105,14 @@ it('should filter locations by offer delivery', function () { $location1 = Location::factory()->make(); $location1->save(); - $location1->setOption('offer_delivery', TRUE); + $location1->setOption('offer_delivery', true); $location2 = Location::factory()->make(); $location2->save(); - $location2->setOption('offer_delivery', FALSE); + $location2->setOption('offer_delivery', false); $locations = Location::query()->listFrontEnd([ - 'hasDelivery' => TRUE, + 'hasDelivery' => true, 'pageLimit' => null, ]); @@ -123,14 +122,14 @@ it('should filter locations by offer collection', function () { $location1 = Location::factory()->make(); $location1->save(); - $location1->setOption('offer_collection', FALSE); + $location1->setOption('offer_collection', false); $location2 = Location::factory()->make(); $location2->save(); - $location2->setOption('offer_collection', TRUE); + $location2->setOption('offer_collection', true); $locations = Location::query()->listFrontEnd([ - 'hasCollection' => TRUE, + 'hasCollection' => true, 'pageLimit' => null, ]); @@ -147,7 +146,7 @@ $location2->save(); $locations = Location::query()->listFrontEnd([ - 'hasCollection' => TRUE, + 'hasCollection' => true, 'pageLimit' => null, 'sort' => 'location_name asc', ]); @@ -165,7 +164,7 @@ $location2->save(); $locations = Location::query()->listFrontEnd([ - 'hasCollection' => TRUE, + 'hasCollection' => true, 'pageLimit' => null, 'sort' => 'location_name desc', ]); From d02a7be9105f7681a57b3568d0a935e375968639 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Wed, 22 Jun 2022 08:47:56 +0100 Subject: [PATCH 10/17] Define schema length in environment --- tests/TestCase.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/TestCase.php b/tests/TestCase.php index 8ac84737..600e9018 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -4,6 +4,7 @@ use Igniter\Flame\Igniter; use Igniter\Main\Classes\ThemeManager; +use Illuminate\Support\Facades\Schema; abstract class TestCase extends \Orchestra\Testbench\TestCase { @@ -30,6 +31,8 @@ protected function defineEnvironment($app) ThemeManager::addDirectory(__DIR__.'/_fixtures/themes'); $app['config']->set('igniter.system.defaultTheme', 'tests-theme'); + + Schema::defaultStringLength(191); } protected function defineDatabaseMigrations() From 0f1cd999719c629ea1fd245fb906493b4798167b Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Wed, 22 Jun 2022 08:48:15 +0100 Subject: [PATCH 11/17] Fix location tests --- tests/Admin/Models/LocationTest.php | 35 +++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/tests/Admin/Models/LocationTest.php b/tests/Admin/Models/LocationTest.php index e2eb07e2..3e5d2e78 100644 --- a/tests/Admin/Models/LocationTest.php +++ b/tests/Admin/Models/LocationTest.php @@ -97,9 +97,9 @@ $location2->location_status = false; $location2->save(); - $locations = Location::query()->isEnabled(); + $locations = Location::query()->isEnabled()->get(); - $this->assertCount($locations, 1); + $this->assertCount(1, $locations); }); it('should filter locations by offer delivery', function () { @@ -114,9 +114,9 @@ $locations = Location::query()->listFrontEnd([ 'hasDelivery' => true, 'pageLimit' => null, - ]); + ])->get(); - $this->assertCount($locations, 1); + $this->assertCount(1, $locations); }); it('should filter locations by offer collection', function () { @@ -131,9 +131,9 @@ $locations = Location::query()->listFrontEnd([ 'hasCollection' => true, 'pageLimit' => null, - ]); + ])->get(); - $this->assertCount($locations, 1); + $this->assertCount(1, $locations); }); it('should sort locations alphabetically by name ascending', function () { @@ -149,7 +149,7 @@ 'hasCollection' => true, 'pageLimit' => null, 'sort' => 'location_name asc', - ]); + ])->get(); $this->assertSame($locations->first()->location_name, $location2->location_name); }); @@ -167,16 +167,33 @@ 'hasCollection' => true, 'pageLimit' => null, 'sort' => 'location_name desc', - ]); + ])->get(); $this->assertSame($locations->first()->location_name, $location1->location_name); }); -it('can be made default', function () { +it('can be made default when enabled', function () { $location = Location::factory()->make(); + $location->location_status = true; $location->save(); $location->makeDefault(); $this->assertSame(Location::getDefault()->getKey(), $location->getKey()); }); + +it('cant be made default when not enabled', function () { + try { + + $location = Location::factory()->make(); + $location->location_status = false; + $location->save(); + + $location->makeDefault(); + + $this->assertNotSame(Location::getDefault()->getKey(), $location->getKey()); + + } catch (\Exception $e) { + $this->assertFalse(false); + } +}); From 24e05cfd2a2a5be41c3bc510e7728e4a16f6ac58 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Wed, 22 Jun 2022 09:00:25 +0100 Subject: [PATCH 12/17] Fix AdminController tests --- src/Flame/Translation/Localization.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Flame/Translation/Localization.php b/src/Flame/Translation/Localization.php index b34a67e1..ecae4949 100644 --- a/src/Flame/Translation/Localization.php +++ b/src/Flame/Translation/Localization.php @@ -139,6 +139,6 @@ public function getBrowserLocale() protected function getConfig(string $string) { - return $this->config['localization.'.$string]; + return $this->config['igniter.localization.'.$string]; } } From 3206bd6ba3a30348197f4151d6197d7e740b9adb Mon Sep 17 00:00:00 2001 From: Mahmoud Awadeen Date: Wed, 22 Jun 2022 12:15:11 +0200 Subject: [PATCH 13/17] [test] Truncate db and seed --- tests/TestCase.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/tests/TestCase.php b/tests/TestCase.php index 600e9018..0ff11e88 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -4,6 +4,7 @@ use Igniter\Flame\Igniter; use Igniter\Main\Classes\ThemeManager; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Schema; abstract class TestCase extends \Orchestra\Testbench\TestCase @@ -40,6 +41,14 @@ protected function defineDatabaseMigrations() $this->artisan('igniter:up')->run(); } + protected function defineDatabaseSeeders() + { + $this->truncate(); + $this->artisan('db:seed', [ + '--class' => '\Igniter\System\Database\Seeds\DatabaseSeeder' + ])->run(); + } + protected function resolveApplicationConfiguration($app) { parent::resolveApplicationConfiguration($app); @@ -52,4 +61,18 @@ protected function resolveApplicationConfiguration($app) $app['config']->set("igniter.$config", require(__DIR__."/../config/{$config}.php")); } } + + private function truncate() + { + Schema::disableForeignKeyConstraints(); + $tableNames = Schema::getConnection()->getDoctrineSchemaManager()->listTableNames(); + foreach ($tableNames as $name) { + //if you don't want to truncate migrations + if ($name == 'migrations') { + continue; + } + DB::table($name)->truncate(); + } + Schema::enableForeignKeyConstraints(); + } } From f7faf1e7c7e03bf489bac438f60d559d7c8f39ef Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Thu, 23 Jun 2022 06:21:49 +0100 Subject: [PATCH 14/17] No need to delete before each test anymore --- tests/Admin/Models/LocationTest.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tests/Admin/Models/LocationTest.php b/tests/Admin/Models/LocationTest.php index 3e5d2e78..9db2d1a9 100644 --- a/tests/Admin/Models/LocationTest.php +++ b/tests/Admin/Models/LocationTest.php @@ -4,10 +4,6 @@ use Igniter\Admin\Models\Location; -beforeEach(function () { - Location::query()->delete(); -}); - it('should fail to create a location when no name is provided', function () { try { $location = Location::factory()->make(); From 7e6cca461ea46e11b4ae643f5d845d4fc90204c5 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Thu, 23 Jun 2022 06:35:52 +0100 Subject: [PATCH 15/17] Bug fix in Locationable trait --- src/Admin/Traits/Locationable.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Admin/Traits/Locationable.php b/src/Admin/Traits/Locationable.php index 065d632d..63e386dc 100644 --- a/src/Admin/Traits/Locationable.php +++ b/src/Admin/Traits/Locationable.php @@ -5,6 +5,7 @@ use Igniter\Admin\Facades\AdminAuth; use Igniter\Admin\Facades\AdminLocation; use Igniter\Flame\Exception\ApplicationException; +use Igniter\Flame\Igniter; trait Locationable { From 7b289eb74e812c579410e1b42c9a8c2138675d33 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Thu, 23 Jun 2022 06:36:06 +0100 Subject: [PATCH 16/17] Add Mealtime Model tests --- tests/Admin/Models/MealtimeTest.php | 97 +++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 tests/Admin/Models/MealtimeTest.php diff --git a/tests/Admin/Models/MealtimeTest.php b/tests/Admin/Models/MealtimeTest.php new file mode 100644 index 00000000..1cd5636b --- /dev/null +++ b/tests/Admin/Models/MealtimeTest.php @@ -0,0 +1,97 @@ +delete(); +}); + +it('should fail to create a mealtime when no name is provided', function () { + try { + $mealtime = Mealtime::factory()->make(); + $mealtime->mealtime_name = null; + $mealtime->save(); + $this->assertFalse(true); + } + catch (\Exception $e) { + $this->assertFalse(false); + } +}); + +it('should be able to create and delete a mealtime', function () { + $mealtime = Mealtime::factory()->make(); + $mealtime->save(); + + $mealtime->delete(); + + $this->assertNull($mealtime->fresh()); +}); + +it('should filter mealtimes by status', function () { + $mealtime1 = Mealtime::factory()->make(); + $mealtime1->mealtime_status = true; + $mealtime1->save(); + + $mealtime2 = Mealtime::factory()->make(); + $mealtime2->mealtime_status = false; + $mealtime2->save(); + + $mealtimes = Mealtime::query()->isEnabled()->get(); + + $this->assertCount(1, $mealtimes); +}); + +it('should be able to return mealtimes available now', function () { + $mealtime1 = Mealtime::factory()->make(); + $mealtime1->mealtime_name = 'Mealtime 1'; + $mealtime1->start_time = Carbon::now()->subHour(1)->format('H:m'); + $mealtime1->end_time = Carbon::now()->addHour(1)->format('H:m'); + $mealtime1->save(); + + $mealtime2 = Mealtime::factory()->make(); + $mealtime2->mealtime_name = 'Mealtime 2'; + $mealtime2->start_time = Carbon::now()->subHour(4)->format('H:m'); + $mealtime2->end_time = Carbon::now()->subHour(3)->format('H:m'); + $mealtime2->save(); + + $availableMealtimes = Mealtime::all()->filter->isAvailable(); + + $this->assertCount(1, $availableMealtimes); +}); + +it('should be able to return mealtimes available at a given time', function () { + $mealtime1 = Mealtime::factory()->make(); + $mealtime1->mealtime_name = 'Mealtime 1'; + $mealtime1->start_time = Carbon::now()->subHour(1)->format('H:i'); + $mealtime1->end_time = Carbon::now()->addHour(1)->format('H:i'); + $mealtime1->save(); + + $mealtime2 = Mealtime::factory()->make(); + $mealtime2->mealtime_name = 'Mealtime 2'; + $mealtime2->start_time = Carbon::now()->subHour(4)->format('H:i'); + $mealtime2->end_time = Carbon::now()->subHour(3)->format('H:i'); + $mealtime2->save(); + + $availableMealtimes = Mealtime::all()->filter->isAvailable(Carbon::now()->subHour(2)); + $this->assertCount(0, $availableMealtimes); + + $availableMealtimes = Mealtime::all()->filter->isAvailable(Carbon::now()->subHour(3)->subMinute(15)); + $this->assertCount(1, $availableMealtimes); +}); + +it('should be able to attach a mealtime to a location', function () { + $location = Location::factory()->make(); + $location->save(); + + $mealtime = Mealtime::factory()->make(); + $mealtime->save(); + + $mealtime->locations()->attach($location); + + $this->assertCount(1, $mealtime->locations); + $this->assertSame($location->getKey(), $mealtime->locations->first()->getKey()); +}); From 42684024ed4c85f80439dfcce2e392b1c3f29a55 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Thu, 23 Jun 2022 06:43:20 +0100 Subject: [PATCH 17/17] Add Table Model tests --- tests/Admin/Models/TableTest.php | 79 ++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 tests/Admin/Models/TableTest.php diff --git a/tests/Admin/Models/TableTest.php b/tests/Admin/Models/TableTest.php new file mode 100644 index 00000000..e5e514bd --- /dev/null +++ b/tests/Admin/Models/TableTest.php @@ -0,0 +1,79 @@ +delete(); +}); + +it('should fail to create a table when no name is provided', function () { + try { + $table = Table::factory()->make(); + $table->table_name = null; + $table->save(); + $this->assertFalse(true); + } + catch (\Exception $e) { + $this->assertFalse(false); + } +}); + +it('should be able to create and delete a table', function () { + $table = Table::factory()->make(); + $table->save(); + + $table->delete(); + + $this->assertNull($table->fresh()); +}); + +it('should filter tables by status', function () { + $table1 = Table::factory()->make(); + $table1->table_status = true; + $table1->save(); + + $table2 = Table::factory()->make(); + $table2->table_status = false; + $table2->save(); + + $tables = Table::query()->isEnabled()->get(); + + $this->assertCount(1, $tables); +}); + +it('should be able to return tables within a capacity range', function () { + $table1 = Table::factory()->make(); + $table1->min_capacity = 4; + $table1->max_capacity = 6; + $table1->save(); + + $table2 = Table::factory()->make(); + $table2->min_capacity = 2; + $table2->max_capacity = 2; + $table2->save(); + + $table3 = Table::factory()->make(); + $table3->min_capacity = 3; + $table3->max_capacity = 5; + $table3->save(); + + $tables = Table::query()->whereBetweenCapacity(4, 5)->get(); + + $this->assertCount(2, $tables); +}); + +it('should be able to attach a table to a location', function () { + $location = Location::factory()->make(); + $location->save(); + + $table = Table::factory()->make(); + $table->save(); + + $table->locations()->attach($location); + + $this->assertCount(1, $table->locations); + $this->assertSame($location->getKey(), $table->locations->first()->getKey()); +});