172 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Tests\Feature\Common;
 | |
| 
 | |
| use App\Models\Common\Widget;
 | |
| use App\Models\Common\Dashboard;
 | |
| use Tests\Feature\FeatureTestCase;
 | |
| use App\Jobs\Common\CreateDashboard;
 | |
| 
 | |
| class DashboardsTest extends FeatureTestCase
 | |
| {
 | |
|     public function testItShouldSeeDashboard()
 | |
|     {
 | |
|         $this->loginAs()
 | |
|             ->get(route('dashboard'))
 | |
|             ->assertOk()
 | |
|             ->assertSeeText(trans_choice('general.dashboards', 1));
 | |
|     }
 | |
| 
 | |
|     public function testItShouldSeeDashboardListPage()
 | |
|     {
 | |
|         $this->loginAs()
 | |
|             ->get(route('dashboards.index'))
 | |
|             ->assertOk()
 | |
|             ->assertSeeText(trans_choice('general.dashboards', 2));
 | |
|     }
 | |
| 
 | |
|     public function testItShouldSeeDashboardCreatePage()
 | |
|     {
 | |
|         $this->loginAs()
 | |
|             ->get(route('dashboards.create'))
 | |
|             ->assertOk()
 | |
|             ->assertSeeText(trans('general.title.new', ['type' => trans_choice('general.dashboards', 1)]));
 | |
|     }
 | |
| 
 | |
|     public function testItShouldCreateDashboard()
 | |
|     {
 | |
|         $request = $this->getRequest();
 | |
| 
 | |
|         $this->loginAs()
 | |
|             ->post(route('dashboards.store'), $request)
 | |
|             ->assertOk();
 | |
| 
 | |
|         $this->assertFlashLevel('success');
 | |
| 
 | |
|         $this->assertDatabaseHas('dashboards', $this->getAssertRequest($request));
 | |
|     }
 | |
| 
 | |
|     public function testItShouldSeeDashboardUpdatePage()
 | |
|     {
 | |
|         $request = $this->getRequest();
 | |
| 
 | |
|         $dashboard = $this->dispatch(new CreateDashboard($request));
 | |
| 
 | |
|         $this->loginAs()
 | |
|             ->get(route('dashboards.edit', $dashboard->id))
 | |
|             ->assertOk()
 | |
|             ->assertSee($dashboard->name);
 | |
|     }
 | |
| 
 | |
|     public function testItShouldUpdateDashboard()
 | |
|     {
 | |
|         $request = $this->getRequest();
 | |
| 
 | |
|         $dashboard = $this->dispatch(new CreateDashboard($request));
 | |
| 
 | |
|         $request['name'] = $this->faker->text(15);
 | |
| 
 | |
|         $this->loginAs()
 | |
|             ->patch(route('dashboards.update', $dashboard->id), $request)
 | |
|             ->assertOk()
 | |
|             ->assertSee($request['name']);
 | |
| 
 | |
|         $this->assertFlashLevel('success');
 | |
| 
 | |
|         $this->assertDatabaseHas('dashboards', $this->getAssertRequest($request));
 | |
|     }
 | |
| 
 | |
|     public function testItShouldDeleteDashboard()
 | |
|     {
 | |
|         $request = $this->getRequest();
 | |
| 
 | |
|         $tmp = $this->dispatch(new CreateDashboard($this->getRequest()));
 | |
|         $dashboard = $this->dispatch(new CreateDashboard($request));
 | |
| 
 | |
|         $this->loginAs()
 | |
|             ->delete(route('dashboards.destroy', $dashboard->id))
 | |
|             ->assertOk();
 | |
| 
 | |
|         $this->assertFlashLevel('success');
 | |
| 
 | |
|         $this->assertSoftDeleted('dashboards', $this->getAssertRequest($request));
 | |
|     }
 | |
| 
 | |
|     public function testItShouldSeeWidgetCreate()
 | |
|     {
 | |
|         $classes = Widget::factory()->classes;
 | |
|         $class = $classes[rand(0, 9)];
 | |
| 
 | |
|         $this->loginAs()
 | |
|             ->get(route('widgets.index'))
 | |
|             ->assertOk()
 | |
|             ->assertSeeText((new $class())->getDefaultName());
 | |
|     }
 | |
| 
 | |
|     public function testItShouldSeeWidgetEdit()
 | |
|     {
 | |
|         $widget = Widget::create($this->getWidget());
 | |
| 
 | |
|         $this->loginAs()
 | |
|             ->get(route('widgets.edit', $widget->id))
 | |
|             ->assertOk()
 | |
|             ->assertSee($widget->name);
 | |
|     }
 | |
| 
 | |
|     public function testItShouldCreateWidget()
 | |
|     {
 | |
|         $request = $this->getWidget();
 | |
| 
 | |
|         $this->loginAs()
 | |
|             ->post(route('widgets.store'), $request)
 | |
|             ->assertOk();
 | |
| 
 | |
|         $this->assertDatabaseHas('widgets', $this->getAssertRequest($request));
 | |
|     }
 | |
| 
 | |
|     public function testItShouldUpdateWidget()
 | |
|     {
 | |
|         $request = $this->getWidget();
 | |
| 
 | |
|         $widget = Widget::create($request);
 | |
| 
 | |
|         $request['name'] = $this->faker->name;
 | |
| 
 | |
|         $this->loginAs()
 | |
|             ->patch(route('widgets.update', $widget->id), $request)
 | |
|             ->assertOk();
 | |
| 
 | |
|         $this->assertDatabaseHas('widgets', $this->getAssertRequest($request));
 | |
|     }
 | |
| 
 | |
|     public function testItShouldDeleteWidget()
 | |
|     {
 | |
|         $request = $this->getWidget();
 | |
| 
 | |
|         $widget = Widget::create($request);
 | |
| 
 | |
|         $this->loginAs()
 | |
|             ->delete(route('widgets.destroy', $widget->id))
 | |
|             ->assertOk();
 | |
| 
 | |
|         $this->assertSoftDeleted('widgets', $this->getAssertRequest($request));
 | |
|     }
 | |
| 
 | |
|     public function getRequest()
 | |
|     {
 | |
|         return Dashboard::factory()->enabled()->users()->raw();
 | |
|     }
 | |
| 
 | |
|     public function getWidget()
 | |
|     {
 | |
|         return Widget::factory()->raw();
 | |
|     }
 | |
| 
 | |
|     public function getAssertRequest($request)
 | |
|     {
 | |
|         unset($request['users']);
 | |
| 
 | |
|         return $request;
 | |
|     }
 | |
| }
 |