123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- <?php
- namespace Tests\Feature\API;
- use App\Models\Asset;
- use App\Models\Enums\ProjectStatus;
- use App\Models\Plan;
- use App\Models\Project;
- use App\Models\ProjectPlan;
- use Carbon\Carbon;
- use Illuminate\Foundation\Testing\RefreshDatabase;
- use Illuminate\Foundation\Testing\WithFaker;
- use Tests\Feature\TestCase;
- class ProjectTest extends TestCase
- {
- public function test_project_list()
- {
- Project::factory(30)->create();
- $response = $this->get(route('project.index'));
- $response->assertStatus(200)
- ->assertJsonStructure([
- 'data' => [
- '*' => [
- 'id',
- 'name',
- 'code',
- 'status',
- 'const',
- 'begin',
- 'end',
- 'available_days',
- ]
- ]
- ]);
- }
- public function test_project_create(): void
- {
- $form = Project::factory()->make();
- $form->whitelist = [
- 1
- ];
- $form->plans = [
- Plan::factory()->create()->id,
- Plan::factory()->create()->id,
- ];
- $form->assets = [
- Asset::factory()->create()->id,
- Asset::factory()->create()->id,
- ];
- $response = $this->post(route('project.store'), $form->toArray());
- $response->assertStatus(201);
- }
- public function test_project_update(): void
- {
- $project = Project::factory()->create();
- $form = Project::factory()->make();
- $form->whitelist = [1];
- $form->plans = [
- Plan::factory()->create()->id,
- Plan::factory()->create()->id,
- ];
- $form->assets = [
- Asset::factory()->create()->id,
- Asset::factory()->create()->id,
- ];
- $response = $this->put(route('project.update', ['project' => $project->id]), $form->toArray());
- $response->assertStatus(204);
- $newAsset = Project::find($project->id);
- $this->assertEquals($form->name, $newAsset->name);
- }
- public function test_project_delete(): void
- {
- $project = Project::factory()->create();
- $response = $this->delete(route('project.destroy', ['project' => $project->id]));
- $response->assertStatus(204);
- $this->assertNull(Project::find($project->id));
- }
- public function test_project_closed(): void
- {
- $project = Project::factory()->create();
- $response = $this->patch(route('project.closed', ['project' => $project->id]));
- $response->assertStatus(204);
- $this->assertEquals(Project::find($project->id)->status, ProjectStatus::CLOSED->value);
- }
- public function test_project_start(): void
- {
- $project = Project::factory()->create();
- $response = $this->patch(route('project.start', ['project' => $project->id]));
- $response->assertStatus(204);
- $this->assertEquals(Project::find($project->id)->status, ProjectStatus::DOING->value);
- }
- public function test_project_pause(): void
- {
- $project = Project::factory()->create();
- $response = $this->patch(route('project.pause', ['project' => $project->id]));
- $response->assertStatus(204);
- $this->assertEquals(Project::find($project->id)->status, ProjectStatus::PAUSE->value);
- }
- public function test_project_postpone(): void
- {
- $project = Project::factory()->create();
- $response = $this->patch(route('project.postpone', ['project' => $project->id]), [
- 'begin' => Carbon::now()->toDateString(),
- 'end' => Carbon::now()->addDays(3)->toDateString(),
- 'available_days' => 3,
- ]);
- $response->assertStatus(204);
- }
- public function test_project_plans_test(): void
- {
- $project = Project::factory()->create();
- $plan = Plan::factory()->create();
- $projectPlan = ProjectPlan::create([
- 'project_id' => $project->id,
- 'plan_id' => $plan->id,
- ]);
- $response = $this->get(route('project.plan', ['project' => $project->id]));
- $response->assertStatus(200)
- ->assertJsonStructure([
- 'data' => [
- '*' => [
- 'id',
- 'title'
- ]
- ]
- ])->assertJsonPath("data.0.id", $projectPlan->id);
- }
- }
|