package net.billforward.model;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import net.billforward.exception.BillforwardException;
import net.billforward.model.Subscription.SubscriptionState;
import net.billforward.model.Subscription.SubscriptionType;
import net.billforward.model.amendments.CancellationAmendment;
import net.billforward.model.amendments.ComponentChange;
import net.billforward.model.amendments.PricingComponentValueChangeAmendment;
import org.junit.Test;
public class SubscriptionTests extends TestBase {
//@Test
public void UpgradeSubscription() throws BillforwardException {
//--Get Subscription by ID
Subscription subscription = Subscription.getByID("AF39E372-F990-4354-A43B-6D071CC307AA");
assertEquals("AF39E372-F990-4354-A43B-6D071CC307AA", subscription.getID());
//PricingComponentValueChangeAmendment change = subscription.upgrade("users", 10).sync();
// HashMap<String, Integer> changes = new HashMap<String, Integer>();
// changes.put("users", 10);
// PricingComponentValueChangeAmendment change = subscription.upgrade(changes).sync();
List<ComponentChange> changes = new ArrayList<ComponentChange>();
changes.add(new ComponentChange("users", 10));
PricingComponentValueChangeAmendment change = subscription.upgrade(changes).sync();
System.out.println(change.toString());
}
//@Test
public void GetAllSubscriptions() throws BillforwardException {
//--Get all GetAllSubscriptions
Subscription[] subscriptions = Subscription.getAll();
assertNotNull(subscriptions);
}
//@Test
public void CancelSubscription() throws BillforwardException {
//--Get subscription to cancel
Subscription subscription = Subscription.getByID("2A8DFF25-801E-465C-8921-1182BDA6CD07");
CancellationAmendment cancellationAmendment = subscription.cancelImmediately();
assertNotNull(cancellationAmendment);
System.out.println(cancellationAmendment.toString());
}
//@Test
public void GetSubscriptionByID() throws BillforwardException {
//--Get Subscription by ID
Subscription subscription = Subscription.getByID("79AA1229-4E97-4368-A513-8CFE8C0BDD95");
assertEquals("79AA1229-4E97-4368-A513-8CFE8C0BDD95", subscription.getID());
System.out.println(subscription.toString());
}
//@Test
public void GetSubscriptionByAccountID() throws BillforwardException {
//--Get Account to get subscriptions for
Account account = Account.getByID("F15490C4-FC6B-4E40-90B2-1A16A66B619F");
// Get Subscription by Account ID
Subscription subscriptions[] = Subscription.getByAccountID(account.getID());
for(Subscription subscription : subscriptions) {
assertEquals(account.getID(), subscription.getAccountID());
}
assertNotNull(subscriptions);
}
//@Test
public void GetSubscriptionByRatePlan() throws BillforwardException {
//--Get RatePlan to get subscriptions for
RatePlan ratePlan = RatePlan.getByID("1234CC32-B6E6-4972-BB28-965323148D9F");
// Get Subscription by Account ID
Subscription subscriptions[] = Subscription.getByRatePlanID(ratePlan.getID());
for(Subscription subscription : subscriptions) {
assertEquals(ratePlan.getID(), subscription.getProductRatePlan());
}
assertNotNull(subscriptions);
}
//@Test
public void GetSubscriptionByProduct() throws BillforwardException {
//--Get Product to get subscriptions for
Product product = Product.getByID("D3E0F064-9E67-492E-8CFC-73E97B0B006A");
// Get Subscription by Account ID
Subscription subscriptions[] = Subscription.getByProductID(product.getID());
for(Subscription subscription : subscriptions) {
assertEquals(product.getID(), subscription.getProductID());
}
assertNotNull(subscriptions);
}
//@Test
public void GetSubscriptionByState() throws BillforwardException {
// Get Subscription by state
Subscription subscriptions[] = Subscription.getByState(SubscriptionState.Provisioned);
for(Subscription subscription : subscriptions) {
assertEquals(subscription.getState(), subscription.getState());
}
assertNotNull(subscriptions);
}
//@Test
public void UpdateSubscription() throws BillforwardException {
//--Get Subscription by ID
Subscription subscription = Subscription.getByID("5F66E6F1-22DB-4F46-8EF8-0DD6CB34F05A");
System.out.println(subscription.toString());
// Update subscription state
subscription.setState(SubscriptionState.AwaitingPayment);
subscription = subscription.save();
System.out.println(subscription.toString());
assertEquals(SubscriptionState.AwaitingPayment, subscription.getState());
}
//@Test
public void SubscriptionCreate() throws BillforwardException {
//--Get rate-plan for cost
RatePlan ratePlan = RatePlan.getByID("1234CC32-B6E6-4972-BB28-965323148D9F");
// Get account who is subscribing
Account account = Account.getByID("F15490C4-FC6B-4E40-90B2-1A16A66B619F");
//Set how much this account is initially subscribing for
PricingComponentValue value = new PricingComponentValue();
value.setPricingComponentID(ratePlan.getPricingComponents().get(0).getID());
value.setValue(3);
//Create the subscription
Subscription subscription = new Subscription();
subscription.setType(SubscriptionType.Subscription);
subscription.setProductID(ratePlan.getProductID());
subscription.setProductRatePlanID(ratePlan.getID());
subscription.setDescription("Test Subscription");
subscription.setState(SubscriptionState.Provisioned);
subscription.setName("API Sub");
subscription.setDescription("Test Description");
subscription.setAccountID(account.getID());
subscription.getPricingComponentValues().add(value);
subscription = Subscription.create(subscription);
assertNotNull(subscription);
System.out.println(subscription.toString());
}
//@Test
public void getActivePricingComponentValues() throws BillforwardException {
//--Get Subscription by ID
Subscription subscription = Subscription.getByID("SUB-105D5BFE-C9E2-4C9A-BFD0-70AF961E");
PricingComponentValue[] values = subscription.getActivePricingComponentValues();
for(PricingComponentValue value : values) {
System.out.println(value.toString());
}
}
// @Test
// public void setActivePricingComponentValues() throws BillforwardException {
// //--Get Subscription by ID
// Subscription subscription = Subscription.getByID("SUB-105D5BFE-C9E2-4C9A-BFD0-70AF961E");
//
// PricingComponentValue value = subscription.setActivePricingComponentValue("Users", 31);
//
// System.out.println(value.toString());
// }
}