You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
3.2 KiB
87 lines
3.2 KiB
<?php
|
|
|
|
use App\Entities\Projects\Project;
|
|
use App\Entities\Users\User;
|
|
use Illuminate\Foundation\Testing\DatabaseMigrations;
|
|
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
|
use Illuminate\Foundation\Testing\WithoutMiddleware;
|
|
|
|
class ManageProjectsTest extends TestCase
|
|
{
|
|
use DatabaseTransactions;
|
|
|
|
/** @test */
|
|
public function admin_can_input_new_project_with_existing_customer()
|
|
{
|
|
$user = factory(User::class)->create();
|
|
$user->assignRole('admin');
|
|
$this->actingAs($user);
|
|
|
|
$user = factory(User::class)->create();
|
|
$user->assignRole('customer');
|
|
|
|
$this->visit('/projects');
|
|
$this->seePageIs('/projects');
|
|
$this->click(trans('project.create'));
|
|
$this->seePageIs('/projects/create');
|
|
$this->type('Project Baru','name');
|
|
$this->select($user->id,'customer_id');
|
|
$this->type('2016-04-15','proposal_date');
|
|
$this->type('2000000','proposal_value');
|
|
$this->type('Deskripsi project baru','description');
|
|
$this->press(trans('project.create'));
|
|
$this->seePageIs('/projects');
|
|
$this->see(trans('project.created'));
|
|
$this->see('Project Baru');
|
|
$this->seeInDatabase('projects', ['name' => 'Project Baru', 'proposal_value' => '2000000']);
|
|
}
|
|
|
|
/** @test */
|
|
public function admin_can_input_new_project_with_new_customer()
|
|
{
|
|
$user = factory(User::class)->create();
|
|
$user->assignRole('admin');
|
|
$this->actingAs($user);
|
|
|
|
$this->visit('/projects');
|
|
$this->seePageIs('/projects');
|
|
$this->click(trans('project.create'));
|
|
$this->seePageIs('/projects/create');
|
|
|
|
// Invalid entry
|
|
$this->type('Project Baru','name');
|
|
$this->select('','customer_id');
|
|
$this->type('2016-04-15','proposal_date');
|
|
$this->type('2000000','proposal_value');
|
|
$this->type('Deskripsi project baru','description');
|
|
$this->press(trans('project.create'));
|
|
$this->seePageIs('/projects/create');
|
|
$this->notSeeInDatabase('projects', ['name' => 'Project Baru', 'proposal_value' => '2000000']);
|
|
|
|
$this->type('Customer Baru','customer_name');
|
|
$this->type('email@customer.baru','customer_email');
|
|
$this->press(trans('project.create'));
|
|
$this->seePageIs('/projects');
|
|
$this->see(trans('project.created'));
|
|
$this->see('Project Baru');
|
|
$this->seeInDatabase('users', ['name' => 'Customer Baru', 'email' => 'email@customer.baru']);
|
|
$newCustomer = User::whereName('Customer Baru')->whereEmail('email@customer.baru')->first();
|
|
$this->seeInDatabase('projects', ['name' => 'Project Baru', 'proposal_value' => '2000000', 'customer_id' => $newCustomer->id]);
|
|
}
|
|
|
|
/** @test */
|
|
public function admin_can_delete_a_project()
|
|
{
|
|
$user = factory(User::class)->create();
|
|
$user->assignRole('admin');
|
|
$this->actingAs($user);
|
|
|
|
$project = factory(Project::class)->create();
|
|
$this->visit('/projects');
|
|
$this->click(trans('app.edit'));
|
|
$this->click(trans('app.delete'));
|
|
$this->press(trans('app.delete_confirm_button'));
|
|
$this->seePageIs('projects');
|
|
$this->see(trans('project.deleted'));
|
|
}
|
|
}
|