public CatalogUpdater(final DateTime effectiveDate, final Currency... currencies) { final DefaultPriceList defaultPriceList = new DefaultPriceList().setName(PriceListSet.DEFAULT_PRICELIST_NAME); final StandaloneCatalog tmp = new StandaloneCatalog() .setCatalogName(DEFAULT_CATALOG_NAME) .setEffectiveDate(effectiveDate.toDate()) .setRecurringBillingMode(BillingMode.IN_ADVANCE) .setProducts(ImmutableList.<Product>of()) .setPlans(ImmutableList.<Plan>of()) .setPriceLists(new DefaultPriceListSet(defaultPriceList, new DefaultPriceList[0])) .setPlanRules(getSaneDefaultPlanRules(defaultPriceList)); if (currencies != null && currencies.length > 0) { tmp.setSupportedCurrencies(currencies); } else { tmp.setSupportedCurrencies(new Currency[0]); } tmp.initialize(tmp); this.catalog = new DefaultMutableStaticCatalog(tmp); }
@Test(groups = "fast") public void testDateValidation() { final StandaloneCatalog c = new MockCatalog(); c.setSupportedCurrencies(new Currency[]{Currency.GBP, Currency.EUR, Currency.USD, Currency.BRL, Currency.MXN}); final DefaultPlan p1 = MockPlan.createBicycleTrialEvergreen1USD(); p1.setPlansAllowedInBundle(-1); p1.setEffectiveDateForExistingSubscriptions(new Date((new Date().getTime()) - (1000 * 60 * 60 * 24))); final ValidationErrors errors = p1.validate(c, new ValidationErrors()); Assert.assertEquals(errors.size(), 3); errors.log(log); }
@Test(groups = "fast") public void testPriceInitialization() throws URISyntaxException, CatalogApiException { final StandaloneCatalog c = new MockCatalog(); c.setSupportedCurrencies(new Currency[]{Currency.GBP, Currency.EUR, Currency.USD, Currency.BRL, Currency.MXN}); ((DefaultInternationalPrice) c.getCurrentPlans().iterator().next().getFinalPhase().getRecurring().getRecurringPrice()).setPrices(new DefaultPrice[0]); c.setUnits(new DefaultUnit[0]); c.initialize(c); Assert.assertEquals(c.getCurrentPlans().iterator().next().getFinalPhase().getRecurring().getRecurringPrice().getPrice(Currency.GBP), new BigDecimal(0)); }
@Test(groups = "fast") public void testZeroValue() throws URISyntaxException, CatalogApiException { final StandaloneCatalog c = new MockCatalog(); c.setSupportedCurrencies(new Currency[]{Currency.GBP, Currency.EUR, Currency.USD, Currency.BRL, Currency.MXN}); final DefaultInternationalPrice p0 = new MockInternationalPrice(); p0.setPrices(new DefaultPrice[0]); p0.initialize(c); final DefaultInternationalPrice p1 = new MockInternationalPrice(); p1.setPrices(new DefaultPrice[]{ new DefaultPrice().setCurrency(Currency.GBP).setValue(new BigDecimal(1)), new DefaultPrice().setCurrency(Currency.EUR).setValue(new BigDecimal(1)), new DefaultPrice().setCurrency(Currency.USD).setValue(new BigDecimal(1)), new DefaultPrice().setCurrency(Currency.BRL).setValue(new BigDecimal(1)), new DefaultPrice().setCurrency(Currency.MXN).setValue(new BigDecimal(1)), }); p1.initialize(c); Assert.assertEquals(p0.getPrice(Currency.GBP), new BigDecimal(0)); Assert.assertEquals(p0.getPrice(Currency.EUR), new BigDecimal(0)); Assert.assertEquals(p0.getPrice(Currency.USD), new BigDecimal(0)); Assert.assertEquals(p0.getPrice(Currency.BRL), new BigDecimal(0)); Assert.assertEquals(p0.getPrice(Currency.MXN), new BigDecimal(0)); Assert.assertEquals(p1.getPrice(Currency.GBP), new BigDecimal(1)); Assert.assertEquals(p1.getPrice(Currency.EUR), new BigDecimal(1)); Assert.assertEquals(p1.getPrice(Currency.USD), new BigDecimal(1)); Assert.assertEquals(p1.getPrice(Currency.BRL), new BigDecimal(1)); Assert.assertEquals(p1.getPrice(Currency.MXN), new BigDecimal(1)); }
@Test(groups = "fast") public void testNegativeValuePrices() { final StandaloneCatalog c = new MockCatalog(); c.setSupportedCurrencies(new Currency[]{Currency.GBP, Currency.EUR, Currency.USD, Currency.BRL, Currency.MXN}); final DefaultInternationalPrice p1 = new MockInternationalPrice(); p1.setPrices(new DefaultPrice[]{ new DefaultPrice().setCurrency(Currency.GBP).setValue(new BigDecimal(-1)), new DefaultPrice().setCurrency(Currency.EUR).setValue(new BigDecimal(-1)), new DefaultPrice().setCurrency(Currency.USD).setValue(new BigDecimal(-1)), new DefaultPrice().setCurrency(Currency.BRL).setValue(new BigDecimal(1)), new DefaultPrice().setCurrency(Currency.MXN).setValue(new BigDecimal(1)), }); final ValidationErrors errors = p1.validate(c, new ValidationErrors()); errors.log(log); Assert.assertEquals(errors.size(), 3); } }
public DefaultMutableStaticCatalog(final StandaloneCatalog input) { this.setCatalogName(input.getCatalogName()) .setRecurringBillingMode(input.getRecurringBillingMode()) .setEffectiveDate(input.getEffectiveDate()) .setSupportedCurrencies(input.getCurrentSupportedCurrencies()) .setUnits(input.getCurrentUnits()) .setProducts(input.getCurrentProducts()) .setPlans(input.getCurrentPlans()) .setPlanRules(input.getPlanRules()) .setPriceLists(input.getPriceLists()); initialize(this); }
public StandaloneCatalog toStandaloneCatalog(final StandalonePluginCatalog pluginCatalog) { final StandaloneCatalog result = new StandaloneCatalog(); result.setCatalogName(catalogName); result.setEffectiveDate(pluginCatalog.getEffectiveDate().toDate()); result.setProducts(toDefaultProducts(pluginCatalog.getProducts())); result.setPlans(toDefaultPlans(result, pluginCatalog.getPlans())); result.setPriceLists(toDefaultPriceListSet(pluginCatalog.getDefaultPriceList(), pluginCatalog.getChildrenPriceList())); result.setSupportedCurrencies(toArray(pluginCatalog.getCurrencies())); result.setUnits(toDefaultUnits(pluginCatalog.getUnits())); result.setPlanRules(toDefaultPlanRules(pluginCatalog.getPlanRules())); for (final Product cur : pluginCatalog.getProducts()) { final Product target = result.getCatalogEntityCollectionProduct().findByName(cur.getName()); if (target != null) { ((DefaultProduct) target).setAvailable(toFilteredDefaultProduct(cur.getAvailable())); ((DefaultProduct) target).setIncluded(toFilteredDefaultProduct(cur.getIncluded())); } } result.initialize(result); return result; }
public CatalogUpdater(final DateTime effectiveDate, final Currency... currencies) { final DefaultPriceList defaultPriceList = new DefaultPriceList().setName(PriceListSet.DEFAULT_PRICELIST_NAME); final StandaloneCatalog tmp = new StandaloneCatalog() .setCatalogName(DEFAULT_CATALOG_NAME) .setEffectiveDate(effectiveDate.toDate()) .setRecurringBillingMode(BillingMode.IN_ADVANCE) .setProducts(ImmutableList.<Product>of()) .setPlans(ImmutableList.<Plan>of()) .setPriceLists(new DefaultPriceListSet(defaultPriceList, new DefaultPriceList[0])) .setPlanRules(getSaneDefaultPlanRules(defaultPriceList)); if (currencies != null && currencies.length > 0) { tmp.setSupportedCurrencies(currencies); } else { tmp.setSupportedCurrencies(new Currency[0]); } tmp.initialize(tmp); this.catalog = new DefaultMutableStaticCatalog(tmp); }
@Test(groups = "fast") public void testDateValidation() { final StandaloneCatalog c = new MockCatalog(); c.setSupportedCurrencies(new Currency[]{Currency.GBP, Currency.EUR, Currency.USD, Currency.BRL, Currency.MXN}); final DefaultPlan p1 = MockPlan.createBicycleTrialEvergreen1USD(); p1.setPlansAllowedInBundle(-1); p1.setEffectiveDateForExistingSubscriptions(new Date((new Date().getTime()) - (1000 * 60 * 60 * 24))); final ValidationErrors errors = p1.validate(c, new ValidationErrors()); Assert.assertEquals(errors.size(), 3); errors.log(log); }
@Test(groups = "fast") public void testPriceInitialization() throws URISyntaxException, CatalogApiException { final StandaloneCatalog c = new MockCatalog(); c.setSupportedCurrencies(new Currency[]{Currency.GBP, Currency.EUR, Currency.USD, Currency.BRL, Currency.MXN}); ((DefaultInternationalPrice) c.getCurrentPlans().iterator().next().getFinalPhase().getRecurring().getRecurringPrice()).setPrices(new DefaultPrice[0]); c.setUnits(new DefaultUnit[0]); c.initialize(c); Assert.assertEquals(c.getCurrentPlans().iterator().next().getFinalPhase().getRecurring().getRecurringPrice().getPrice(Currency.GBP), new BigDecimal(0)); }
@Test(groups = "fast") public void testZeroValue() throws URISyntaxException, CatalogApiException { final StandaloneCatalog c = new MockCatalog(); c.setSupportedCurrencies(new Currency[]{Currency.GBP, Currency.EUR, Currency.USD, Currency.BRL, Currency.MXN}); final DefaultInternationalPrice p0 = new MockInternationalPrice(); p0.setPrices(new DefaultPrice[0]); p0.initialize(c); final DefaultInternationalPrice p1 = new MockInternationalPrice(); p1.setPrices(new DefaultPrice[]{ new DefaultPrice().setCurrency(Currency.GBP).setValue(new BigDecimal(1)), new DefaultPrice().setCurrency(Currency.EUR).setValue(new BigDecimal(1)), new DefaultPrice().setCurrency(Currency.USD).setValue(new BigDecimal(1)), new DefaultPrice().setCurrency(Currency.BRL).setValue(new BigDecimal(1)), new DefaultPrice().setCurrency(Currency.MXN).setValue(new BigDecimal(1)), }); p1.initialize(c); Assert.assertEquals(p0.getPrice(Currency.GBP), new BigDecimal(0)); Assert.assertEquals(p0.getPrice(Currency.EUR), new BigDecimal(0)); Assert.assertEquals(p0.getPrice(Currency.USD), new BigDecimal(0)); Assert.assertEquals(p0.getPrice(Currency.BRL), new BigDecimal(0)); Assert.assertEquals(p0.getPrice(Currency.MXN), new BigDecimal(0)); Assert.assertEquals(p1.getPrice(Currency.GBP), new BigDecimal(1)); Assert.assertEquals(p1.getPrice(Currency.EUR), new BigDecimal(1)); Assert.assertEquals(p1.getPrice(Currency.USD), new BigDecimal(1)); Assert.assertEquals(p1.getPrice(Currency.BRL), new BigDecimal(1)); Assert.assertEquals(p1.getPrice(Currency.MXN), new BigDecimal(1)); }
@Test(groups = "fast") public void testNegativeValuePrices() { final StandaloneCatalog c = new MockCatalog(); c.setSupportedCurrencies(new Currency[]{Currency.GBP, Currency.EUR, Currency.USD, Currency.BRL, Currency.MXN}); final DefaultInternationalPrice p1 = new MockInternationalPrice(); p1.setPrices(new DefaultPrice[]{ new DefaultPrice().setCurrency(Currency.GBP).setValue(new BigDecimal(-1)), new DefaultPrice().setCurrency(Currency.EUR).setValue(new BigDecimal(-1)), new DefaultPrice().setCurrency(Currency.USD).setValue(new BigDecimal(-1)), new DefaultPrice().setCurrency(Currency.BRL).setValue(new BigDecimal(1)), new DefaultPrice().setCurrency(Currency.MXN).setValue(new BigDecimal(1)), }); final ValidationErrors errors = p1.validate(c, new ValidationErrors()); errors.log(log); Assert.assertEquals(errors.size(), 3); } }
public DefaultMutableStaticCatalog(final StandaloneCatalog input) { this.setCatalogName(input.getCatalogName()) .setRecurringBillingMode(input.getRecurringBillingMode()) .setEffectiveDate(input.getEffectiveDate()) .setSupportedCurrencies(input.getCurrentSupportedCurrencies()) .setUnits(input.getCurrentUnits()) .setProducts(input.getCurrentProducts()) .setPlans(input.getCurrentPlans()) .setPlanRules(input.getPlanRules()) .setPriceLists(input.getPriceLists()); initialize(this); }
public StandaloneCatalog toStandaloneCatalog(final StandalonePluginCatalog pluginCatalog) { final StandaloneCatalog result = new StandaloneCatalog(); result.setCatalogName(catalogName); result.setEffectiveDate(pluginCatalog.getEffectiveDate().toDate()); result.setProducts(toDefaultProducts(pluginCatalog.getProducts())); result.setPlans(toDefaultPlans(result, pluginCatalog.getPlans())); result.setPriceLists(toDefaultPriceListSet(pluginCatalog.getDefaultPriceList(), pluginCatalog.getChildrenPriceList())); result.setSupportedCurrencies(toArray(pluginCatalog.getCurrencies())); result.setUnits(toDefaultUnits(pluginCatalog.getUnits())); result.setPlanRules(toDefaultPlanRules(pluginCatalog.getPlanRules())); for (final Product cur : pluginCatalog.getProducts()) { final Product target = result.getCatalogEntityCollectionProduct().findByName(cur.getName()); if (target != null) { ((DefaultProduct) target).setAvailable(toFilteredDefaultProduct(cur.getAvailable())); ((DefaultProduct) target).setIncluded(toFilteredDefaultProduct(cur.getIncluded())); } } result.initialize(result); return result; }