public async Task UpdateBasketAsync_success() { //arrange var json1 = JsonConvert.SerializeObject(new CustomerBasket("123") { Items = new List <BasketItem> { new BasketItem("001", "001", "produto 001", 12.34m, 1) } }); var json2 = JsonConvert.SerializeObject(new CustomerBasket("123") { Items = new List <BasketItem> { new BasketItem("001", "001", "produto 001", 12.34m, 2) } }); string customerId = "123"; var databaseMock = new Mock <IDatabase>(); databaseMock .Setup(d => d.StringSetAsync( It.IsAny <RedisKey>(), It.IsAny <RedisValue>(), null, When.Always, CommandFlags.None )) .ReturnsAsync(true) .Verifiable(); databaseMock .SetupSequence(d => d.StringGetAsync(It.IsAny <RedisKey>(), It.IsAny <CommandFlags>())) .ReturnsAsync("") .ReturnsAsync(json1) .ReturnsAsync(json2); redisMock .Setup(r => r.GetDatabase(It.IsAny <int>(), It.IsAny <object>())) .Returns(databaseMock.Object) .Verifiable(); var repository = new RedisBasketRepository(loggerMock.Object, redisMock.Object); var item = new UpdateQuantityInput("001", 2); //act var output = await repository.UpdateBasketAsync(customerId, item); //assert Assert.Equal(customerId, output.CustomerBasket.CustomerId); Assert.Collection(output.CustomerBasket.Items, i => { Assert.Equal("001", i.ProductId); Assert.Equal(2, i.Quantity); }); databaseMock.Verify(); redisMock.Verify(); }
public async Task UpdateBasketAsync_invalid_item() { //arrange string customerId = "123"; var repository = new RedisBasketRepository(loggerMock.Object, redisMock.Object); //act //assert await Assert.ThrowsAsync <ArgumentNullException>( () => repository.UpdateBasketAsync(customerId, null)); }
public async Task UpdateBasketAsync_negative_qty() { //arrange string customerId = "123"; var repository = new RedisBasketRepository(loggerMock.Object, redisMock.Object); //act //assert await Assert.ThrowsAsync <ArgumentOutOfRangeException>( () => repository.UpdateBasketAsync(customerId, new UpdateQuantityInput() { ProductId = "001", Quantity = -1 })); }
public async Task UpdateBasketAsync_invalid_item2() { //arrange string customerId = "123"; var repository = new RedisBasketRepository(loggerMock.Object, redisMock.Object); //act //assert await Assert.ThrowsAsync <ArgumentException>( () => repository.UpdateBasketAsync(customerId, new UpdateQuantityInput() { ProductId = "" })); }