@Override public BigDecimal getAmount() { return businessInvoiceItemModelDao.getAmount(); }
@Override public String getBillingPeriod() { return businessInvoiceItemModelDao.getBillingPeriod(); }
@Override public Currency getCurrency() { return businessInvoiceItemModelDao.getCurrency(); }
public void bind(final SQLStatement q, final BusinessInvoiceItemBinder bind, final BusinessInvoiceItemModelDao invoiceItem) { q.bind("item_id", invoiceItem.getItemId().toString()); if (invoiceItem.getLinkedItemId() != null) { q.bind("linked_item_id", invoiceItem.getLinkedItemId().toString()); } else { q.bindNull("linked_item_id", Types.VARCHAR); if (invoiceItem.getCreatedDate() != null) { q.bind("created_date", invoiceItem.getCreatedDate().getMillis()); } else { q.bind("created_date", dateTimeNow.getMillis()); if (invoiceItem.getUpdatedDate() != null) { q.bind("updated_date", invoiceItem.getUpdatedDate().getMillis()); } else { q.bind("updated_date", dateTimeNow.getMillis()); q.bind("invoice_id", invoiceItem.getInvoiceId().toString()); q.bind("item_type", invoiceItem.getItemType()); q.bind("external_key", invoiceItem.getExternalKey()); q.bind("product_name", invoiceItem.getProductName()); q.bind("product_type", invoiceItem.getProductType()); q.bind("product_category", invoiceItem.getProductCategory()); q.bind("slug", invoiceItem.getSlug()); q.bind("phase", invoiceItem.getPhase()); q.bind("billing_period", invoiceItem.getBillingPeriod()); if (invoiceItem.getStartDate() != null) { q.bind("start_date", invoiceItem.getStartDate().toDate()); } else {
@Test(groups = "slow") public void testCRUD() throws Exception { final UUID invoiceId = UUID.randomUUID(); final String externalKey = UUID.randomUUID().toString(); final BusinessInvoiceItemModelDao invoiceItem = createInvoiceItem(invoiceId, externalKey); // Verify initial state Assert.assertNull(invoiceItemSqlDao.getInvoiceItem(invoiceItem.getItemId().toString(), internalCallContext)); Assert.assertEquals(invoiceItemSqlDao.deleteInvoiceItem(invoiceItem.getItemId().toString(), internalCallContext), 0); // Add the invoice item Assert.assertEquals(invoiceItemSqlDao.createInvoiceItem(invoiceItem, internalCallContext), 1); // Retrieve it Assert.assertEquals(invoiceItemSqlDao.getInvoiceItem(invoiceItem.getItemId().toString(), internalCallContext), invoiceItem); Assert.assertEquals(invoiceItemSqlDao.getInvoiceItemsForBundleByKey(invoiceItem.getExternalKey(), internalCallContext).size(), 1); Assert.assertEquals(invoiceItemSqlDao.getInvoiceItemsForBundleByKey(invoiceItem.getExternalKey(), internalCallContext).get(0), invoiceItem); Assert.assertEquals(invoiceItemSqlDao.getInvoiceItemsForInvoice(invoiceItem.getInvoiceId().toString(), internalCallContext).size(), 1); Assert.assertEquals(invoiceItemSqlDao.getInvoiceItemsForInvoice(invoiceItem.getInvoiceId().toString(), internalCallContext).get(0), invoiceItem); // Delete it Assert.assertEquals(invoiceItemSqlDao.deleteInvoiceItem(invoiceItem.getItemId().toString(), internalCallContext), 1); Assert.assertNull(invoiceItemSqlDao.getInvoiceItem(invoiceItem.getItemId().toString(), internalCallContext)); Assert.assertEquals(invoiceItemSqlDao.getInvoiceItemsForBundleByKey(invoiceItem.getExternalKey(), internalCallContext).size(), 0); Assert.assertEquals(invoiceItemSqlDao.getInvoiceItemsForInvoice(invoiceItem.getInvoiceId().toString(), internalCallContext).size(), 0); }
@Override public BusinessInvoiceItemModelDao map(final int index, final ResultSet r, final StatementContext ctx) throws SQLException { final UUID itemId = getUUID(r, "item_id"); final UUID linkedItemId = getUUID(r, "linked_item_id"); final DateTime createdDate = new DateTime(r.getLong("created_date"), DateTimeZone.UTC); final DateTime updatedDate = new DateTime(r.getLong("updated_date"), DateTimeZone.UTC); final UUID invoiceId = getUUID(r, "invoice_id"); final String itemType = r.getString("item_type"); final String externalKey = r.getString("external_key"); final String productName = r.getString("product_name"); final String productType = r.getString("product_type"); final String productCategory = r.getString("product_category"); final String slug = r.getString("slug"); final String phase = r.getString("phase"); final String billingPeriod = r.getString("billing_period"); final LocalDate startDate = getDate(r, "start_date"); final LocalDate endDate = getDate(r, "end_date"); final BigDecimal amount = BigDecimal.valueOf(r.getDouble("amount")); final Currency currency = Currency.valueOf(r.getString("currency")); return new BusinessInvoiceItemModelDao(amount, billingPeriod, createdDate, currency, endDate, externalKey, invoiceId, itemId, linkedItemId, itemType, phase, productCategory, productName, productType, slug, startDate, updatedDate); } }
@Override public UUID getItemId() { return businessInvoiceItemModelDao.getItemId(); }
@Override public String getExternalKey() { return businessInvoiceItemModelDao.getExternalKey(); }
@Override public String getItemType() { return businessInvoiceItemModelDao.getItemType(); }
@Override public LocalDate getEndDate() { return businessInvoiceItemModelDao.getEndDate(); }
@Override public UUID getInvoiceId() { return businessInvoiceItemModelDao.getInvoiceId(); }
final LocalDate startDate = clock.getUTCToday(); final DateTime updatedDate = clock.getUTCNow(); final BusinessInvoiceItemModelDao invoiceItem = new BusinessInvoiceItemModelDao(amount, billingPeriod, createdDate, currency, endDate, externalKey, invoiceId, itemId, linkedItemId, itemType, phase, productCategory, productName, productType, Assert.assertSame(invoiceItem, invoiceItem); Assert.assertEquals(invoiceItem, invoiceItem); Assert.assertTrue(invoiceItem.equals(invoiceItem)); Assert.assertEquals(invoiceItem.getAmount(), amount); Assert.assertEquals(invoiceItem.getBillingPeriod(), billingPeriod); Assert.assertEquals(invoiceItem.getCreatedDate(), createdDate); Assert.assertEquals(invoiceItem.getCurrency(), currency); Assert.assertEquals(invoiceItem.getEndDate(), endDate); Assert.assertEquals(invoiceItem.getExternalKey(), externalKey); Assert.assertEquals(invoiceItem.getInvoiceId(), invoiceId); Assert.assertEquals(invoiceItem.getItemId(), itemId); Assert.assertEquals(invoiceItem.getItemType(), itemType); Assert.assertEquals(invoiceItem.getLinkedItemId(), linkedItemId); Assert.assertEquals(invoiceItem.getPhase(), phase); Assert.assertEquals(invoiceItem.getProductCategory(), productCategory); Assert.assertEquals(invoiceItem.getProductName(), productName); Assert.assertEquals(invoiceItem.getProductType(), productType); Assert.assertEquals(invoiceItem.getSlug(), slug); Assert.assertEquals(invoiceItem.getStartDate(), startDate); Assert.assertEquals(invoiceItem.getUpdatedDate(), updatedDate); final BusinessInvoiceItemModelDao otherInvoiceItem = new BusinessInvoiceItemModelDao(null, null, createdDate, null, null, null, null, itemId, linkedItemId, null, null, null, null, null, null, null, null);
private BusinessInvoiceItemModelDao createInvoiceItem(final UUID invoiceId, final String externalKey) { final BigDecimal amount = BigDecimal.TEN; final String billingPeriod = UUID.randomUUID().toString().substring(0, 20); final DateTime createdDate = clock.getUTCNow(); final Currency currency = Currency.AUD; final LocalDate endDate = clock.getUTCToday(); final UUID itemId = UUID.randomUUID(); final UUID linkedItemId = UUID.randomUUID(); final String itemType = UUID.randomUUID().toString().substring(0, 20); final String phase = UUID.randomUUID().toString().substring(0, 20); final String productCategory = UUID.randomUUID().toString().substring(0, 20); final String productName = UUID.randomUUID().toString().substring(0, 20); final String productType = UUID.randomUUID().toString().substring(0, 20); final String slug = UUID.randomUUID().toString(); final LocalDate startDate = clock.getUTCToday(); final DateTime updatedDate = clock.getUTCNow(); return new BusinessInvoiceItemModelDao(amount, billingPeriod, createdDate, currency, endDate, externalKey, invoiceId, itemId, linkedItemId, itemType, phase, productCategory, productName, productType, slug, startDate, updatedDate); } }
@Test(groups = "slow") public void testSegmentation() throws Exception { final UUID invoiceId1 = UUID.randomUUID(); final String externalKey1 = UUID.randomUUID().toString(); final BusinessInvoiceItemModelDao invoiceItem1 = createInvoiceItem(invoiceId1, externalKey1); final UUID invoiceId2 = UUID.randomUUID(); final String externalKey2 = UUID.randomUUID().toString(); final BusinessInvoiceItemModelDao invoiceItem2 = createInvoiceItem(invoiceId2, externalKey2); // Create both invoice items Assert.assertEquals(invoiceItemSqlDao.createInvoiceItem(invoiceItem1, internalCallContext), 1); Assert.assertEquals(invoiceItemSqlDao.createInvoiceItem(invoiceItem2, internalCallContext), 1); Assert.assertEquals(invoiceItemSqlDao.getInvoiceItemsForBundleByKey(externalKey1, internalCallContext).size(), 1); Assert.assertEquals(invoiceItemSqlDao.getInvoiceItemsForBundleByKey(externalKey2, internalCallContext).size(), 1); Assert.assertEquals(invoiceItemSqlDao.getInvoiceItemsForInvoice(invoiceId1.toString(), internalCallContext).size(), 1); Assert.assertEquals(invoiceItemSqlDao.getInvoiceItemsForInvoice(invoiceId2.toString(), internalCallContext).size(), 1); // Remove the first invoice item Assert.assertEquals(invoiceItemSqlDao.deleteInvoiceItem(invoiceItem1.getItemId().toString(), internalCallContext), 1); Assert.assertEquals(invoiceItemSqlDao.getInvoiceItemsForBundleByKey(externalKey1, internalCallContext).size(), 0); Assert.assertEquals(invoiceItemSqlDao.getInvoiceItemsForBundleByKey(externalKey2, internalCallContext).size(), 1); Assert.assertEquals(invoiceItemSqlDao.getInvoiceItemsForInvoice(invoiceId1.toString(), internalCallContext).size(), 0); Assert.assertEquals(invoiceItemSqlDao.getInvoiceItemsForInvoice(invoiceId2.toString(), internalCallContext).size(), 1); }
Assert.assertEquals(bii.getAmount(), invoiceItem.getAmount()); Assert.assertEquals(bii.getCurrency(), invoiceItem.getCurrency()); Assert.assertEquals(bii.getEndDate(), invoiceItem.getEndDate()); Assert.assertEquals(bii.getInvoiceId(), invoiceItem.getInvoiceId()); Assert.assertEquals(bii.getItemId(), invoiceItem.getId()); Assert.assertEquals(bii.getStartDate(), invoiceItem.getStartDate()); Assert.assertEquals(bii.getItemType(), invoiceItem.getInvoiceItemType().toString()); Assert.assertNull(bii.getBillingPeriod()); Assert.assertNull(bii.getPhase()); Assert.assertNull(bii.getProductCategory()); Assert.assertNull(bii.getProductName()); Assert.assertNull(bii.getProductType()); Assert.assertNull(bii.getSlug()); Assert.assertNull(bii.getExternalKey());
return new BusinessInvoiceItemModelDao(externalKey, invoiceItem, plan, planPhase);