Пример #1
0
        public async Task Update_address()
        {
            // arrange
            var customer = NewCustomer();

            // act
            await DataAccessClient.CreateCustomerAsync(customer);

            var address = new AddressRecord {
                Label  = "Work",
                Street = "101 W. Broadway",
                City   = "San Diego",
                State  = "CA"
            };
            await DataAccessClient.AddOrUpdateAddressAsync(customer.Username, address);

            var result = await Table.GetItemAsync(customer.GetPrimaryKey(), consistentRead : true);

            // assert
            result.Username.Should().Be(customer.Username);
            result.Name.Should().Be(customer.Name);
            result.EmailAddress.Should().Be(customer.EmailAddress);
            result.Addresses.Should().NotBeEmpty();
            result.Addresses.Should().ContainKey("Work");
            result.Addresses["Work"].Should().BeEquivalentTo(address);
        }
Пример #2
0
        public async Task Create_customer_record()
        {
            // arrange
            var customer = NewCustomer();

            // act
            await DataAccessClient.CreateCustomerAsync(customer);

            var result = await Table.GetItemAsync(customer.GetPrimaryKey(), consistentRead : true);

            // assert
            result.Should().BeEquivalentTo(customer);
        }
        public async Task DeleteItem_with_condition_failed()
        {
            // arrange
            var customer = NewCustomer();
            await DataAccessClient.CreateCustomerAsync(customer);

            // act
            var result = await Table.DeleteItem(customer.GetPrimaryKey())
                         .WithCondition(record => record.Name == "Bob")
                         .ExecuteAsync();

            // assert
            result.Should().BeFalse();
        }
        public async Task PutItem_with_condition_failed()
        {
            // arrange
            var customer = NewCustomer();
            await DataAccessClient.CreateCustomerAsync(customer);

            // act
            var result = await Table.PutItem(customer.GetPrimaryKey(), customer)
                         .WithCondition(record => DynamoCondition.DoesNotExist(record))
                         .ExecuteAsync();

            // assert
            result.Should().BeFalse();
        }
        public async Task UpdateItem_with_condition_failed()
        {
            // arrange
            var customer = NewCustomer();

            var(order, items) = NewOrder(customer.Username);
            await DataAccessClient.CreateCustomerAsync(customer);

            await DataAccessClient.SaveOrderAsync(order, items);

            // act
            var result = await Table.UpdateItem(order.GetPrimaryKey())
                         .WithCondition(record => record.Status == OrderStatus.Shipped)
                         .Set(record => record.Status, OrderStatus.Delivered)
                         .ExecuteAsync();

            // assert
            result.Should().BeFalse();
        }
        public async Task BatchGetItemsMixedPartial()
        {
            // arrange
            var customer = NewCustomer();
            await DataAccessClient.CreateCustomerAsync(customer);

            var(order, items) = NewOrder(customer.Username);
            await DataAccessClient.SaveOrderAsync(order, items);

            // act
            var result = await Table.BatchGetItems()
                         .BeginGetItem(customer.GetPrimaryKey())
                         .Get(record => record.Username)
                         .End()
                         .BeginGetItem(order.GetPrimaryKey())
                         .Get(record => record.OrderId)
                         .End()
                         .ExecuteAsync();

            // assert
            result.Should().HaveCount(2);

            // verify fetched customer record
            var customerRecords = result.OfType <CustomerRecord>().ToList();

            customerRecords.Should().HaveCount(1);
            var fetchedCustomer = customerRecords.First();

            fetchedCustomer.Should().NotBeNull();
            fetchedCustomer.Username.Should().Be(customer.Username);
            fetchedCustomer.Name.Should().BeNull();

            // verify fetched customer record
            var orderRecords = result.OfType <OrderRecord>().ToList();

            orderRecords.Should().HaveCount(1);
            var fetchedOrder = orderRecords.First();

            fetchedOrder.Should().NotBeNull();
            fetchedOrder.OrderId.Should().Be(order.OrderId);
            fetchedOrder.CustomerUsername.Should().BeNull();
        }
        public async Task BatchGetItemsMixed()
        {
            // arrange
            var customer = NewCustomer();
            await DataAccessClient.CreateCustomerAsync(customer);

            var(order, items) = NewOrder(customer.Username);
            await DataAccessClient.SaveOrderAsync(order, items);

            // act
            var result = await Table.BatchGetItems()
                         .GetItem(customer.GetPrimaryKey())
                         .GetItem(order.GetPrimaryKey())
                         .ExecuteAsync();

            // assert
            result.Should().HaveCount(2);
            result.Should().ContainEquivalentOf(customer);
            result.Should().ContainEquivalentOf(order);
        }
        public async Task BatchGetItems()
        {
            // arrange
            var customer1 = NewCustomer();
            await DataAccessClient.CreateCustomerAsync(customer1);

            var customer2 = NewCustomer();
            await DataAccessClient.CreateCustomerAsync(customer2);

            // act
            var result = await Table.BatchGetItems(new[] {
                customer1.GetPrimaryKey(),
                customer2.GetPrimaryKey()
            }).ExecuteAsync();

            // assert
            result.Should().HaveCount(2);
            result.Should().ContainEquivalentOf(customer1);
            result.Should().ContainEquivalentOf(customer2);
        }
Пример #9
0
        public async Task Add_order()
        {
            // arrange
            var customer = NewCustomer();

            var(order, items) = NewOrder(customer.Username);

            // act
            await DataAccessClient.CreateCustomerAsync(customer);

            await DataAccessClient.SaveOrderAsync(order, items);

            var result = await DataAccessClient.GetCustomerWithMostRecentOrdersAsync(customer.Username, limit : 10);

            // assert
            result.Customer.Username.Should().Be(customer.Username);
            result.Customer.Name.Should().Be(customer.Name);
            result.Customer.EmailAddress.Should().Be(customer.EmailAddress);
            result.Orders.Count().Should().Be(1);
            result.Orders.First().Should().BeEquivalentTo(order);
        }