create([ 'email' => 'apidoc-sample-user@example.com', 'name' => 'API 문서 샘플 사용자', ]); } /** * 시더가 계약을 구현한다. */ public function test_seeder_implements_contract(): void { $this->assertInstanceOf(ApiDocSampleSeeder::class, new ApiDocSampleService); } /** * 시더가 발행된 정책 버전 대표 샘플을 생성한다. */ public function test_seed_creates_policy_version(): void { (new ApiDocSampleService)->seed(); $version = GdprPolicyVersion::query()->where('version', 1)->first(); $this->assertNotNull($version); $this->assertSame(1, $version->version); $this->assertNotNull($version->change_type); } /** * 시더가 policy-versions 도메인의 path_params 맵을 반환한다. */ public function test_seed_returns_policy_versions_path_params_map(): void { $map = (new ApiDocSampleService)->seed(); $this->assertArrayHasKey('policy-versions', $map); $entry = $map['policy-versions']; $this->assertSame(GdprPolicyVersion::class, $entry['model']); $this->assertSame('version', $entry['key']); $this->assertArrayHasKey('version', $entry['path_params']); $this->assertSame('1', $entry['path_params']['version']); } /** * 재실행 시 정책 버전이 중복 생성되지 않는다 (멱등). */ public function test_seed_is_idempotent(): void { (new ApiDocSampleService)->seed(); (new ApiDocSampleService)->seed(); $this->assertSame(1, GdprPolicyVersion::query()->where('version', 1)->count()); } }