/*
* Copyright 2010-2013 Ning, Inc.
* Copyright 2014-2017 Groupon, Inc
* Copyright 2014-2017 The Billing Project, LLC
*
* The Billing Project 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.mock;
import java.util.List;
import java.util.UUID;
import org.joda.time.DateTime;
import org.killbill.billing.catalog.api.BillingActionPolicy;
import org.killbill.billing.catalog.api.BillingPeriod;
import org.killbill.billing.catalog.api.Plan;
import org.killbill.billing.catalog.api.PlanPhase;
import org.killbill.billing.catalog.api.PlanPhasePriceOverride;
import org.killbill.billing.catalog.api.PlanSpecifier;
import org.killbill.billing.catalog.api.PriceList;
import org.killbill.billing.catalog.api.Product;
import org.killbill.billing.catalog.api.ProductCategory;
import org.killbill.billing.entitlement.api.Entitlement.EntitlementSourceType;
import org.killbill.billing.entitlement.api.Entitlement.EntitlementState;
import org.killbill.billing.subscription.api.SubscriptionBase;
import org.killbill.billing.subscription.api.user.SubscriptionBaseApiException;
import org.killbill.billing.subscription.api.user.SubscriptionBaseTransition;
import org.killbill.billing.util.callcontext.CallContext;
import org.mockito.Mockito;
public class MockSubscription implements SubscriptionBase {
private final UUID id;
private final UUID bundleId;
private final EntitlementState state;
private Plan plan;
private final PlanPhase phase;
private final DateTime startDate;
private final DateTime firstRecurringNonZeroChargeDate;
private SubscriptionBase sub;
public MockSubscription(final UUID id, final UUID bundleId, final Plan plan, final DateTime startDate, final DateTime firstRecurringNonZeroChargeDate) {
this.id = id;
this.bundleId = bundleId;
this.state = EntitlementState.ACTIVE;
this.plan = plan;
this.phase = null;
this.startDate = startDate;
this.firstRecurringNonZeroChargeDate = firstRecurringNonZeroChargeDate;
this.sub = Mockito.mock(SubscriptionBase.class);
}
@Override
public boolean cancel(final CallContext context) throws SubscriptionBaseApiException {
return sub.cancel(context);
}
@Override
public boolean cancelWithDate(final DateTime requestedDate, final CallContext context) throws SubscriptionBaseApiException {
return sub.cancelWithDate(requestedDate, context);
}
@Override
public boolean cancelWithPolicy(BillingActionPolicy policy, int accountBillCycleDayLocal, CallContext context)
throws SubscriptionBaseApiException {
return sub.cancelWithPolicy(policy, accountBillCycleDayLocal, context);
}
@Override
public boolean uncancel(final CallContext context) throws SubscriptionBaseApiException {
return sub.uncancel(context);
}
@Override
public DateTime changePlan(final PlanSpecifier spec, final List<PlanPhasePriceOverride> overrides, final CallContext context) throws SubscriptionBaseApiException {
return sub.changePlan(spec, overrides, context);
}
@Override
public DateTime changePlanWithDate(final PlanSpecifier spec, final List<PlanPhasePriceOverride> overrides, final DateTime requestedDate,
final CallContext context) throws SubscriptionBaseApiException {
return sub.changePlanWithDate(spec, overrides, requestedDate, context);
}
@Override
public DateTime changePlanWithPolicy(final PlanSpecifier spec,
final List<PlanPhasePriceOverride> overrides, final BillingActionPolicy policy, final CallContext context) throws SubscriptionBaseApiException {
return sub.changePlanWithPolicy(spec, overrides, policy, context);
}
@Override
public UUID getId() {
return id;
}
@Override
public DateTime getCreatedDate() {
throw new UnsupportedOperationException();
}
@Override
public DateTime getUpdatedDate() {
throw new UnsupportedOperationException();
}
@Override
public UUID getBundleId() {
return bundleId;
}
@Override
public EntitlementState getState() {
return state;
}
@Override
public DateTime getStartDate() {
return startDate;
}
@Override
public DateTime getEndDate() {
return sub.getEndDate();
}
@Override
public Plan getCurrentPlan() {
return plan;
}
@Override
public PriceList getCurrentPriceList() {
return new MockPriceList();
}
@Override
public PlanPhase getCurrentPhase() {
return phase;
}
@Override
public DateTime getChargedThroughDate() {
return sub.getChargedThroughDate();
}
@Override
public DateTime getDateOfFirstRecurringNonZeroCharge() {
return firstRecurringNonZeroChargeDate;
}
@Override
public boolean isMigrated() {
return false;
}
@Override
public ProductCategory getCategory() {
return sub.getCategory();
}
@Override
public Integer getBillCycleDayLocal() {
return null;
}
@Override
public DateTime getFutureEndDate() {
return sub.getFutureEndDate();
}
@Override
public EntitlementSourceType getSourceType() {
return sub.getSourceType();
}
@Override
public Product getLastActiveProduct() {
return sub.getLastActiveProduct();
}
@Override
public PriceList getLastActivePriceList() {
return sub.getLastActivePriceList();
}
@Override
public ProductCategory getLastActiveCategory() {
return sub.getLastActiveCategory();
}
@Override
public BillingPeriod getLastActiveBillingPeriod() {
return null;
}
@Override
public Plan getLastActivePlan() {
return sub.getLastActivePlan();
}
@Override
public PlanPhase getLastActivePhase() {
return sub.getLastActivePhase();
}
public void setPlan(final Plan plan) {
this.plan = plan;
}
@Override
public SubscriptionBaseTransition getPendingTransition() {
return null;
}
@Override
public SubscriptionBaseTransition getPreviousTransition() {
return null;
}
@Override
public List<SubscriptionBaseTransition> getAllTransitions() {
return null;
}
}