killbill-memoizeit
Changes
analytics/src/main/resources/com/ning/billing/analytics/dao/BusinessInvoiceFieldSqlDao.sql.stg 1(+1 -0)
analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessAccountFieldSqlDao.java 95(+95 -0)
analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceFieldSqlDao.java 95(+95 -0)
analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoicePaymentFieldSqlDao.java 95(+95 -0)
Details
diff --git a/analytics/src/main/resources/com/ning/billing/analytics/dao/BusinessInvoiceFieldSqlDao.sql.stg b/analytics/src/main/resources/com/ning/billing/analytics/dao/BusinessInvoiceFieldSqlDao.sql.stg
index 2924db3..fe0080f 100644
--- a/analytics/src/main/resources/com/ning/billing/analytics/dao/BusinessInvoiceFieldSqlDao.sql.stg
+++ b/analytics/src/main/resources/com/ning/billing/analytics/dao/BusinessInvoiceFieldSqlDao.sql.stg
@@ -4,6 +4,7 @@ getFieldsForInvoice(invoice_id) ::=<<
select
invoice_id
, name
+, value
from bin_fields
where invoice_id = :invoice_id
;
diff --git a/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java b/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
index 23209b9..2194a1f 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
@@ -241,13 +241,6 @@ public class TestAnalyticsService extends TestWithEmbeddedDB {
*/
}
-
- @AfterClass(groups = "slow")
- public void stopMysql() {
- helper.stopMysql();
- }
-
-
// STEPH talk to Pierre -- see previous remark hence disable test
@Test(groups = "slow", enabled = true)
public void testRegisterForNotifications() throws Exception {
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessAccountFieldSqlDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessAccountFieldSqlDao.java
new file mode 100644
index 0000000..69fed56
--- /dev/null
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessAccountFieldSqlDao.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2010-2012 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.analytics.dao;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.skife.jdbi.v2.IDBI;
+import org.testng.Assert;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.ning.billing.analytics.TestWithEmbeddedDB;
+import com.ning.billing.analytics.model.BusinessAccountField;
+
+public class TestBusinessAccountFieldSqlDao extends TestWithEmbeddedDB {
+ private BusinessAccountFieldSqlDao accountFieldSqlDao;
+
+ @BeforeMethod(groups = "slow")
+ public void setUp() throws Exception {
+ final IDBI dbi = helper.getDBI();
+ accountFieldSqlDao = dbi.onDemand(BusinessAccountFieldSqlDao.class);
+ }
+
+ @Test(groups = "slow")
+ public void testCRUD() throws Exception {
+ final String accountKey = UUID.randomUUID().toString();
+ final String name = UUID.randomUUID().toString().substring(0, 30);
+ final String value = UUID.randomUUID().toString();
+
+ // Verify initial state
+ Assert.assertEquals(accountFieldSqlDao.getFieldsForAccount(accountKey).size(), 0);
+ Assert.assertEquals(accountFieldSqlDao.removeField(accountKey, name), 0);
+
+ // Add an entry
+ Assert.assertEquals(accountFieldSqlDao.addField(accountKey, name, value), 1);
+ final List<BusinessAccountField> fieldsForAccount = accountFieldSqlDao.getFieldsForAccount(accountKey);
+ Assert.assertEquals(fieldsForAccount.size(), 1);
+
+ // Retrieve it
+ final BusinessAccountField accountField = fieldsForAccount.get(0);
+ Assert.assertEquals(accountField.getAccountKey(), accountKey);
+ Assert.assertEquals(accountField.getName(), name);
+ Assert.assertEquals(accountField.getValue(), value);
+
+ // Delete it
+ Assert.assertEquals(accountFieldSqlDao.removeField(accountKey, name), 1);
+ Assert.assertEquals(accountFieldSqlDao.getFieldsForAccount(accountKey).size(), 0);
+ }
+
+ @Test(groups = "slow")
+ public void testSegmentation() throws Exception {
+ final String accountKey1 = UUID.randomUUID().toString();
+ final String name1 = UUID.randomUUID().toString().substring(0, 30);
+ final String accountKey2 = UUID.randomUUID().toString();
+ final String name2 = UUID.randomUUID().toString().substring(0, 30);
+
+ // Add a field to both accounts
+ Assert.assertEquals(accountFieldSqlDao.addField(accountKey1, name1, UUID.randomUUID().toString()), 1);
+ Assert.assertEquals(accountFieldSqlDao.addField(accountKey2, name2, UUID.randomUUID().toString()), 1);
+
+ Assert.assertEquals(accountFieldSqlDao.getFieldsForAccount(accountKey1).size(), 1);
+ Assert.assertEquals(accountFieldSqlDao.getFieldsForAccount(accountKey2).size(), 1);
+
+ // Remove the field for the first account
+ Assert.assertEquals(accountFieldSqlDao.removeField(accountKey1, name1), 1);
+
+ Assert.assertEquals(accountFieldSqlDao.getFieldsForAccount(accountKey1).size(), 0);
+ Assert.assertEquals(accountFieldSqlDao.getFieldsForAccount(accountKey2).size(), 1);
+ }
+
+ @Test(groups = "slow")
+ public void testHealthCheck() throws Exception {
+ // HealthCheck test to make sure MySQL is setup properly
+ try {
+ accountFieldSqlDao.test();
+ } catch (Throwable t) {
+ Assert.fail(t.toString());
+ }
+ }
+}
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceFieldSqlDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceFieldSqlDao.java
new file mode 100644
index 0000000..9553dfa
--- /dev/null
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceFieldSqlDao.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2010-2012 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.analytics.dao;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.skife.jdbi.v2.IDBI;
+import org.testng.Assert;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.ning.billing.analytics.TestWithEmbeddedDB;
+import com.ning.billing.analytics.model.BusinessInvoiceField;
+
+public class TestBusinessInvoiceFieldSqlDao extends TestWithEmbeddedDB {
+ private BusinessInvoiceFieldSqlDao invoiceFieldSqlDao;
+
+ @BeforeMethod(groups = "slow")
+ public void setUp() throws Exception {
+ final IDBI dbi = helper.getDBI();
+ invoiceFieldSqlDao = dbi.onDemand(BusinessInvoiceFieldSqlDao.class);
+ }
+
+ @Test(groups = "slow")
+ public void testCRUD() throws Exception {
+ final String invoiceId = UUID.randomUUID().toString();
+ final String name = UUID.randomUUID().toString().substring(0, 30);
+ final String value = UUID.randomUUID().toString();
+
+ // Verify initial state
+ Assert.assertEquals(invoiceFieldSqlDao.getFieldsForInvoice(invoiceId).size(), 0);
+ Assert.assertEquals(invoiceFieldSqlDao.removeField(invoiceId, name), 0);
+
+ // Add an entry
+ Assert.assertEquals(invoiceFieldSqlDao.addField(invoiceId, name, value), 1);
+ final List<BusinessInvoiceField> fieldsForInvoice = invoiceFieldSqlDao.getFieldsForInvoice(invoiceId);
+ Assert.assertEquals(fieldsForInvoice.size(), 1);
+
+ // Retrieve it
+ final BusinessInvoiceField invoiceField = fieldsForInvoice.get(0);
+ Assert.assertEquals(invoiceField.getInvoiceId().toString(), invoiceId);
+ Assert.assertEquals(invoiceField.getName(), name);
+ Assert.assertEquals(invoiceField.getValue(), value);
+
+ // Delete it
+ Assert.assertEquals(invoiceFieldSqlDao.removeField(invoiceId, name), 1);
+ Assert.assertEquals(invoiceFieldSqlDao.getFieldsForInvoice(invoiceId).size(), 0);
+ }
+
+ @Test(groups = "slow")
+ public void testSegmentation() throws Exception {
+ final String invoiceId1 = UUID.randomUUID().toString();
+ final String name1 = UUID.randomUUID().toString().substring(0, 30);
+ final String invoiceId2 = UUID.randomUUID().toString();
+ final String name2 = UUID.randomUUID().toString().substring(0, 30);
+
+ // Add a field to both invoices
+ Assert.assertEquals(invoiceFieldSqlDao.addField(invoiceId1, name1, UUID.randomUUID().toString()), 1);
+ Assert.assertEquals(invoiceFieldSqlDao.addField(invoiceId2, name2, UUID.randomUUID().toString()), 1);
+
+ Assert.assertEquals(invoiceFieldSqlDao.getFieldsForInvoice(invoiceId1).size(), 1);
+ Assert.assertEquals(invoiceFieldSqlDao.getFieldsForInvoice(invoiceId2).size(), 1);
+
+ // Remove the field for the first invoice
+ Assert.assertEquals(invoiceFieldSqlDao.removeField(invoiceId1, name1), 1);
+
+ Assert.assertEquals(invoiceFieldSqlDao.getFieldsForInvoice(invoiceId1).size(), 0);
+ Assert.assertEquals(invoiceFieldSqlDao.getFieldsForInvoice(invoiceId2).size(), 1);
+ }
+
+ @Test(groups = "slow")
+ public void testHealthCheck() throws Exception {
+ // HealthCheck test to make sure MySQL is setup properly
+ try {
+ invoiceFieldSqlDao.test();
+ } catch (Throwable t) {
+ Assert.fail(t.toString());
+ }
+ }
+}
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoicePaymentFieldSqlDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoicePaymentFieldSqlDao.java
new file mode 100644
index 0000000..b97849d
--- /dev/null
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoicePaymentFieldSqlDao.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2010-2012 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.analytics.dao;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.skife.jdbi.v2.IDBI;
+import org.testng.Assert;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.ning.billing.analytics.TestWithEmbeddedDB;
+import com.ning.billing.analytics.model.BusinessInvoicePaymentField;
+
+public class TestBusinessInvoicePaymentFieldSqlDao extends TestWithEmbeddedDB {
+ private BusinessInvoicePaymentFieldSqlDao invoicePaymentFieldSqlDao;
+
+ @BeforeMethod(groups = "slow")
+ public void setUp() throws Exception {
+ final IDBI dbi = helper.getDBI();
+ invoicePaymentFieldSqlDao = dbi.onDemand(BusinessInvoicePaymentFieldSqlDao.class);
+ }
+
+ @Test(groups = "slow")
+ public void testCRUD() throws Exception {
+ final String paymentId = UUID.randomUUID().toString();
+ final String name = UUID.randomUUID().toString().substring(0, 30);
+ final String value = UUID.randomUUID().toString();
+
+ // Verify initial state
+ Assert.assertEquals(invoicePaymentFieldSqlDao.getFieldsForInvoicePayment(paymentId).size(), 0);
+ Assert.assertEquals(invoicePaymentFieldSqlDao.removeField(paymentId, name), 0);
+
+ // Add an entry
+ Assert.assertEquals(invoicePaymentFieldSqlDao.addField(paymentId, name, value), 1);
+ final List<BusinessInvoicePaymentField> fieldsForInvoicePayment = invoicePaymentFieldSqlDao.getFieldsForInvoicePayment(paymentId);
+ Assert.assertEquals(fieldsForInvoicePayment.size(), 1);
+
+ // Retrieve it
+ final BusinessInvoicePaymentField invoicePaymentField = fieldsForInvoicePayment.get(0);
+ Assert.assertEquals(invoicePaymentField.getPaymentId().toString(), paymentId);
+ Assert.assertEquals(invoicePaymentField.getName(), name);
+ Assert.assertEquals(invoicePaymentField.getValue(), value);
+
+ // Delete it
+ Assert.assertEquals(invoicePaymentFieldSqlDao.removeField(paymentId, name), 1);
+ Assert.assertEquals(invoicePaymentFieldSqlDao.getFieldsForInvoicePayment(paymentId).size(), 0);
+ }
+
+ @Test(groups = "slow")
+ public void testSegmentation() throws Exception {
+ final String paymentId1 = UUID.randomUUID().toString();
+ final String name1 = UUID.randomUUID().toString().substring(0, 30);
+ final String paymentId2 = UUID.randomUUID().toString();
+ final String name2 = UUID.randomUUID().toString().substring(0, 30);
+
+ // Add a field to both invoice payments
+ Assert.assertEquals(invoicePaymentFieldSqlDao.addField(paymentId1, name1, UUID.randomUUID().toString()), 1);
+ Assert.assertEquals(invoicePaymentFieldSqlDao.addField(paymentId2, name2, UUID.randomUUID().toString()), 1);
+
+ Assert.assertEquals(invoicePaymentFieldSqlDao.getFieldsForInvoicePayment(paymentId1).size(), 1);
+ Assert.assertEquals(invoicePaymentFieldSqlDao.getFieldsForInvoicePayment(paymentId2).size(), 1);
+
+ // Remove the field for the first invoice payment
+ Assert.assertEquals(invoicePaymentFieldSqlDao.removeField(paymentId1, name1), 1);
+
+ Assert.assertEquals(invoicePaymentFieldSqlDao.getFieldsForInvoicePayment(paymentId1).size(), 0);
+ Assert.assertEquals(invoicePaymentFieldSqlDao.getFieldsForInvoicePayment(paymentId2).size(), 1);
+ }
+
+ @Test(groups = "slow")
+ public void testHealthCheck() throws Exception {
+ // HealthCheck test to make sure MySQL is setup properly
+ try {
+ invoicePaymentFieldSqlDao.test();
+ } catch (Throwable t) {
+ Assert.fail(t.toString());
+ }
+ }
+}
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessSubscriptionTransitionFieldSqlDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessSubscriptionTransitionFieldSqlDao.java
new file mode 100644
index 0000000..5233229
--- /dev/null
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessSubscriptionTransitionFieldSqlDao.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2010-2012 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.analytics.dao;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.skife.jdbi.v2.IDBI;
+import org.testng.Assert;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.ning.billing.analytics.TestWithEmbeddedDB;
+import com.ning.billing.analytics.model.BusinessSubscriptionTransitionField;
+
+public class TestBusinessSubscriptionTransitionFieldSqlDao extends TestWithEmbeddedDB {
+ private BusinessSubscriptionTransitionFieldSqlDao subscriptionTransitionFieldSqlDao;
+
+ @BeforeMethod(groups = "slow")
+ public void setUp() throws Exception {
+ final IDBI dbi = helper.getDBI();
+ subscriptionTransitionFieldSqlDao = dbi.onDemand(BusinessSubscriptionTransitionFieldSqlDao.class);
+ }
+
+ @Test(groups = "slow")
+ public void testCRUD() throws Exception {
+ final String externalKey = UUID.randomUUID().toString();
+ final String name = UUID.randomUUID().toString().substring(0, 30);
+ final String value = UUID.randomUUID().toString();
+
+ // Verify initial state
+ Assert.assertEquals(subscriptionTransitionFieldSqlDao.getFieldsForBusinessSubscriptionTransition(externalKey).size(), 0);
+ Assert.assertEquals(subscriptionTransitionFieldSqlDao.removeField(externalKey, name), 0);
+
+ // Add an entry
+ Assert.assertEquals(subscriptionTransitionFieldSqlDao.addField(externalKey, name, value), 1);
+ final List<BusinessSubscriptionTransitionField> fieldsForBusinessSubscriptionTransition = subscriptionTransitionFieldSqlDao.getFieldsForBusinessSubscriptionTransition(externalKey);
+ Assert.assertEquals(fieldsForBusinessSubscriptionTransition.size(), 1);
+
+ // Retrieve it
+ final BusinessSubscriptionTransitionField subscriptionTransitionField = fieldsForBusinessSubscriptionTransition.get(0);
+ Assert.assertEquals(subscriptionTransitionField.getExternalKey(), externalKey);
+ Assert.assertEquals(subscriptionTransitionField.getName(), name);
+ Assert.assertEquals(subscriptionTransitionField.getValue(), value);
+
+ // Delete it
+ Assert.assertEquals(subscriptionTransitionFieldSqlDao.removeField(externalKey, name), 1);
+ Assert.assertEquals(subscriptionTransitionFieldSqlDao.getFieldsForBusinessSubscriptionTransition(externalKey).size(), 0);
+ }
+
+ @Test(groups = "slow")
+ public void testSegmentation() throws Exception {
+ final String externalKey1 = UUID.randomUUID().toString();
+ final String name1 = UUID.randomUUID().toString().substring(0, 30);
+ final String externalKey2 = UUID.randomUUID().toString();
+ final String name2 = UUID.randomUUID().toString().substring(0, 30);
+
+ // Add a field to both transitions
+ Assert.assertEquals(subscriptionTransitionFieldSqlDao.addField(externalKey1, name1, UUID.randomUUID().toString()), 1);
+ Assert.assertEquals(subscriptionTransitionFieldSqlDao.addField(externalKey2, name2, UUID.randomUUID().toString()), 1);
+
+ Assert.assertEquals(subscriptionTransitionFieldSqlDao.getFieldsForBusinessSubscriptionTransition(externalKey1).size(), 1);
+ Assert.assertEquals(subscriptionTransitionFieldSqlDao.getFieldsForBusinessSubscriptionTransition(externalKey2).size(), 1);
+
+ // Remove the field for the first transition
+ Assert.assertEquals(subscriptionTransitionFieldSqlDao.removeField(externalKey1, name1), 1);
+
+ Assert.assertEquals(subscriptionTransitionFieldSqlDao.getFieldsForBusinessSubscriptionTransition(externalKey1).size(), 0);
+ Assert.assertEquals(subscriptionTransitionFieldSqlDao.getFieldsForBusinessSubscriptionTransition(externalKey2).size(), 1);
+ }
+
+ @Test(groups = "slow")
+ public void testHealthCheck() throws Exception {
+ // HealthCheck test to make sure MySQL is setup properly
+ try {
+ subscriptionTransitionFieldSqlDao.test();
+ } catch (Throwable t) {
+ Assert.fail(t.toString());
+ }
+ }
+}
diff --git a/analytics/src/test/java/com/ning/billing/analytics/TestWithEmbeddedDB.java b/analytics/src/test/java/com/ning/billing/analytics/TestWithEmbeddedDB.java
index 8feb144..9f60771 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/TestWithEmbeddedDB.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/TestWithEmbeddedDB.java
@@ -47,7 +47,7 @@ public abstract class TestWithEmbeddedDB extends AnalyticsTestSuite {
helper.cleanupAllTables();
}
- @BeforeMethod(alwaysRun = true)
+ @BeforeMethod(groups = "slow")
public void cleanup() {
try {
helper.cleanupAllTables();