// Path: src/main/java/me/pagar/model/Plan.java
// public class Plan extends PagarMeModel<String> {
// 
//     @Expose
//     private Integer amount;
//     @Expose
//     private Integer days;
//     @Expose
//     private String name;
//     @Expose
//     private Integer trialDays;
//     @Expose
//     private Collection<PaymentMethod> paymentMethods;
//     @Expose
//     private String color;
//     @Expose
//     private Integer charges;
//     @Expose
//     private Integer installments;
//     @Expose
//     private Integer invoiceReminder;
// 
//     public Plan save() throws PagarMeException {
//         final Plan saved = super.save(getClass());
//         copy(saved);
//         return saved;
//     }
// 
//     public Plan find(String id) throws PagarMeException {
//         final PagarMeRequest request = new PagarMeRequest(HttpMethod.GET,
//                 String.format("/%s/%s", getClassName(), id));
//         final Plan other = JSONUtils.getAsObject((JsonObject) request.execute(), Plan.class);
//         copy(other);
//         flush();
//         return other;
//     }
// 
//     public Collection<Plan> findCollection(Integer totalPerPage, Integer page) throws PagarMeException {
//         return JSONUtils.getAsList(super.paginate(totalPerPage, page), new TypeToken<Collection<Plan>>() {
//         }.getType());
//     }
// 
//     @Deprecated
//     public void setCreationParameters(Integer amount, Integer days, String name){
//         this.amount = amount;
//         this.days = days;
//         this.name = name;
//     }
// 
//     @Override
//     public void setId(String id) {
//         super.setId(id);
//     }
// 
//     public void setTrialDays(Integer trialDays) {
//         this.trialDays = trialDays;
//     }
// 
//     public void setPaymentMethods(Collection<PaymentMethod> paymentMethods) {
//         this.paymentMethods = paymentMethods;
//     }
// 
//     public void setColor(String color) {
//         this.color = color;
//     }
// 
//     public void setCharges(Integer charges) {
//         this.charges = charges;
//     }
// 
//     public void setInstallments(Integer installments) {
//         this.installments = installments;
//     }
// 
//     public void setName(String name){
//         this.name = name;
//     }
// 
//     public void setDays(Integer days){
//         this.days = days;
//     }
// 
//     public void setAmount(Integer amount){
//         this.amount = amount;
//     }
//     
//     public void setInvoiceReminder(Integer invoiceReminder){
//         this.invoiceReminder = invoiceReminder; 
//     }
// 
//     private void copy(Plan other) {
//         super.copy(other);
//         this.amount = other.getAmount();
//         this.days = other.getDays();
//         this.name = other.getName();
//         this.trialDays = other.getTrialDays();
//         this.paymentMethods = other.getPaymentMethods();
//         this.charges = other.getCharges();
//         this.installments = other.getInstallments();
//         this.invoiceReminder = other.getInvoiceReminder(); 
//     }
// 
//     public Integer getAmount() {
//         return amount;
//     }
// 
//     public Integer getDays() {
//         return days;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public Integer getTrialDays() {
//         return trialDays;
//     }
// 
//     public Collection<PaymentMethod> getPaymentMethods() {
//         return paymentMethods;
//     }
// 
//     public Integer getCharges() {
//         return charges;
//     }
// 
//     public Integer getInstallments() {
//         return installments;
//     }
//     
//     public Integer getInvoiceReminder(){
//         return invoiceReminder;
//     }
//     
// 
// }
// 
// Path: src/main/java/me/pagar/model/Transaction.java
// public enum PaymentMethod {
// 
//     @SerializedName("credit_card")
//     CREDIT_CARD,
// 
//     @SerializedName("boleto")
//     BOLETO,
// 
//     @SerializedName("debit_card")
//     DEBIT_CARD,
// 
//     @SerializedName("pix")
//     PIX
// }


import java.util.Arrays;
import me.pagar.model.Plan;
import me.pagar.model.Transaction.PaymentMethod;
package me.pagarme.factory;



public class PlanFactory {

    public static final int DEFAULT_AMOUNT = 100;
    public static final int DEFAULT_DAYS = 30;
    public static final int DEFAULT_CHARGES = 100;
    public static final int DEFAULT_INSTALLMENTS = 2;
// Path: src/main/java/me/pagar/model/Plan.java
// public class Plan extends PagarMeModel<String> {
// 
//     @Expose
//     private Integer amount;
//     @Expose
//     private Integer days;
//     @Expose
//     private String name;
//     @Expose
//     private Integer trialDays;
//     @Expose
//     private Collection<PaymentMethod> paymentMethods;
//     @Expose
//     private String color;
//     @Expose
//     private Integer charges;
//     @Expose
//     private Integer installments;
//     @Expose
//     private Integer invoiceReminder;
// 
//     public Plan save() throws PagarMeException {
//         final Plan saved = super.save(getClass());
//         copy(saved);
//         return saved;
//     }
// 
//     public Plan find(String id) throws PagarMeException {
//         final PagarMeRequest request = new PagarMeRequest(HttpMethod.GET,
//                 String.format("/%s/%s", getClassName(), id));
//         final Plan other = JSONUtils.getAsObject((JsonObject) request.execute(), Plan.class);
//         copy(other);
//         flush();
//         return other;
//     }
// 
//     public Collection<Plan> findCollection(Integer totalPerPage, Integer page) throws PagarMeException {
//         return JSONUtils.getAsList(super.paginate(totalPerPage, page), new TypeToken<Collection<Plan>>() {
//         }.getType());
//     }
// 
//     @Deprecated
//     public void setCreationParameters(Integer amount, Integer days, String name){
//         this.amount = amount;
//         this.days = days;
//         this.name = name;
//     }
// 
//     @Override
//     public void setId(String id) {
//         super.setId(id);
//     }
// 
//     public void setTrialDays(Integer trialDays) {
//         this.trialDays = trialDays;
//     }
// 
//     public void setPaymentMethods(Collection<PaymentMethod> paymentMethods) {
//         this.paymentMethods = paymentMethods;
//     }
// 
//     public void setColor(String color) {
//         this.color = color;
//     }
// 
//     public void setCharges(Integer charges) {
//         this.charges = charges;
//     }
// 
//     public void setInstallments(Integer installments) {
//         this.installments = installments;
//     }
// 
//     public void setName(String name){
//         this.name = name;
//     }
// 
//     public void setDays(Integer days){
//         this.days = days;
//     }
// 
//     public void setAmount(Integer amount){
//         this.amount = amount;
//     }
//     
//     public void setInvoiceReminder(Integer invoiceReminder){
//         this.invoiceReminder = invoiceReminder; 
//     }
// 
//     private void copy(Plan other) {
//         super.copy(other);
//         this.amount = other.getAmount();
//         this.days = other.getDays();
//         this.name = other.getName();
//         this.trialDays = other.getTrialDays();
//         this.paymentMethods = other.getPaymentMethods();
//         this.charges = other.getCharges();
//         this.installments = other.getInstallments();
//         this.invoiceReminder = other.getInvoiceReminder(); 
//     }
// 
//     public Integer getAmount() {
//         return amount;
//     }
// 
//     public Integer getDays() {
//         return days;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public Integer getTrialDays() {
//         return trialDays;
//     }
// 
//     public Collection<PaymentMethod> getPaymentMethods() {
//         return paymentMethods;
//     }
// 
//     public Integer getCharges() {
//         return charges;
//     }
// 
//     public Integer getInstallments() {
//         return installments;
//     }
//     
//     public Integer getInvoiceReminder(){
//         return invoiceReminder;
//     }
//     
// 
// }
// 
// Path: src/main/java/me/pagar/model/Transaction.java
// public enum PaymentMethod {
// 
//     @SerializedName("credit_card")
//     CREDIT_CARD,
// 
//     @SerializedName("boleto")
//     BOLETO,
// 
//     @SerializedName("debit_card")
//     DEBIT_CARD,
// 
//     @SerializedName("pix")
//     PIX
// }


// Path: src/test/java/me/pagarme/factory/PlanFactory.java
import java.util.Arrays;
import me.pagar.model.Plan;
import me.pagar.model.Transaction.PaymentMethod;

package me.pagarme.factory;



public class PlanFactory {

    public static final int DEFAULT_AMOUNT = 100;
    public static final int DEFAULT_DAYS = 30;
    public static final int DEFAULT_CHARGES = 100;
    public static final int DEFAULT_INSTALLMENTS = 2;
    public static final int DEFAULT_TRIAL_DAYS = 3;