[feat] 운영서포터즈 직군 세분화#587
Conversation
WalkthroughJobFamily enum에 운영팀(OPS), 인프라팀(INFRA), BX팀(BX), 대외협력팀(ER) 4개 상수가 추가되었으며, 각 상수는 한국어 표시명과 false 값의 포트폴리오 필수 여부를 갖습니다. 관련 테스트 파일(JobFamilyTest, FileControllerTest, ApplicationPeriodTest)에서 신규 직군에 대한 검증 및 Redis 모킹이 확장되었습니다. ChangesJobFamily 신규 직군 추가
Estimated code review effort: 1 (Trivial) | ~5 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Test Results413 tests 413 ✅ 13s ⏱️ Results for commit 003c15b. |
📊테스트 커버리지
|
There was a problem hiding this comment.
🧹 Nitpick comments (2)
src/test/java/org/ject/support/testconfig/ApplicationPeriodTest.java (1)
28-47: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win
ApplicationPeriodTest도JobFamily.values()반복문으로 리팩터링을 권장합니다.
FileControllerTest에서 제안한 것과 동일한 패턴입니다.setUp()의 개별 JobFamily 스텁도 반복문으로 대체하면 향후 직군 추가 시 이 파일을 수정할 필요가 없습니다.♻️ 제안하는 리팩터링
- when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.PM.name()))) - .thenReturn(Boolean.toString(true)); - when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.PD.name()))) - .thenReturn(Boolean.toString(true)); - when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.FE.name()))) - .thenReturn(Boolean.toString(true)); - when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.BE.name()))) - .thenReturn(Boolean.toString(true)); - when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.APP.name()))) - .thenReturn(Boolean.toString(true)); - when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.SUPPORTER.name()))) - .thenReturn(Boolean.toString(true)); - when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.OPS.name()))) - .thenReturn(Boolean.toString(true)); - when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.INFRA.name()))) - .thenReturn(Boolean.toString(true)); - when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.BX.name()))) - .thenReturn(Boolean.toString(true)); - when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.ER.name()))) - .thenReturn(Boolean.toString(true)); + for (JobFamily jobFamily : JobFamily.values()) { + when(valueOperations.get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, jobFamily.name()))) + .thenReturn(Boolean.toString(true)); + }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/test/java/org/ject/support/testconfig/ApplicationPeriodTest.java` around lines 28 - 47, `ApplicationPeriodTest`의 `setUp()`에서 `valueOperations.get(...)`를 JobFamily별로 하나씩 스텁하는 중복을 `JobFamily.values()` 반복문으로 제거하세요. `ApplicationPeriodTest`와 `valueOperations.get` 호출 패턴을 유지하되, 각 `JobFamily`에 대해 동일한 true 응답을 한 번에 설정하도록 리팩터링하면 됩니다. `Constants.RECRUIT_FLAG_PREFIX` 조합 로직은 그대로 두고, 개별 `JobFamily.PM`~`JobFamily.ER` 하드코딩을 반복문 기반으로 바꿔 주세요.src/test/java/org/ject/support/domain/file/controller/FileControllerTest.java (1)
101-120: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winRedis 모킹 패턴을
JobFamily.values()반복문으로 리팩터링을 권장합니다.새로운 JobFamily가 추가될 때마다
ApplicationPeriodTest와FileControllerTest양쪽에 개별when(...)스텁을 수동으로 추가해야 합니다.JobFamily.values()를 순회하는 반복문으로 대체하면 향후 직군 추가 시 테스트 파일을 수정할 필요가 없어 유지보수성이 크게 향상됩니다.♻️ 제안하는 리팩터링
- when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.PM.name()))) - .thenReturn(Boolean.toString(false)); - when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.PD.name()))) - .thenReturn(Boolean.toString(false)); - when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.FE.name()))) - .thenReturn(Boolean.toString(false)); - when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.BE.name()))) - .thenReturn(Boolean.toString(false)); - when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.APP.name()))) - .thenReturn(Boolean.toString(false)); - when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.SUPPORTER.name()))) - .thenReturn(Boolean.toString(false)); - when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.OPS.name()))) - .thenReturn(Boolean.toString(false)); - when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.INFRA.name()))) - .thenReturn(Boolean.toString(false)); - when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.BX.name()))) - .thenReturn(Boolean.toString(false)); - when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, JobFamily.ER.name()))) - .thenReturn(Boolean.toString(false)); + for (JobFamily jobFamily : JobFamily.values()) { + when(redisTemplate.opsForValue().get(String.format("%s%s", Constants.RECRUIT_FLAG_PREFIX, jobFamily.name()))) + .thenReturn(Boolean.toString(false)); + }
ApplicationPeriodTest의setUp()에도 동일한 패턴을 적용하면 일관성을 유지할 수 있습니다.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/test/java/org/ject/support/domain/file/controller/FileControllerTest.java` around lines 101 - 120, The Redis stubbing in FileControllerTest is duplicated per JobFamily and should be refactored to avoid adding new when(...) calls for every future role. Update the test setup in the FileControllerTest class to iterate over JobFamily.values() and stub redisTemplate.opsForValue().get(...) dynamically for each enum value, using the existing Constants.RECRUIT_FLAG_PREFIX and JobFamily.name() pattern. Keep the same behavior for all current job families, and apply the same approach in ApplicationPeriodTest if it uses the same manual stubbing pattern.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In
`@src/test/java/org/ject/support/domain/file/controller/FileControllerTest.java`:
- Around line 101-120: The Redis stubbing in FileControllerTest is duplicated
per JobFamily and should be refactored to avoid adding new when(...) calls for
every future role. Update the test setup in the FileControllerTest class to
iterate over JobFamily.values() and stub redisTemplate.opsForValue().get(...)
dynamically for each enum value, using the existing
Constants.RECRUIT_FLAG_PREFIX and JobFamily.name() pattern. Keep the same
behavior for all current job families, and apply the same approach in
ApplicationPeriodTest if it uses the same manual stubbing pattern.
In `@src/test/java/org/ject/support/testconfig/ApplicationPeriodTest.java`:
- Around line 28-47: `ApplicationPeriodTest`의 `setUp()`에서
`valueOperations.get(...)`를 JobFamily별로 하나씩 스텁하는 중복을 `JobFamily.values()` 반복문으로
제거하세요. `ApplicationPeriodTest`와 `valueOperations.get` 호출 패턴을 유지하되, 각
`JobFamily`에 대해 동일한 true 응답을 한 번에 설정하도록 리팩터링하면 됩니다.
`Constants.RECRUIT_FLAG_PREFIX` 조합 로직은 그대로 두고, 개별 `JobFamily.PM`~`JobFamily.ER`
하드코딩을 반복문 기반으로 바꿔 주세요.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 47146a06-e108-4c08-aed8-2d3649475a3f
📒 Files selected for processing (4)
src/main/java/org/ject/support/domain/member/JobFamily.javasrc/test/java/org/ject/support/domain/file/controller/FileControllerTest.javasrc/test/java/org/ject/support/domain/member/JobFamilyTest.javasrc/test/java/org/ject/support/testconfig/ApplicationPeriodTest.java
#️⃣연관된 이슈
close #586
📝 작업 내용
운영 서포터즈 직군 세분화 반영 (jobfamily 추가, 기존데이터 호환을위해 SUPPORTER 유지)
🙏 리뷰 요구사항 (선택)
Summary by CodeRabbit