Search in sources :

Example 1 with Catalog

use of org.killbill.billing.client.model.Catalog 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);
}
Also used : Usage(org.killbill.billing.client.model.Usage) Product(org.killbill.billing.client.model.Product) PlanDetail(org.killbill.billing.client.model.PlanDetail) Plan(org.killbill.billing.client.model.Plan) SimplePlan(org.killbill.billing.client.model.SimplePlan) Catalog(org.killbill.billing.client.model.Catalog) HashSet(java.util.HashSet) Test(org.testng.annotations.Test)

Example 2 with Catalog

use of org.killbill.billing.client.model.Catalog in project killbill by killbill.

the class TestCatalog method testAddSimplePlan.

@Test(groups = "slow", description = "Can create a simple Plan into a per-tenant catalog")
public void testAddSimplePlan() throws Exception {
    killBillClient.addSimplePan(new SimplePlan("foo-monthly", "Foo", ProductCategory.BASE, Currency.USD, BigDecimal.TEN, BillingPeriod.MONTHLY, 0, TimeUnit.UNLIMITED, ImmutableList.<String>of()), requestOptions);
    List<Catalog> catalogsJson = killBillClient.getJSONCatalog(requestOptions);
    Assert.assertEquals(catalogsJson.size(), 1);
    Assert.assertEquals(catalogsJson.get(0).getProducts().size(), 1);
    Assert.assertEquals(catalogsJson.get(0).getProducts().get(0).getName(), "Foo");
    Assert.assertEquals(catalogsJson.get(0).getPriceLists().size(), 1);
    Assert.assertEquals(catalogsJson.get(0).getPriceLists().get(0).getName(), "DEFAULT");
    Assert.assertEquals(catalogsJson.get(0).getPriceLists().get(0).getPlans().size(), 1);
    Assert.assertEquals(catalogsJson.get(0).getPriceLists().get(0).getPlans().get(0), "foo-monthly");
    killBillClient.addSimplePan(new SimplePlan("foo-annual", "Foo", ProductCategory.BASE, Currency.USD, new BigDecimal("100.00"), BillingPeriod.ANNUAL, 0, TimeUnit.UNLIMITED, ImmutableList.<String>of()), requestOptions);
    catalogsJson = killBillClient.getJSONCatalog(requestOptions);
    Assert.assertEquals(catalogsJson.size(), 1);
    Assert.assertEquals(catalogsJson.get(0).getProducts().size(), 1);
    Assert.assertEquals(catalogsJson.get(0).getProducts().get(0).getName(), "Foo");
    Assert.assertEquals(catalogsJson.get(0).getPriceLists().size(), 1);
    Assert.assertEquals(catalogsJson.get(0).getPriceLists().get(0).getName(), "DEFAULT");
    Assert.assertEquals(catalogsJson.get(0).getPriceLists().get(0).getPlans().size(), 2);
}
Also used : SimplePlan(org.killbill.billing.client.model.SimplePlan) Catalog(org.killbill.billing.client.model.Catalog) BigDecimal(java.math.BigDecimal) Test(org.testng.annotations.Test)

Example 3 with Catalog

use of org.killbill.billing.client.model.Catalog in project killbill by killbill.

the class TestCatalog method testAddSimplePlanWithoutKBDefault.

@Test(groups = "slow", description = "Upload and retrieve a per plugin payment state machine config")
public void testAddSimplePlanWithoutKBDefault() throws Exception {
    // Create another tenant initialized with no default catalog,...
    final Tenant otherTenantNoKBDefault = new Tenant();
    otherTenantNoKBDefault.setApiKey(UUID.randomUUID().toString());
    otherTenantNoKBDefault.setApiSecret(UUID.randomUUID().toString());
    killBillClient.createTenant(otherTenantNoKBDefault, false, requestOptions);
    final RequestOptions requestOptionsOtherTenant = requestOptions.extend().withTenantApiKey(otherTenantNoKBDefault.getApiKey()).withTenantApiSecret(otherTenantNoKBDefault.getApiSecret()).build();
    // Verify the template catalog is not returned
    List<Catalog> catalogsJson = killBillClient.getJSONCatalog(requestOptionsOtherTenant);
    Assert.assertEquals(catalogsJson.size(), 0);
    killBillClient.addSimplePan(new SimplePlan("foo-monthly", "Foo", ProductCategory.BASE, Currency.USD, BigDecimal.TEN, BillingPeriod.MONTHLY, 0, TimeUnit.UNLIMITED, ImmutableList.<String>of()), requestOptionsOtherTenant);
    catalogsJson = killBillClient.getJSONCatalog(requestOptionsOtherTenant);
    Assert.assertEquals(catalogsJson.size(), 1);
    Assert.assertEquals(catalogsJson.get(0).getProducts().size(), 1);
    Assert.assertEquals(catalogsJson.get(0).getProducts().get(0).getName(), "Foo");
    Assert.assertEquals(catalogsJson.get(0).getPriceLists().size(), 1);
    Assert.assertEquals(catalogsJson.get(0).getPriceLists().get(0).getName(), "DEFAULT");
    Assert.assertEquals(catalogsJson.get(0).getPriceLists().get(0).getPlans().size(), 1);
    Assert.assertEquals(catalogsJson.get(0).getPriceLists().get(0).getPlans().get(0), "foo-monthly");
    killBillClient.addSimplePan(new SimplePlan("foo-annual", "Foo", ProductCategory.BASE, Currency.USD, new BigDecimal("100.00"), BillingPeriod.ANNUAL, 0, TimeUnit.UNLIMITED, ImmutableList.<String>of()), requestOptionsOtherTenant);
    catalogsJson = killBillClient.getJSONCatalog(requestOptionsOtherTenant);
    Assert.assertEquals(catalogsJson.size(), 1);
    Assert.assertEquals(catalogsJson.get(0).getProducts().size(), 1);
    Assert.assertEquals(catalogsJson.get(0).getProducts().get(0).getName(), "Foo");
    Assert.assertEquals(catalogsJson.get(0).getPriceLists().size(), 1);
    Assert.assertEquals(catalogsJson.get(0).getPriceLists().get(0).getName(), "DEFAULT");
    Assert.assertEquals(catalogsJson.get(0).getPriceLists().get(0).getPlans().size(), 2);
}
Also used : SimplePlan(org.killbill.billing.client.model.SimplePlan) Tenant(org.killbill.billing.client.model.Tenant) RequestOptions(org.killbill.billing.client.RequestOptions) Catalog(org.killbill.billing.client.model.Catalog) BigDecimal(java.math.BigDecimal) Test(org.testng.annotations.Test)

Aggregations

Catalog (org.killbill.billing.client.model.Catalog)3 SimplePlan (org.killbill.billing.client.model.SimplePlan)3 Test (org.testng.annotations.Test)3 BigDecimal (java.math.BigDecimal)2 HashSet (java.util.HashSet)1 RequestOptions (org.killbill.billing.client.RequestOptions)1 Plan (org.killbill.billing.client.model.Plan)1 PlanDetail (org.killbill.billing.client.model.PlanDetail)1 Product (org.killbill.billing.client.model.Product)1 Tenant (org.killbill.billing.client.model.Tenant)1 Usage (org.killbill.billing.client.model.Usage)1