Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,7 @@ private String buildSearchQuery(JobPostingExtractResponse extracted) {
normalize(extracted.jobTitle()),
normalize(extracted.task()),
normalize(extracted.requirements()),
normalize(extracted.preferredQualifications()),
normalize(extracted.rawText())
normalize(extracted.preferredQualifications())
).trim();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ public static User signup(
.role(UserRole.USER)
.socialType(SocialType.LOCAL)
.socialId(null)
.credit(0)
.credit(1)
.build();
}

Expand All @@ -92,7 +92,7 @@ public static User createSocialUser(
.socialType(socialType)
.socialId(socialId)
.role(UserRole.USER)
.credit(0)
.credit(1)
.build();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.jobdri.jobdri_api.domain.jobposting.service;

import com.jobdri.jobdri_api.domain.classification.repository.DetailClassificationRepository;
import com.jobdri.jobdri_api.domain.jobposting.dto.response.JobPostingExtractResponse;
import com.jobdri.jobdri_api.domain.jobposting.repository.JobPostingClassificationCandidateProjection;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.ArgumentCaptor;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;

import java.util.List;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@ExtendWith(MockitoExtension.class)
class JobPostingClassificationServiceTest {

@Mock
private DetailClassificationRepository detailClassificationRepository;

@InjectMocks
private JobPostingClassificationService jobPostingClassificationService;

@Test
@DisplayName("후보 검색 쿼리는 rawText를 제외한 구조화 필드만 사용한다")
void findCandidatesUsesStructuredFieldsOnly() {
JobPostingExtractResponse extracted = new JobPostingExtractResponse(
"해커스 교육그룹",
"클라우드 엔지니어 (CLOUD Engineer)",
"클라우드 운영 및 관리",
"1. 리눅스 환경 사용 경험 필수\n2. 네트워크 지식 필수",
"1. AWS, NCP, GCP, azure 클라우드 운영 경험",
"해커스 교육그룹 개발자 RECRUIT 소프트웨어 교육 교육 기획",
0.9
);
when(detailClassificationRepository.findTopCandidatesByTrigram(org.mockito.ArgumentMatchers.anyString(), org.mockito.ArgumentMatchers.eq(5)))
.thenReturn(List.<JobPostingClassificationCandidateProjection>of());

jobPostingClassificationService.findCandidates(extracted, 5);

ArgumentCaptor<String> queryCaptor = ArgumentCaptor.forClass(String.class);
verify(detailClassificationRepository).findTopCandidatesByTrigram(queryCaptor.capture(), org.mockito.ArgumentMatchers.eq(5));

String query = queryCaptor.getValue();
assertThat(query).contains("클라우드 엔지니어 (CLOUD Engineer)");
assertThat(query).contains("클라우드 운영 및 관리");
assertThat(query).contains("리눅스 환경 사용 경험 필수");
assertThat(query).contains("AWS, NCP, GCP, azure 클라우드 운영 경험");
assertThat(query).doesNotContain("해커스 교육그룹");
assertThat(query).doesNotContain("소프트웨어 교육");
assertThat(query).doesNotContain("교육 기획");
}
}
Loading