admin(); $component = Livewire::actingAs($admin) ->test(SettingsManager::class) ->set('statusForm.name', 'Awaiting Customer') ->set('statusForm.color', 'amber') ->set('statusForm.sort_order', 20) ->set('statusForm.is_closed', false) ->call('saveStatus') ->assertHasNoErrors(); $status = Status::query()->where('slug', 'awaiting-customer')->firstOrFail(); $component->call('editStatus', $status->id) ->set('statusForm.name', 'Waiting Customer') ->call('saveStatus') ->assertHasNoErrors(); $this->assertDatabaseHas('helpdesk_statuses', ['id' => $status->id, 'name' => 'Waiting Customer']); $component->call('deleteStatus', $status->id); $this->assertDatabaseMissing('helpdesk_statuses', ['id' => $status->id]); } public function test_settings_manager_creates_lookup_project_team_repository_and_workflow_records(): void { $admin = $this->admin(); Livewire::actingAs($admin) ->test(SettingsManager::class) ->set('priorityForm.name', 'Critical') ->set('priorityForm.color', 'red') ->set('priorityForm.sort_order', 1) ->call('savePriority') ->set('categoryForm.name', 'Bug Fix') ->set('categoryForm.color', 'rose') ->set('categoryForm.description', 'Production defects') ->call('saveCategory') ->set('teamForm.name', 'Platform Support') ->set('teamForm.color', 'indigo') ->set('teamForm.description', 'Platform team') ->call('saveTeam') ->set('projectForm.title', 'Core WMS') ->set('projectForm.team_id', Team::query()->where('slug', 'platform-support')->firstOrFail()->id) ->set('projectForm.color', 'blue') ->set('projectForm.description', 'Core platform') ->call('saveProject') ->set('repositoryForm.name', 'WMS Core') ->set('repositoryForm.project_id', Project::query()->where('slug', 'core-wms')->firstOrFail()->id) ->set('repositoryForm.provider', 'github') ->set('repositoryForm.remote_url', 'git@github.com:mpba/wms-core.git') ->set('repositoryForm.default_branch', 'develop') ->set('repositoryForm.webhook_secret', 'secret') ->call('saveRepository') ->set('workflowForm.name', 'Ticket Raised') ->set('workflowForm.event', 'ticket.created') ->set('workflowForm.subject', 'Ticket {{ ticket.reference }} created') ->set('workflowForm.html_body', '
Hello {{ requester.name }}
') ->set('workflowForm.text_body', 'Hello {{ requester.name }}') ->set('workflowForm.to_role', 'requester') ->call('saveWorkflowTemplate') ->assertHasNoErrors(); $this->assertDatabaseHas('helpdesk_priorities', ['slug' => 'critical']); $this->assertDatabaseHas('helpdesk_categories', ['slug' => 'bug-fix']); $this->assertDatabaseHas('helpdesk_teams', ['slug' => 'platform-support']); $this->assertDatabaseHas('helpdesk_projects', ['slug' => 'core-wms']); $this->assertDatabaseHas('helpdesk_git_repositories', ['name' => 'WMS Core', 'provider' => 'github']); $this->assertDatabaseHas('helpdesk_workflow_templates', ['name' => 'Ticket Raised', 'event' => 'ticket.created']); } public function test_settings_manager_can_edit_and_delete_all_new_setup_records(): void { $admin = $this->admin(); $priority = $this->priority(['name' => 'Low', 'slug' => 'low']); $category = $this->category(['name' => 'Support', 'slug' => 'support']); $team = $this->team(['name' => 'First Line', 'slug' => 'first-line']); $project = $this->project(['title' => 'Portal', 'slug' => 'portal', 'team_id' => $team->id]); $repository = $this->repository(['project_id' => $project->id, 'name' => 'Portal Repo']); $template = WorkflowTemplate::query()->create([ 'name' => 'Closed Message', 'event' => 'ticket.closed', 'subject' => 'Closed {{ ticket.reference }}', 'html_body' => 'Closed
', 'text_body' => 'Closed', 'to_role' => 'requester', 'is_active' => true, ]); $component = Livewire::actingAs($admin)->test(SettingsManager::class); $component->call('editPriority', $priority->id)->set('priorityForm.name', 'Low Priority')->call('savePriority'); $component->call('editCategory', $category->id)->set('categoryForm.name', 'Customer Support')->call('saveCategory'); $component->call('editTeam', $team->id)->set('teamForm.name', 'First Line Support')->call('saveTeam'); $component->call('editProject', $project->id)->set('projectForm.title', 'Customer Portal')->call('saveProject'); $component->call('editRepository', $repository->id)->set('repositoryForm.name', 'Customer Portal Repo')->call('saveRepository'); $component->call('editWorkflowTemplate', $template->id)->set('workflowForm.name', 'Ticket Closed Message')->call('saveWorkflowTemplate'); $this->assertDatabaseHas('helpdesk_priorities', ['id' => $priority->id, 'name' => 'Low Priority']); $this->assertDatabaseHas('helpdesk_categories', ['id' => $category->id, 'name' => 'Customer Support']); $this->assertDatabaseHas('helpdesk_teams', ['id' => $team->id, 'name' => 'First Line Support']); $this->assertDatabaseHas('helpdesk_projects', ['id' => $project->id, 'title' => 'Customer Portal']); $this->assertDatabaseHas('helpdesk_git_repositories', ['id' => $repository->id, 'name' => 'Customer Portal Repo']); $this->assertDatabaseHas('helpdesk_workflow_templates', ['id' => $template->id, 'name' => 'Ticket Closed Message']); $component->call('deletePriority', $priority->id) ->call('deleteCategory', $category->id) ->call('deleteRepository', $repository->id) ->call('deleteWorkflowTemplate', $template->id); self::assertNull(Priority::query()->find($priority->id)); self::assertNull(Category::query()->find($category->id)); self::assertNull(GitRepository::query()->find($repository->id)); self::assertNull(WorkflowTemplate::query()->find($template->id)); } }