File size: 4,477 Bytes
729af73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
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());
    }
}