// Path: src/main/java/com/cardinity/exceptions/ValidationException.java
// public class ValidationException extends CardinityException {
// 
//     private static final long serialVersionUID = -2152842451308691156L;
// 
//     public ValidationException(String message) {
//         super(message);
//     }
// }
// 
// Path: src/main/java/com/cardinity/model/Refund.java
// public class Refund {
// 
//     private UUID id;
//     private BigDecimal amount;
//     private String currency;
//     private Date created;
//     private Boolean live;
//     private UUID parentId;
//     private Status status;
//     private String error;
//     private String orderId;
//     private String description;
// 
//     public Refund(BigDecimal amount, String description) {
//         this.amount = MoneyUtil.formatAmount(amount);
//         this.description = description;
//     }
// 
//     public Refund(BigDecimal amount) {
//         this.amount = MoneyUtil.formatAmount(amount);
//     }
// 
//     public Refund() {
//     }
// 
//     public enum Status {
// 
//         @SerializedName("approved")
//         APPROVED("approved"),
//         @SerializedName("declined")
//         DECLINED("declined");
// 
//         private final String value;
// 
//         Status(final String value) {
//             this.value = value;
//         }
// 
//         public String getValue() {
//             return this.value;
//         }
// 
//     }
// 
//     public UUID getId() {
//         return id;
//     }
// 
//     public BigDecimal getAmount() {
//         return amount;
//     }
// 
//     public String getCurrency() {
//         return currency;
//     }
// 
//     public Date getCreated() {
//         return created;
//     }
// 
//     public Boolean getLive() {
//         return live;
//     }
// 
//     public UUID getParentId() {
//         return parentId;
//     }
// 
//     public Status getStatus() {
//         return status;
//     }
// 
//     public String getError() {
//         return error;
//     }
// 
//     public String getOrderId() {
//         return orderId;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public void setAmount(BigDecimal amount) {
//         this.amount = MoneyUtil.formatAmount(amount);
//     }
// 
//     public void setDescription(String description) {
//         this.description = description;
//     }
// }


import com.cardinity.exceptions.ValidationException;
import com.cardinity.model.Refund;
import org.junit.Before;
import org.junit.Test;
import java.math.BigDecimal;
package com.cardinity.validators;



public class RefundValidatorTest {

    Refund refund;
    Validator<Refund> refundValidator;

    @Before
    public void setUp() throws Exception {
        refund = new Refund();
        refund.setAmount(BigDecimal.ONE);

        refundValidator = new RefundValidator();
    }

    @Test
    public void testValidateSuccess() throws Exception {
        refundValidator.validate(refund);
    }

    @Test
    public void testValidateSuccessWithDescription() throws Exception {
        refund.setDescription("TESTING");
        refundValidator.validate(refund);
    }

// Path: src/main/java/com/cardinity/exceptions/ValidationException.java
// public class ValidationException extends CardinityException {
// 
//     private static final long serialVersionUID = -2152842451308691156L;
// 
//     public ValidationException(String message) {
//         super(message);
//     }
// }
// 
// Path: src/main/java/com/cardinity/model/Refund.java
// public class Refund {
// 
//     private UUID id;
//     private BigDecimal amount;
//     private String currency;
//     private Date created;
//     private Boolean live;
//     private UUID parentId;
//     private Status status;
//     private String error;
//     private String orderId;
//     private String description;
// 
//     public Refund(BigDecimal amount, String description) {
//         this.amount = MoneyUtil.formatAmount(amount);
//         this.description = description;
//     }
// 
//     public Refund(BigDecimal amount) {
//         this.amount = MoneyUtil.formatAmount(amount);
//     }
// 
//     public Refund() {
//     }
// 
//     public enum Status {
// 
//         @SerializedName("approved")
//         APPROVED("approved"),
//         @SerializedName("declined")
//         DECLINED("declined");
// 
//         private final String value;
// 
//         Status(final String value) {
//             this.value = value;
//         }
// 
//         public String getValue() {
//             return this.value;
//         }
// 
//     }
// 
//     public UUID getId() {
//         return id;
//     }
// 
//     public BigDecimal getAmount() {
//         return amount;
//     }
// 
//     public String getCurrency() {
//         return currency;
//     }
// 
//     public Date getCreated() {
//         return created;
//     }
// 
//     public Boolean getLive() {
//         return live;
//     }
// 
//     public UUID getParentId() {
//         return parentId;
//     }
// 
//     public Status getStatus() {
//         return status;
//     }
// 
//     public String getError() {
//         return error;
//     }
// 
//     public String getOrderId() {
//         return orderId;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public void setAmount(BigDecimal amount) {
//         this.amount = MoneyUtil.formatAmount(amount);
//     }
// 
//     public void setDescription(String description) {
//         this.description = description;
//     }
// }


// Path: src/test/java/com/cardinity/validators/RefundValidatorTest.java
import com.cardinity.exceptions.ValidationException;
import com.cardinity.model.Refund;
import org.junit.Before;
import org.junit.Test;
import java.math.BigDecimal;

package com.cardinity.validators;



public class RefundValidatorTest {

    Refund refund;
    Validator<Refund> refundValidator;

    @Before
    public void setUp() throws Exception {
        refund = new Refund();
        refund.setAmount(BigDecimal.ONE);

        refundValidator = new RefundValidator();
    }

    @Test
    public void testValidateSuccess() throws Exception {
        refundValidator.validate(refund);
    }

    @Test
    public void testValidateSuccessWithDescription() throws Exception {
        refund.setDescription("TESTING");
        refundValidator.validate(refund);
    }

    @Test(expected = ValidationException.class)