diff --git a/.phpunit.result.cache b/.phpunit.result.cache new file mode 100644 index 000000000..73fc8c1f0 --- /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/phpunit.xml b/phpunit.xml index 79f7943db..731f74bae 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -24,7 +24,7 @@ - - + + diff --git a/src/Admin/Database/Factories/LocationFactory.php b/src/Admin/Database/Factories/LocationFactory.php index a573cc72b..66b40360d 100644 --- a/src/Admin/Database/Factories/LocationFactory.php +++ b/src/Admin/Database/Factories/LocationFactory.php @@ -18,8 +18,9 @@ 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/src/Admin/Requests/Location.php b/src/Admin/Requests/Location.php index 077be5613..8c9705081 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/Admin/Traits/Locationable.php b/src/Admin/Traits/Locationable.php index 065d632de..63e386dc8 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 { diff --git a/src/Flame/Geolite/Geocoder.php b/src/Flame/Geolite/Geocoder.php index 62750a931..9ab24dd9e 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 d7152ac47..47e20f316 100644 --- a/src/Flame/Providers/SystemServiceProvider.php +++ b/src/Flame/Providers/SystemServiceProvider.php @@ -251,33 +251,33 @@ 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) { - $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 () { - config()->set('system.activityRecordsTTL', (int)setting('activity_log_timeout', 60)); + config()->set('igniter.system.activityRecordsTTL', (int)setting('activity_log_timeout', 60)); }); } diff --git a/src/Flame/Translation/Localization.php b/src/Flame/Translation/Localization.php index b34a67e10..ecae49496 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]; } } diff --git a/src/System/Libraries/Country.php b/src/System/Libraries/Country.php index 098cc0d5f..b53de31fc 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) diff --git a/tests/Admin/Models/LocationTest.php b/tests/Admin/Models/LocationTest.php new file mode 100644 index 000000000..9db2d1a9b --- /dev/null +++ b/tests/Admin/Models/LocationTest.php @@ -0,0 +1,195 @@ +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 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); + $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); +}); + +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()->get(); + + $this->assertCount(1, $locations); +}); + +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, + ])->get(); + + $this->assertCount(1, $locations); +}); + +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, + ])->get(); + + $this->assertCount(1, $locations); +}); + +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', + ])->get(); + + $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', + ])->get(); + + $this->assertSame($locations->first()->location_name, $location1->location_name); +}); + +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); + } +}); diff --git a/tests/Admin/Models/MealtimeTest.php b/tests/Admin/Models/MealtimeTest.php new file mode 100644 index 000000000..1cd5636b3 --- /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()); +}); diff --git a/tests/Admin/Models/TableTest.php b/tests/Admin/Models/TableTest.php new file mode 100644 index 000000000..e5e514bd8 --- /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()); +}); diff --git a/tests/Admin/Requests/LocationTest.php b/tests/Admin/Requests/LocationTest.php index 5eb925e89..77426571f 100644 --- a/tests/Admin/Requests/LocationTest.php +++ b/tests/Admin/Requests/LocationTest.php @@ -5,43 +5,34 @@ 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((new Location)->rules(), 'location_address_1')); - - expect('required')->toBeIn(array_get((new Location)->rules(), 'location_country_id')); - - expect('required')->toBeIn(array_get((new Location)->rules(), 'options.auto_lat_lng')); + 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')); }); it('has sometimes rule for inputs', function () { - expect('sometimes')->toBeIn(array_get((new Location)->rules(), 'location_telephone')); - - expect('sometimes')->toBeIn(array_get((new Location)->rules(), 'location_lat')); + $rules = (new Location)->rules(); - expect('sometimes')->toBeIn(array_get((new Location)->rules(), 'location_lng')); + expect('sometimes')->toBeIn(array_get($rules, 'location_telephone')); + expect('sometimes')->toBeIn(array_get($rules, 'location_lat')); + 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')); - - expect('between:2,128')->toBeIn(array_get((new Location)->rules(), 'location_address_1')); - - expect('max:128')->toBeIn(array_get((new Location)->rules(), 'location_address_2')); - - expect('max:128')->toBeIn(array_get((new Location)->rules(), 'location_city')); - - expect('max:128')->toBeIn(array_get((new Location)->rules(), 'location_state')); - - expect('max:15')->toBeIn(array_get((new Location)->rules(), 'location_postcode')); - - expect('max:3028')->toBeIn(array_get((new Location)->rules(), 'description')); - - expect('max:255')->toBeIn(array_get((new Location)->rules(), 'permalink_slug')); - - expect('max:128')->toBeIn(array_get((new Location)->rules(), 'gallery.title')); - - expect('max:255')->toBeIn(array_get((new Location)->rules(), 'gallery.description')); + $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 617656140..2bf550703 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 a3d791585..91faadf48 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 e6c9f0b68..ad777f692 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 c5d062f71..cbcd2092a 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 9ce2fbe10..488fbc83a 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 44f56e0eb..eb92dc980 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 9fe7b570c..8e71e0fcf 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 80a7c91c0..1eac7ab80 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')); }); diff --git a/tests/Main/Template/PageTest.php b/tests/Main/Template/PageTest.php index 72a8bc4e4..d36a92b39 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'); }); diff --git a/tests/TestCase.php b/tests/TestCase.php index 8ac847372..0ff11e88b 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -4,6 +4,8 @@ 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 { @@ -30,6 +32,8 @@ protected function defineEnvironment($app) ThemeManager::addDirectory(__DIR__.'/_fixtures/themes'); $app['config']->set('igniter.system.defaultTheme', 'tests-theme'); + + Schema::defaultStringLength(191); } protected function defineDatabaseMigrations() @@ -37,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); @@ -49,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(); + } }