use of org.killbill.billing.client.model.Product in project killbill by killbill.
the class TestCatalog method testCatalog.
@Test(groups = "slow", description = "Can retrieve a json version of the catalog")
public void testCatalog() throws Exception {
final Set<String> allBasePlans = new HashSet<String>();
final List<Catalog> catalogsJson = killBillClient.getJSONCatalog(requestOptions);
Assert.assertEquals(catalogsJson.get(0).getName(), "Firearms");
Assert.assertEquals(catalogsJson.get(0).getEffectiveDate(), Date.valueOf("2011-01-01"));
Assert.assertEquals(catalogsJson.get(0).getCurrencies().size(), 3);
Assert.assertEquals(catalogsJson.get(0).getProducts().size(), 11);
Assert.assertEquals(catalogsJson.get(0).getPriceLists().size(), 6);
for (final Product productJson : catalogsJson.get(0).getProducts()) {
if (!"BASE".equals(productJson.getType())) {
Assert.assertEquals(productJson.getIncluded().size(), 0);
Assert.assertEquals(productJson.getAvailable().size(), 0);
continue;
}
// Save all plans for later (see below)
for (final Plan planJson : productJson.getPlans()) {
allBasePlans.add(planJson.getName());
}
// Verify Usage info in json
if (productJson.getName().equals("Bullets")) {
Assert.assertEquals(productJson.getPlans().get(0).getName(), "bullets-usage-in-arrear");
Assert.assertEquals(productJson.getPlans().get(0).getPhases().get(0).getType(), "EVERGREEN");
List<Usage> usages = productJson.getPlans().get(0).getPhases().get(0).getUsages();
Assert.assertEquals(usages.get(0).getBillingPeriod(), "MONTHLY");
Assert.assertEquals(usages.get(0).getTiers().get(0).getBlocks().get(0).getUnit(), "bullets");
Assert.assertEquals(usages.get(0).getTiers().get(0).getBlocks().get(0).getSize(), "100.0");
Assert.assertEquals(usages.get(0).getTiers().get(0).getBlocks().get(0).getPrices().get(0).getCurrency(), "USD");
Assert.assertEquals(usages.get(0).getTiers().get(0).getBlocks().get(0).getPrices().get(0).getValue(), 2.95);
}
// Retrieve available products (addons) for that base product
final List<PlanDetail> availableAddons = killBillClient.getAvailableAddons(productJson.getName(), requestOptions);
final Set<String> availableAddonsNames = new HashSet<String>();
for (final PlanDetail planDetailJson : availableAddons) {
availableAddonsNames.add(planDetailJson.getProduct());
}
Assert.assertEquals(availableAddonsNames, new HashSet<String>(productJson.getAvailable()));
}
// Verify base plans endpoint
final List<PlanDetail> basePlans = killBillClient.getBasePlans(requestOptions);
final Set<String> foundBasePlans = new HashSet<String>();
for (final PlanDetail planDetailJson : basePlans) {
foundBasePlans.add(planDetailJson.getPlan());
}
Assert.assertEquals(foundBasePlans, allBasePlans);
}
Aggregations