コード例 #1
0
class TestCustomerStore(unittest.TestCase):

    test_cust = None
    customer_store = None

    @patch.object(CustomerStore, 'config', DYNAMODB_CONFIG)
    def setUp(self):
        self.test_cust = Customer({'emailAddress': '*****@*****.**', 'firstName': 'Testy', 'surname': 'McTest'})
        self.customer_store = CustomerStore()
        self.customer_store.save(self.test_cust)  # This demonstrates save functionality

    def tearDown(self):
        self.customer_store.delete(self.test_cust.email_address)

    def test_get_returns_test_customer(self):
        # Act
        cust = self.customer_store.get(self.test_cust.email_address)

        # Assert
        self.assertEqual(cust, self.test_cust)

    def test_get_returns_none_if_customer_not_found(self):
        # Act
        cust = self.customer_store.get('*****@*****.**')

        # Assert
        self.assertEqual(cust, None, 'Unmatched customer should return None, not raise an exception')
コード例 #2
0
    def create_or_get_customer(self, customer):
        """
        Get customer if it exists in database, otherwise create.
        :param customer: Customer object we're looking for
        :returns customer: Customer
        """
        customer_store = CustomerStore()

        database_customer = customer_store.get(customer.email_address)

        if database_customer:
            return database_customer

        # Cust doesn't exist so save them
        try:
            customer_store.save(customer)
            return Customer(customer)
        except CustomerStoreError:
            app.logger.debug('Error creating customer {0}'.format(customer.email_address))
            raise CustomerServiceError("Error creating customer")