RequirementTest.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace Tests\Feature\API;
  3. use App\Models\Asset;
  4. use App\Models\Plan;
  5. use App\Models\Requirement;
  6. use Database\Factories\AssetFactory;
  7. use Illuminate\Foundation\Testing\RefreshDatabase;
  8. use Illuminate\Foundation\Testing\WithFaker;
  9. use Tests\Feature\TestCase;
  10. class RequirementTest extends TestCase
  11. {
  12. public function test_requirement_create(): void
  13. {
  14. $form = Requirement::factory()->make();
  15. $response = $this->post(route('requirement.store'), $form->toArray());
  16. $response->assertStatus(201);
  17. }
  18. public function test_requirement_query_by_site_id(): void
  19. {
  20. $asset = AssetFactory::new()->create();
  21. Requirement::factory(30)->create([
  22. 'asset_id' => $asset->id,
  23. ]);
  24. $response = $this->get(route('requirement.byAsset', ['asset_id' => $asset->id]));
  25. $response->assertStatus(200)->assertJsonStructure($this->simplePaginateResponseStructure([
  26. 'id',
  27. 'priority',
  28. 'title',
  29. 'created_by',
  30. 'plan',
  31. 'status',
  32. ]));
  33. }
  34. public function test_requirement_show(): void
  35. {
  36. $requirement = Requirement::factory()->create();
  37. $response = $this->get(route('requirement.show', ['requirement' => $requirement->id]));
  38. $response->assertStatus(200)->assertJsonStructure([
  39. 'data' => [
  40. 'title',
  41. 'status',
  42. 'asset_id',
  43. 'plan_id',
  44. 'requirement_group_id',
  45. 'requirement_group',
  46. 'asset',
  47. 'reviewed_by',
  48. 'priority',
  49. 'note',
  50. 'description',
  51. 'acceptance',
  52. 'mailto',
  53. 'created_by',
  54. 'created_at',
  55. 'updated_at',
  56. ]
  57. ]);
  58. }
  59. public function test_link_plan(): void
  60. {
  61. $asset = Asset::factory()->create();
  62. $plan = Plan::factory()->create([
  63. 'asset_id' => $asset->id,
  64. ]);
  65. $requirementIds = [];
  66. for ($i = 0; $i < 10; ++$i) {
  67. $requirementIds[] = Requirement::factory()->create(['asset_id' => $asset->id])?->id;
  68. }
  69. $response = $this->patch(route('requirement.linkPlan', ['plan_id' => $plan->id]), [
  70. 'requirement_ids' => $requirementIds,
  71. ]);
  72. $response->assertStatus(204);
  73. }
  74. }