// Path: src/main/java/me/pagar/model/Card.java
// public class Card extends PagarMeModel<String> {
// 
//     @Expose(deserialize = false)
//     @SerializedName("card_hash")
//     private String hash;
// 
//     @Expose(serialize = false)
//     private Brand brand;
// 
//     @Expose
//     @SerializedName("holder_name")
//     private String holderName;
// 
//     @Expose(deserialize = false)
//     @SerializedName("card_number")
//     private String number;
// 
//     @Expose(serialize = false)
//     @SerializedName("first_digits")
//     private String firstDigits;
// 
//     @Expose(serialize = false)
//     @SerializedName("last_digits")
//     private String lastDigits;
// 
//     @Expose(serialize = false)
//     private String fingerprint;
// 
//     @Expose(serialize = false)
//     private String country;
// 
//     @Expose(deserialize = false)
//     @SerializedName("customer_id")
//     private Integer customerId;
// 
//     @Expose(serialize = false)
//     private Boolean valid;
// 
//     @Expose
//     @SerializedName("expiration_date")
//     private String expiresAt;
// 
//     @Expose(serialize = false)
//     @SerializedName("date_updated")
//     private DateTime updatedAt;
// 
//     @Expose(serialize = false)
//     @SerializedName("cvv")
//     private String cvv;
// 
//     @Expose(serialize = false)
//     private Customer customer;
// 
//     public Brand getBrand() {
//         return brand;
//     }
// 
//     public String getHolderName() {
//         return holderName;
//     }
// 
//     public String getFirstDigits() {
//         return firstDigits;
//     }
// 
//     public String getLastDigits() {
//         return lastDigits;
//     }
// 
//     public String getCvv() {
//         return cvv;
//     }
// 
//     public void setCvv(String cvv) {
//         this.cvv = cvv;
//     }
// 
//     public String getFingerprint() {
//         return fingerprint;
//     }
// 
//     public String getCountry() {
//         return country;
//     }
// 
//     public Boolean getValid() {
//         return valid;
//     }
// 
//     public DateTime getUpdatedAt() {
//         return updatedAt;
//     }
// 
//     public Customer getCustomer() {
//         return customer;
//     }
// 
//     public String getExpiresAt(){
//         return expiresAt;
//     }
// 
//     public String getNumber(){
//         return number;
//     }
// 
//     public void setHash(String hash) {
//         this.hash = hash;
//         addUnsavedProperty("hash");
//     }
// 
//     public void setHolderName(String holderName) {
//         this.holderName = holderName;
//         addUnsavedProperty("holderName");
//     }
// 
//     public void setNumber(String number) {
//         this.number = number;
//         addUnsavedProperty("number");
//     }
// 
//     public void setCustomerId(Integer customerId) {
//         this.customerId = customerId;
//         addUnsavedProperty("customerId");
//     }
// 
//     public void setExpiresAt(String expiresAt) {
//         this.expiresAt = expiresAt;
//         addUnsavedProperty("expiresAt");
//     }
// 
//     public Card save() throws PagarMeException {
//         final Card saved = super.save(getClass());
//         copy(saved);
// 
//         return saved;
//     }
// 
//     public Card find(String id) throws PagarMeException {
// 
//         final PagarMeRequest request = new PagarMeRequest(HttpMethod.GET,
//                 String.format("/%s/%s", getClassName(), id));
// 
//         final Card other = JSONUtils.getAsObject((JsonObject) request.execute(), Card.class);
//         copy(other);
//         flush();
//         return other;
//     }
// 
//     public Card refresh() throws PagarMeException {
//         final Card other = JSONUtils.getAsObject(refreshModel(), Card.class);
//         copy(other);
//         flush();
//         return other;
//     }
// 
//     private void copy(Card other) {
//         super.copy(other);
//         this.updatedAt = other.updatedAt;
//         this.brand = other.brand;
//         this.holderName = other.holderName;
//         this.firstDigits = other.firstDigits;
//         this.lastDigits = other.lastDigits;
//         this.fingerprint = other.fingerprint;
//         this.country = other.country;
//         this.valid = other.valid;
//         this.expiresAt = other.expiresAt;
//     }
// 
//     public enum Brand {
// 
//         @SerializedName("amex")
//         AMEX,
// 
//         @SerializedName("aura")
//         AURA,
// 
//         @SerializedName("discover")
//         DISCOVER,
//         
//         @SerializedName("diners")
//         DINERS,
// 
//         @SerializedName("elo")
//         ELO,
// 
//         @SerializedName("hipercard")
//         HIPERCARD,
// 
//         @SerializedName("jcb")
//         JCB,
// 
//         @SerializedName("visa")
//         VISA,
// 
//         @SerializedName("mastercard")
//         MASTERCARD
// 
//     }
// }


import me.pagar.model.Card;
import org.joda.time.LocalDate;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
package me.pagarme.factory;





public class CardFactory {

    public static String CARD_HOLDER_NAME = "Pagarme LTDA";
    public static String CARD_NUMBER = "4111111111111111";
    public static LocalDate date = LocalDate.now().plusYears(1);
    public static String CARD_CVV = "401";

    public Card create(){
        DateTimeFormatter dtf = DateTimeFormat.forPattern("MMyy");
        String expiresAt = date.toString(dtf);

// Path: src/main/java/me/pagar/model/Card.java
// public class Card extends PagarMeModel<String> {
// 
//     @Expose(deserialize = false)
//     @SerializedName("card_hash")
//     private String hash;
// 
//     @Expose(serialize = false)
//     private Brand brand;
// 
//     @Expose
//     @SerializedName("holder_name")
//     private String holderName;
// 
//     @Expose(deserialize = false)
//     @SerializedName("card_number")
//     private String number;
// 
//     @Expose(serialize = false)
//     @SerializedName("first_digits")
//     private String firstDigits;
// 
//     @Expose(serialize = false)
//     @SerializedName("last_digits")
//     private String lastDigits;
// 
//     @Expose(serialize = false)
//     private String fingerprint;
// 
//     @Expose(serialize = false)
//     private String country;
// 
//     @Expose(deserialize = false)
//     @SerializedName("customer_id")
//     private Integer customerId;
// 
//     @Expose(serialize = false)
//     private Boolean valid;
// 
//     @Expose
//     @SerializedName("expiration_date")
//     private String expiresAt;
// 
//     @Expose(serialize = false)
//     @SerializedName("date_updated")
//     private DateTime updatedAt;
// 
//     @Expose(serialize = false)
//     @SerializedName("cvv")
//     private String cvv;
// 
//     @Expose(serialize = false)
//     private Customer customer;
// 
//     public Brand getBrand() {
//         return brand;
//     }
// 
//     public String getHolderName() {
//         return holderName;
//     }
// 
//     public String getFirstDigits() {
//         return firstDigits;
//     }
// 
//     public String getLastDigits() {
//         return lastDigits;
//     }
// 
//     public String getCvv() {
//         return cvv;
//     }
// 
//     public void setCvv(String cvv) {
//         this.cvv = cvv;
//     }
// 
//     public String getFingerprint() {
//         return fingerprint;
//     }
// 
//     public String getCountry() {
//         return country;
//     }
// 
//     public Boolean getValid() {
//         return valid;
//     }
// 
//     public DateTime getUpdatedAt() {
//         return updatedAt;
//     }
// 
//     public Customer getCustomer() {
//         return customer;
//     }
// 
//     public String getExpiresAt(){
//         return expiresAt;
//     }
// 
//     public String getNumber(){
//         return number;
//     }
// 
//     public void setHash(String hash) {
//         this.hash = hash;
//         addUnsavedProperty("hash");
//     }
// 
//     public void setHolderName(String holderName) {
//         this.holderName = holderName;
//         addUnsavedProperty("holderName");
//     }
// 
//     public void setNumber(String number) {
//         this.number = number;
//         addUnsavedProperty("number");
//     }
// 
//     public void setCustomerId(Integer customerId) {
//         this.customerId = customerId;
//         addUnsavedProperty("customerId");
//     }
// 
//     public void setExpiresAt(String expiresAt) {
//         this.expiresAt = expiresAt;
//         addUnsavedProperty("expiresAt");
//     }
// 
//     public Card save() throws PagarMeException {
//         final Card saved = super.save(getClass());
//         copy(saved);
// 
//         return saved;
//     }
// 
//     public Card find(String id) throws PagarMeException {
// 
//         final PagarMeRequest request = new PagarMeRequest(HttpMethod.GET,
//                 String.format("/%s/%s", getClassName(), id));
// 
//         final Card other = JSONUtils.getAsObject((JsonObject) request.execute(), Card.class);
//         copy(other);
//         flush();
//         return other;
//     }
// 
//     public Card refresh() throws PagarMeException {
//         final Card other = JSONUtils.getAsObject(refreshModel(), Card.class);
//         copy(other);
//         flush();
//         return other;
//     }
// 
//     private void copy(Card other) {
//         super.copy(other);
//         this.updatedAt = other.updatedAt;
//         this.brand = other.brand;
//         this.holderName = other.holderName;
//         this.firstDigits = other.firstDigits;
//         this.lastDigits = other.lastDigits;
//         this.fingerprint = other.fingerprint;
//         this.country = other.country;
//         this.valid = other.valid;
//         this.expiresAt = other.expiresAt;
//     }
// 
//     public enum Brand {
// 
//         @SerializedName("amex")
//         AMEX,
// 
//         @SerializedName("aura")
//         AURA,
// 
//         @SerializedName("discover")
//         DISCOVER,
//         
//         @SerializedName("diners")
//         DINERS,
// 
//         @SerializedName("elo")
//         ELO,
// 
//         @SerializedName("hipercard")
//         HIPERCARD,
// 
//         @SerializedName("jcb")
//         JCB,
// 
//         @SerializedName("visa")
//         VISA,
// 
//         @SerializedName("mastercard")
//         MASTERCARD
// 
//     }
// }


// Path: src/test/java/me/pagarme/factory/CardFactory.java
import me.pagar.model.Card;
import org.joda.time.LocalDate;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

package me.pagarme.factory;





public class CardFactory {

    public static String CARD_HOLDER_NAME = "Pagarme LTDA";
    public static String CARD_NUMBER = "4111111111111111";
    public static LocalDate date = LocalDate.now().plusYears(1);
    public static String CARD_CVV = "401";

    public Card create(){
        DateTimeFormatter dtf = DateTimeFormat.forPattern("MMyy");
        String expiresAt = date.toString(dtf);

        Card card = new Card();