/*
* Copyright 2010-2013 Ning, Inc.
*
* Ning licenses this file to you under the Apache License, version 2.0
* (the "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
package org.killbill.billing.catalog;
import java.util.Collection;
import org.killbill.billing.catalog.api.Plan;
import com.google.common.collect.ImmutableList;
public class MockPlan extends DefaultPlan {
public static MockPlan createBicycleTrialEvergreen1USD(final int trialDurationInDays) {
return new MockPlan("1-BicycleTrialEvergreen1USD",
MockProduct.createBicycle(),
new DefaultPlanPhase[]{MockPlanPhase.createTrial(trialDurationInDays)},
MockPlanPhase.create1USDMonthlyEvergreen(),
-1);
}
public static MockPlan createBicycleTrialEvergreen1USD() {
return new MockPlan("1-BicycleTrialEvergreen1USD",
MockProduct.createBicycle(),
new DefaultPlanPhase[]{MockPlanPhase.create30DayTrial()},
MockPlanPhase.create1USDMonthlyEvergreen(),
-1);
}
public static MockPlan createSportsCarTrialEvergreen100USD() {
return new MockPlan("4-SportsCarTrialEvergreen100USD",
MockProduct.createSportsCar(),
new DefaultPlanPhase[]{MockPlanPhase.create30DayTrial()},
MockPlanPhase.createUSDMonthlyEvergreen("100.00", null),
-1);
}
public static MockPlan createPickupTrialEvergreen10USD() {
return new MockPlan("3-PickupTrialEvergreen10USD",
MockProduct.createPickup(),
new DefaultPlanPhase[]{MockPlanPhase.create30DayTrial()},
MockPlanPhase.createUSDMonthlyEvergreen("10.00", null),
-1);
}
public static MockPlan createJetTrialEvergreen1000USD() {
return new MockPlan("5-JetTrialEvergreen1000USD",
MockProduct.createJet(),
new DefaultPlanPhase[]{MockPlanPhase.create30DayTrial()},
MockPlanPhase.create1USDMonthlyEvergreen(),
-1);
}
public static MockPlan createJetTrialFixedTermEvergreen1000USD() {
return new MockPlan("6-JetTrialEvergreen1000USD",
MockProduct.createJet(),
new DefaultPlanPhase[]{MockPlanPhase.create30DayTrial(), MockPlanPhase.createUSDMonthlyFixedTerm("500.00", null, 6)},
MockPlanPhase.create1USDMonthlyEvergreen(),
-1);
}
public static MockPlan createHornMonthlyNoTrial1USD() {
return new MockPlan("7-Horn1USD",
MockProduct.createHorn(),
new DefaultPlanPhase[]{},
MockPlanPhase.create1USDMonthlyEvergreen(),
-1);
}
public MockPlan() {
this("1-BicycleTrialEvergreen1USD",
MockProduct.createBicycle(),
new DefaultPlanPhase[]{MockPlanPhase.create30DayTrial()},
MockPlanPhase.create1USDMonthlyEvergreen(),
-1);
}
public MockPlan(final String name, final DefaultProduct product, final DefaultPlanPhase[] planPhases, final DefaultPlanPhase finalPhase, final int plansAllowedInBundle) {
setName(name);
setProduct(product);
setFinalPhase(finalPhase);
setInitialPhases(planPhases);
setPlansAllowedInBundle(plansAllowedInBundle);
finalPhase.setPlan(this);
for (final DefaultPlanPhase pp : planPhases) {
pp.setPlan(this);
}
}
public static MockPlan createBicycleNoTrialEvergreen1USD() {
return new MockPlan("2-BicycleNoTrialEvergreen1USD",
MockProduct.createBicycle(),
new DefaultPlanPhase[]{},
MockPlanPhase.createUSDMonthlyEvergreen("1.0", null),
-1);
}
public MockPlan(final MockPlanPhase mockPlanPhase) {
setName("Test");
setProduct(MockProduct.createBicycle());
setFinalPhase(mockPlanPhase);
mockPlanPhase.setPlan(this);
}
public MockPlan(final String planName) {
setName(planName);
setProduct(new MockProduct());
setFinalPhase(new MockPlanPhase(this));
setInitialPhases(null);
setPlansAllowedInBundle(1);
}
public static Collection<Plan> createAll() {
return ImmutableList.<Plan>of(createBicycleTrialEvergreen1USD(),
createBicycleNoTrialEvergreen1USD(),
createPickupTrialEvergreen10USD(),
createSportsCarTrialEvergreen100USD(),
createJetTrialEvergreen1000USD(),
createJetTrialFixedTermEvergreen1000USD(),
createHornMonthlyNoTrial1USD());
}
}