resume-parser / src /test /java /com /resumeparser /processor /CertExtractorTest.java
hari7775's picture
Deploy: Fix certificate title date and month parsing heuristics
729af73
Raw History Blame Contribute Delete
4.48 kB
package com.resumeparser.processor;
import com.resumeparser.model.Candidate;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
class CertExtractorTest {
private CertExtractor certExtractor;
@BeforeEach
void setUp() {
certExtractor = new CertExtractor();
}
@Test
void testLongTitleWithMonthAndYearDoesNotMergeMonthIntoTitle() {
String input = "• AWS Certified Solutions Architect - Professional - Amazon Web Services, May 2023";
List<Candidate.Certification> certs = certExtractor.extractCertifications(input);
assertEquals(1, certs.size());
Candidate.Certification cert = certs.get(0);
assertEquals("AWS Certified Solutions Architect - Professional", cert.getName());
assertEquals("Amazon Web Services", cert.getIssuer());
assertEquals("May 2023", cert.getDate());
}
@Test
void testLongTitleWithoutDelimiterBeforeDate() {
String input = "• Advanced Machine Learning and Deep Neural Networks Specialization September 2022";
List<Candidate.Certification> certs = certExtractor.extractCertifications(input);
assertEquals(1, certs.size());
Candidate.Certification cert = certs.get(0);
assertEquals("Advanced Machine Learning and Deep Neural Networks Specialization", cert.getName());
assertEquals("September 2022", cert.getDate());
assertFalse(cert.getName().contains("September"), "Month should not be merged into title");
}
@Test
void testMultiLineWrappedTitleWithBullet() {
String input = "• Google Cloud Certified Professional Cloud Security Engineer\n" +
" Google Cloud\n" +
" Issued: October 2023\n" +
" Credential ID: GCE-987654";
List<Candidate.Certification> certs = certExtractor.extractCertifications(input);
assertEquals(1, certs.size());
Candidate.Certification cert = certs.get(0);
assertEquals("Google Cloud Certified Professional Cloud Security Engineer", cert.getName());
assertEquals("Google Cloud", cert.getIssuer());
assertEquals("October 2023", cert.getDate());
assertEquals("GCE-987654", cert.getCredentialId());
}
@Test
void testDateInParenthesesAndRange() {
String input = "• Certified Information Systems Security Professional (CISSP) (May 2021 - May 2024)";
List<Candidate.Certification> certs = certExtractor.extractCertifications(input);
assertEquals(1, certs.size());
Candidate.Certification cert = certs.get(0);
assertEquals("Certified Information Systems Security Professional (CISSP)", cert.getName());
assertEquals("May 2021 - May 2024", cert.getDate());
assertFalse(cert.getName().contains("May"), "Month should not be merged into title");
}
@Test
void testNumericMonthAndLink() {
String input = "• HashiCorp Certified: Terraform Associate (003) - HashiCorp, 04/2023\n" +
" https://www.credly.com/badges/abc-123";
List<Candidate.Certification> certs = certExtractor.extractCertifications(input);
assertEquals(1, certs.size());
Candidate.Certification cert = certs.get(0);
assertEquals("HashiCorp Certified: Terraform Associate (003)", cert.getName());
assertEquals("HashiCorp", cert.getIssuer());
assertEquals("04/2023", cert.getDate());
assertEquals("https://www.credly.com/badges/abc-123", cert.getLink());
}
@Test
void testMultipleCertifications() {
String input = "• Meta Front-End Developer Professional Certificate - Coursera - August 2022\n" +
"• Certified Kubernetes Administrator (CKA) - Linux Foundation - Jan 2023";
List<Candidate.Certification> certs = certExtractor.extractCertifications(input);
assertEquals(2, certs.size());
assertEquals("Meta Front-End Developer Professional Certificate", certs.get(0).getName());
assertEquals("Coursera", certs.get(0).getIssuer());
assertEquals("August 2022", certs.get(0).getDate());
assertEquals("Certified Kubernetes Administrator (CKA)", certs.get(1).getName());
assertEquals("Linux Foundation", certs.get(1).getIssuer());
assertEquals("Jan 2023", certs.get(1).getDate());
}
}