private synchronized DefaultPrice[] getZeroPrice(final StandaloneCatalog root) { final Currency[] currencies = root.getCurrentSupportedCurrencies(); final DefaultPrice[] zeroPrice = new DefaultPrice[currencies.length]; for (int i = 0; i < currencies.length; i++) { zeroPrice[i] = new DefaultPrice(); zeroPrice[i].setCurrency(currencies[i]); zeroPrice[i].setValue(new BigDecimal(0)); } return zeroPrice; }
@Override public boolean isZero() { for (final DefaultPrice price : prices) { try { if (price.getValue().compareTo(BigDecimal.ZERO) != 0) { return false; } } catch (CurrencyValueNull e) { //Ignore if the currency is null we treat it as 0 } } return true; }
private MockPlanPhase createMockMonthlyPlanPhase(@Nullable final BigDecimal recurringRate, @Nullable final BigDecimal fixedCost, final PhaseType phaseType) { final MockInternationalPrice recurringPrice = (recurringRate == null) ? null : new MockInternationalPrice(new DefaultPrice(recurringRate, Currency.USD)); final MockInternationalPrice fixedPrice = (fixedCost == null) ? null : new MockInternationalPrice(new DefaultPrice(fixedCost, Currency.USD)); return new MockPlanPhase(recurringPrice, fixedPrice, BillingPeriod.MONTHLY, phaseType); }
private MockPlanPhase createMockMonthlyPlanPhase(@Nullable final BigDecimal recurringRate, final BigDecimal fixedRate, final PhaseType phaseType) { return new MockPlanPhase(new MockInternationalPrice(new DefaultPrice(recurringRate, Currency.USD)), new MockInternationalPrice(new DefaultPrice(fixedRate, Currency.USD)), BillingPeriod.MONTHLY, phaseType); }
public static MockInternationalPrice create0USD() { return new MockInternationalPrice(new DefaultPrice().setCurrency(Currency.USD).setValue(BigDecimal.ZERO)); }
private MockPlanPhase createMockMonthlyPlanPhase(@Nullable final BigDecimal recurringRate) { return new MockPlanPhase(new MockInternationalPrice(new DefaultPrice(recurringRate, Currency.USD)), null, BillingPeriod.MONTHLY); }
public static MockInternationalPrice create1USD() { return new MockInternationalPrice(new DefaultPrice().setCurrency(Currency.USD).setValue(BigDecimal.ONE)); }
private MockPlanPhase createMockMonthlyPlanPhase(final BigDecimal recurringRate, final PhaseType phaseType) { return new MockPlanPhase(new MockInternationalPrice(new DefaultPrice(recurringRate, Currency.USD)), null, BillingPeriod.MONTHLY, phaseType); }
public static MockInternationalPrice createUSD(final String value) { return new MockInternationalPrice(new DefaultPrice().setCurrency(Currency.USD).setValue(new BigDecimal(value))); }
private MockPlanPhase createMockAnnualPlanPhase(final BigDecimal recurringRate, final PhaseType phaseType) { return new MockPlanPhase(new MockInternationalPrice(new DefaultPrice(recurringRate, Currency.USD)), null, BillingPeriod.ANNUAL, phaseType); }
@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); } }
final MockInternationalPrice zeroPrice = new MockInternationalPrice(new DefaultPrice(ZERO, Currency.USD)); final MockInternationalPrice cheapPrice = new MockInternationalPrice(new DefaultPrice(ONE, Currency.USD));
@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(null); p0.initialize(c, new URI("foo:bar")); 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, new URI("foo:bar")); 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 = "slow") public void testMixedModeInvoicePersistence() throws InvoiceApiException, CatalogApiException { final Currency currency = Currency.USD; final DefaultPrice zeroPrice = new DefaultPrice(BigDecimal.ZERO, Currency.USD); final MockInternationalPrice fixedPrice = new MockInternationalPrice(zeroPrice); final MockPlanPhase phase1 = new MockPlanPhase(null, fixedPrice); final DefaultPrice cheapPrice = new DefaultPrice(cheapAmount, Currency.USD); final MockInternationalPrice recurringPrice = new MockInternationalPrice(cheapPrice); final MockPlanPhase phase2 = new MockPlanPhase(recurringPrice, null);
final DefaultPrice price = new DefaultPrice(rate, Currency.USD); final MockInternationalPrice recurringPrice = new MockInternationalPrice(price); final MockPlanPhase phase = new MockPlanPhase(recurringPrice, null);
final MockInternationalPrice price5 = new MockInternationalPrice(new DefaultPrice(FIVE, Currency.USD)); final MockInternationalPrice price10 = new MockInternationalPrice(new DefaultPrice(TEN, Currency.USD)); final MockInternationalPrice price20 = new MockInternationalPrice(new DefaultPrice(TWENTY, Currency.USD)); final PlanPhase basePlanEvergreen = new MockPlanPhase(price10, null, BillingPeriod.MONTHLY, PhaseType.EVERGREEN); final MockInternationalPrice price13 = new MockInternationalPrice(new DefaultPrice(THIRTEEN, Currency.USD)); final PlanPhase basePlan2Phase = new MockPlanPhase(price13, null, BillingPeriod.MONTHLY, PhaseType.EVERGREEN); newEvents.add(createBillingEvent(baseSubscription.getId(), baseSubscription.getBundleId(), april25, basePlan2, basePlan2Phase, 25));
final Currency currency = Currency.USD; final DefaultPrice zeroPrice = new DefaultPrice(BigDecimal.ZERO, Currency.USD); final MockInternationalPrice fixedPrice = new MockInternationalPrice(zeroPrice); final MockPlanPhase phase1 = new MockPlanPhase(null, fixedPrice); final DefaultPrice cheapPrice = new DefaultPrice(cheapAmount, Currency.USD); final MockInternationalPrice recurringPrice = new MockInternationalPrice(cheapPrice); final MockPlanPhase phase2 = new MockPlanPhase(recurringPrice, null);
@Test(groups = "slow") public void testInvoiceForFreeTrial() throws InvoiceApiException, CatalogApiException { final Currency currency = Currency.USD; final DefaultPrice price = new DefaultPrice(BigDecimal.ZERO, Currency.USD); final MockInternationalPrice recurringPrice = new MockInternationalPrice(price); final MockPlanPhase phase = new MockPlanPhase(recurringPrice, null); final MockPlan plan = new MockPlan(phase); final SubscriptionBase subscription = getZombieSubscription(); final DateTime effectiveDate = invoiceUtil.buildDate(2011, 1, 1).toDateTimeAtStartOfDay(); final BillingEvent event = invoiceUtil.createMockBillingEvent(null, subscription, effectiveDate, plan, phase, null, recurringPrice.getPrice(currency), currency, BillingPeriod.MONTHLY, 15, BillingModeType.IN_ADVANCE, "testEvent", 1L, SubscriptionBaseTransitionType.CREATE); final BillingEventSet events = new MockBillingEventSet(); events.add(event); final LocalDate targetDate = invoiceUtil.buildDate(2011, 1, 15); final Invoice invoice = generator.generateInvoice(UUID.randomUUID(), events, null, targetDate, Currency.USD); // expect one pro-ration item and one full-period item assertEquals(invoice.getNumberOfItems(), 2); assertEquals(invoice.getBalance().compareTo(ZERO), 0); }
final MockInternationalPrice price10 = new MockInternationalPrice(new DefaultPrice(TEN, Currency.USD)); final PlanPhase originalPlanEvergreen = new MockPlanPhase(price10, null, BillingPeriod.MONTHLY, PhaseType.EVERGREEN); final SubscriptionBase newSubscription = createSubscription(); final Plan newPlan = new MockPlan("new plan"); final MockInternationalPrice price5 = new MockInternationalPrice(new DefaultPrice(FIVE, Currency.USD)); final PlanPhase newPlanEvergreen = new MockPlanPhase(price5, null, BillingPeriod.MONTHLY, PhaseType.EVERGREEN); events.add(createBillingEvent(newSubscription.getId(), originalSubscription.getBundleId(), april25, newPlan, newPlanEvergreen, 25));
final DefaultPrice price1 = new DefaultPrice(TEN, Currency.USD); final MockInternationalPrice recurringPrice = new MockInternationalPrice(price1); final MockPlanPhase phase1 = new MockPlanPhase(recurringPrice, null, BillingPeriod.MONTHLY, PhaseType.TRIAL); final DefaultPrice price2 = new DefaultPrice(TWENTY, Currency.USD); final MockInternationalPrice recurringPrice2 = new MockInternationalPrice(price2); final MockPlanPhase phase2 = new MockPlanPhase(recurringPrice, null, BillingPeriod.MONTHLY, PhaseType.TRIAL);