John Kim пре 8 година
родитељ
комит
4cde98644b

+ 9
- 1
pom.xml Прегледај датотеку

@@ -7,6 +7,14 @@
7 7
     <groupId>com.zipcoder</groupId>
8 8
     <artifactId>payment</artifactId>
9 9
     <version>1.0-SNAPSHOT</version>
10
-
10
+    <dependencies>
11
+        <!-- https://mvnrepository.com/artifact/junit/junit -->
12
+        <dependency>
13
+            <groupId>junit</groupId>
14
+            <artifactId>junit</artifactId>
15
+            <version>4.12</version>
16
+            <scope>test</scope>
17
+        </dependency>
18
+    </dependencies>
11 19
 
12 20
 </project>

+ 58
- 0
src/main/java/com/zipcoder/payment/Check.java Прегледај датотеку

@@ -0,0 +1,58 @@
1
+package com.zipcoder.payment;
2
+
3
+public class Check implements Payment {
4
+
5
+    private Long id;
6
+    private String payerName;
7
+    private String routingNumber;
8
+    private String accountNumber;
9
+
10
+    public Check(Long id, String payerName, String routingNumber, String accountNumber) {
11
+        this.id = id;
12
+        this.payerName = payerName;
13
+        this.accountNumber = accountNumber;
14
+        this.routingNumber = routingNumber;
15
+    }
16
+
17
+    public Check() {}
18
+
19
+    public Long getId() {
20
+        return id;
21
+    }
22
+
23
+    public void setId(Long id) {
24
+        this.id = id;
25
+    }
26
+
27
+    public String getPayerName() {
28
+        return payerName;
29
+    }
30
+
31
+    public void setPayerName(String payerName) {
32
+        this.payerName = payerName;
33
+    }
34
+
35
+    public String getRoutingNumber() {
36
+        return routingNumber;
37
+    }
38
+
39
+    public void setRoutingNumber(String routingNumber) {
40
+        this.routingNumber = routingNumber;
41
+    }
42
+
43
+    public String getAccountNumber() {
44
+        return accountNumber;
45
+    }
46
+
47
+    public void setAccountNumber(String accountNumber) {
48
+        this.accountNumber = accountNumber;
49
+    }
50
+
51
+    public String getShortDescription() {
52
+        return "Check " + payerName + " " + "***" + accountNumber.substring(accountNumber.length() - 4);
53
+    }
54
+
55
+    public int compareTo(Payment o) {
56
+        return this.id.compareTo(o.getId());
57
+    }
58
+}

+ 59
- 0
src/main/java/com/zipcoder/payment/CreditCard.java Прегледај датотеку

@@ -0,0 +1,59 @@
1
+package com.zipcoder.payment;
2
+
3
+public class CreditCard implements Payment {
4
+
5
+    private Long id;
6
+    private String payerName;
7
+    private String number;
8
+    private int expiredMonth;
9
+    private int expiredYear;
10
+
11
+    public Long getId() {
12
+        return id;
13
+    }
14
+
15
+    public void setId(Long id) {
16
+        this.id = id;
17
+    }
18
+
19
+    public String getPayerName() {
20
+        return payerName;
21
+    }
22
+
23
+    public void setPayerName(String playerName) {
24
+        this.payerName = playerName;
25
+    }
26
+
27
+    public String getNumber() {
28
+        return number;
29
+    }
30
+
31
+    public void setNumber(String number) {
32
+        this.number = number;
33
+    }
34
+
35
+    public int getExpiredMonth() {
36
+        return expiredMonth;
37
+    }
38
+
39
+    public void setExpiredMonth(int expiredMonth) {
40
+        this.expiredMonth = expiredMonth;
41
+    }
42
+
43
+    public int getExpiredYear() {
44
+        return expiredYear;
45
+    }
46
+
47
+    public void setExpiredYear(int expiredYear) {
48
+        this.expiredYear = expiredYear;
49
+    }
50
+
51
+    public String getShortDescription() {
52
+        return "CC " + payerName + " " + number.substring(number.length() - 4) + " " + expiredMonth
53
+                + "/" + expiredYear;
54
+    }
55
+
56
+    public int compareTo(Payment o) {
57
+        return this.id.compareTo(o.getId());
58
+    }
59
+}

+ 49
- 0
src/main/java/com/zipcoder/payment/PayPal.java Прегледај датотеку

@@ -0,0 +1,49 @@
1
+package com.zipcoder.payment;
2
+
3
+public class PayPal implements Payment {
4
+
5
+    private Long id;
6
+    private String payerName;
7
+    private String email;
8
+
9
+    public PayPal(Long id, String payerName, String email) {
10
+        this.id = id;
11
+        this.payerName = payerName;
12
+        this.email = email;
13
+    }
14
+
15
+    public PayPal() {
16
+
17
+    }
18
+    public Long getId() {
19
+        return id;
20
+    }
21
+
22
+    public void setId(Long id) {
23
+        this.id = id;
24
+    }
25
+
26
+    public String getPayerName() {
27
+        return payerName;
28
+    }
29
+
30
+    public void setPayerName(String payerName) {
31
+        this.payerName = payerName;
32
+    }
33
+
34
+    public String getEmail() {
35
+        return email;
36
+    }
37
+
38
+    public void setEmail(String email) {
39
+        this.email = email;
40
+    }
41
+
42
+    public String getShortDescription() {
43
+        return "Paypal " + payerName + " " + email;
44
+    }
45
+
46
+    public int compareTo(Payment o) {
47
+        return this.id.compareTo(o.getId());
48
+    }
49
+}

+ 8
- 0
src/main/java/com/zipcoder/payment/Payment.java Прегледај датотеку

@@ -0,0 +1,8 @@
1
+package com.zipcoder.payment;
2
+
3
+public interface Payment extends Comparable<Payment>{
4
+
5
+    Long getId();
6
+    String getPayerName();
7
+    String getShortDescription();
8
+}

+ 22
- 0
src/main/java/com/zipcoder/payment/PaymentPresenter.java Прегледај датотеку

@@ -1,6 +1,28 @@
1 1
 package com.zipcoder.payment;
2 2
 
3
+import java.util.Arrays;
4
+
3 5
 public class PaymentPresenter {
4 6
 
7
+    public String toString(Payment[] payments) {
8
+        if (payments == null || payments.length == 0) {
9
+            return "";
10
+        }
11
+
12
+        StringBuilder paymentStringBuilder = new StringBuilder();
13
+        Arrays.sort(payments, new PaymentSortByPayer());
14
+        for (Payment payment : payments) {
15
+            paymentStringBuilder.append(payment.getShortDescription() + "\n");
16
+        }
17
+        return paymentStringBuilder.toString();
18
+    }
19
+
20
+    public String toStringByPayerName(Payment[] payments) {
21
+        if (payments == null || payments.length == 0) {
22
+            return "";
23
+        }
5 24
 
25
+        StringBuilder paymentStringBuilder = new StringBuilder();
26
+        return null;
27
+    }
6 28
 }

+ 9
- 0
src/main/java/com/zipcoder/payment/PaymentSortByPayer.java Прегледај датотеку

@@ -0,0 +1,9 @@
1
+package com.zipcoder.payment;
2
+
3
+import java.util.Comparator;
4
+
5
+public class PaymentSortByPayer implements Comparator<Payment> {
6
+    public int compare(Payment o1, Payment o2) {
7
+        return o1.getPayerName().compareTo(o2.getPayerName());
8
+    }
9
+}

+ 55
- 0
src/test/java/com/zipcoder/payment/CheckTest.java Прегледај датотеку

@@ -0,0 +1,55 @@
1
+package com.zipcoder.payment;
2
+
3
+import org.junit.Before;
4
+import org.junit.Test;
5
+
6
+import static org.junit.Assert.*;
7
+
8
+public class CheckTest {
9
+
10
+    private Check check;
11
+
12
+    @Before
13
+    public void setUp() {
14
+        check = new Check();
15
+    }
16
+
17
+    @Test
18
+    public void getSetIdTest() {
19
+        check.setId(323L);
20
+        assertEquals(323L, check.getId(), 1);
21
+    }
22
+
23
+    @Test
24
+    public void getSetPayerNameTest() {
25
+        check.setPayerName("John");
26
+        assertEquals("John", check.getPayerName());
27
+    }
28
+
29
+    @Test
30
+    public void getSetRoutingNumberTest() {
31
+        check.setRoutingNumber("324-232");
32
+        assertEquals("324-232", check.getRoutingNumber());
33
+    }
34
+
35
+    @Test
36
+    public void getSetAccountNumberTest() {
37
+        check.setAccountNumber("3333");
38
+        assertEquals("3333", check.getAccountNumber());
39
+    }
40
+
41
+    @Test
42
+    public void getShortDescriptionTest() {
43
+        check.setPayerName("Tia Mowry");
44
+        check.setAccountNumber("3334551");
45
+        assertEquals("Check Tia Mowry ***4551", check.getShortDescription());
46
+    }
47
+
48
+    @Test
49
+    public void compareToTest() {
50
+        Check check1 = new Check();
51
+        check.setId(333L);
52
+        check1.setId(333L);
53
+        assertEquals(0, check.compareTo(check1));
54
+    }
55
+}

+ 65
- 0
src/test/java/com/zipcoder/payment/CreditCardTest.java Прегледај датотеку

@@ -0,0 +1,65 @@
1
+package com.zipcoder.payment;
2
+
3
+import org.junit.Before;
4
+import org.junit.Test;
5
+
6
+import static org.junit.Assert.*;
7
+
8
+public class CreditCardTest {
9
+
10
+    private CreditCard creditCard;
11
+
12
+    @Before
13
+    public void setUp() {
14
+        creditCard = new CreditCard();
15
+    }
16
+
17
+    @Test
18
+    public void getIdTest() {
19
+        creditCard.setId(3453453524234L);
20
+        assertEquals(3453453524234L, creditCard.getId(), 10);
21
+    }
22
+
23
+    @Test
24
+    public void getPayerNameTest() {
25
+        creditCard.setPayerName("john");
26
+        assertEquals("john", creditCard.getPayerName());
27
+    }
28
+
29
+    @Test
30
+    public void getExpiredMonthTest() {
31
+        creditCard.setExpiredMonth(10);
32
+        assertEquals(10, creditCard.getExpiredMonth());
33
+    }
34
+
35
+    @Test
36
+    public void getExpiredYearTest() {
37
+        creditCard.setExpiredYear(20);
38
+        assertEquals(20, creditCard.getExpiredYear());
39
+    }
40
+
41
+    @Test
42
+    public void getNumberTest() {
43
+        creditCard.setNumber("32423");
44
+        assertEquals("32423", creditCard.getNumber());
45
+    }
46
+
47
+    @Test
48
+    public void getShortDescriptionTest() {
49
+        creditCard.setPayerName("Tia Mowry");
50
+        creditCard.setNumber("8334551");
51
+        creditCard.setExpiredMonth(10);
52
+        creditCard.setExpiredYear(2019);
53
+        String expected = "CC Tia Mowry 4551 10/2019";
54
+
55
+        assertEquals(expected, creditCard.getShortDescription());
56
+    }
57
+
58
+    @Test
59
+    public void compareToTest() {
60
+        CreditCard creditCard1 = new CreditCard();
61
+        creditCard1.setId(334L);
62
+        creditCard.setId(333L);
63
+        assertEquals(-1, creditCard.compareTo(creditCard1));
64
+    }
65
+}

+ 49
- 0
src/test/java/com/zipcoder/payment/PayPalTest.java Прегледај датотеку

@@ -0,0 +1,49 @@
1
+package com.zipcoder.payment;
2
+
3
+import org.junit.Before;
4
+import org.junit.Test;
5
+
6
+import static org.junit.Assert.*;
7
+
8
+public class PayPalTest {
9
+
10
+    private PayPal payPal;
11
+
12
+    @Before
13
+    public void setUp() {
14
+        payPal = new PayPal();
15
+    }
16
+
17
+    @Test
18
+    public void getId() {
19
+        payPal.setId(333L);
20
+        assertEquals(333L, payPal.getId(), 1);
21
+    }
22
+
23
+    @Test
24
+    public void getPayerName() {
25
+        payPal.setPayerName("John");
26
+        assertEquals("John", payPal.getPayerName());
27
+    }
28
+
29
+    @Test
30
+    public void getEmail() {
31
+        payPal.setEmail("13jkim@gmail.com");
32
+        assertEquals("13jkim@gmail.com", payPal.getEmail());
33
+    }
34
+
35
+    @Test
36
+    public void getShortDescription() {
37
+        payPal.setPayerName("Tia Mowry");
38
+        payPal.setEmail("tia@mowry.com");
39
+        assertEquals("Paypal Tia Mowry tia@mowry.com", payPal.getShortDescription());
40
+    }
41
+
42
+    @Test
43
+    public void compareToTest1() {
44
+        PayPal payPal2 = new PayPal();
45
+        payPal2.setId(333L);
46
+        payPal.setId(333L);
47
+        assertEquals(0, payPal.compareTo(payPal2));
48
+    }
49
+}

+ 46
- 0
src/test/java/com/zipcoder/payment/PaymentPresenterTest.java Прегледај датотеку

@@ -1,4 +1,50 @@
1 1
 package com.zipcoder.payment;
2 2
 
3
+import org.junit.Test;
4
+import static org.junit.Assert.*;
5
+
3 6
 public class PaymentPresenterTest {
7
+
8
+    @Test
9
+    public void toStringTest() {
10
+        Payment[] payments = new Payment[0];
11
+        PaymentPresenter presenter = new PaymentPresenter();
12
+        String expected = "";
13
+
14
+        String actual = presenter.toString(payments);
15
+
16
+        assertEquals(expected, actual);
17
+    }
18
+
19
+    @Test
20
+    public void toStringTest2() {
21
+        Payment[] payments = new Payment[2];
22
+        Payment paypal = new PayPal(4L, "Tia Mowry", "tia@mowry.com");
23
+        Payment check = new Check(81L, "Tia Mowry", "11432543", "134344551");
24
+
25
+        payments[0] = paypal;
26
+        payments[1] = check;
27
+
28
+        PaymentPresenter presenter = new PaymentPresenter();
29
+        String expected = "Check Tia Mowry ***4551\nPaypal Tia Mowry tia@mowry.com\n";
30
+
31
+        String actual = presenter.toString(payments);
32
+        assertEquals(expected, actual);
33
+    }
34
+
35
+    @Test
36
+    public void toStringByPayerName() {
37
+        Payment[] payments = new Payment[2];
38
+        Payment paypal = new PayPal(4L, "Tamara Mowry", "tamara@mowry.com");
39
+        Payment check = new Check(81L, "Tia Mowry", "11432543", "134344551");
40
+
41
+        payments[0] = paypal;
42
+        payments[1] = check;
43
+
44
+        PaymentPresenter presenter = new PaymentPresenter();
45
+        String expected = "Paypal Tamara Mowry tamara@mowry.com\nCheck Tia Mowry ***4551\n";
46
+
47
+        String actual = presenter.toStringByPayerName(payments);
48
+        assertEquals(expected, actual);
49
+    }
4 50
 }

+ 18
- 0
src/test/java/com/zipcoder/payment/PaymentSortByPayerTest.java Прегледај датотеку

@@ -0,0 +1,18 @@
1
+package com.zipcoder.payment;
2
+
3
+import org.junit.Test;
4
+
5
+import static org.junit.Assert.*;
6
+
7
+public class PaymentSortByPayerTest {
8
+
9
+    @Test
10
+    public void compareTest() {
11
+        PaymentSortByPayer sortByPayer = new PaymentSortByPayer();
12
+        CreditCard creditCard1 = new CreditCard();
13
+        CreditCard creditCard2 = new CreditCard();
14
+        creditCard1.setPayerName("John");
15
+        creditCard2.setPayerName("John");
16
+        assertEquals(0, sortByPayer.compare(creditCard1,creditCard2));
17
+    }
18
+}