public async Task DeleteCarrinhoAsync_failure() { //arrange string clienteId = "123"; var databaseMock = new Mock <IDatabase>(); databaseMock .Setup(d => d.KeyDeleteAsync(It.IsAny <RedisKey>(), It.IsAny <CommandFlags>())) .ReturnsAsync(false) .Verifiable(); redisMock .Setup(r => r.GetDatabase(It.IsAny <int>(), It.IsAny <object>())) .Returns(databaseMock.Object) .Verifiable(); var repository = new RedisCarrinhoRepository(loggerMock.Object, redisMock.Object); //act bool result = await repository.DeleteCarrinhoAsync(clienteId); //assert Assert.False(result); databaseMock.Verify(); redisMock.Verify(); }
public async Task UpdateCarrinhoAsync_success() { //arrange var json1 = JsonConvert.SerializeObject(new CarrinhoCliente("123") { Itens = new List <ItemCarrinho> { new ItemCarrinho("001", "001", "produto 001", 12.34m, 1) } }); var json2 = JsonConvert.SerializeObject(new CarrinhoCliente("123") { Itens = new List <ItemCarrinho> { new ItemCarrinho("001", "001", "produto 001", 12.34m, 2) } }); string clienteId = "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 RedisCarrinhoRepository(loggerMock.Object, redisMock.Object); var item = new UpdateQuantidadeInput("001", 2); //act var output = await repository.UpdateCarrinhoAsync(clienteId, item); //assert Assert.Equal(clienteId, output.CarrinhoCliente.ClienteId); Assert.Collection(output.CarrinhoCliente.Itens, i => { Assert.Equal("001", i.ProdutoId); Assert.Equal(2, i.Quantidade); }); databaseMock.Verify(); redisMock.Verify(); }
public async Task GetCarrinhoAsync_invalid_clienteId() { //arrange string clienteId = ""; var repository = new RedisCarrinhoRepository(loggerMock.Object, redisMock.Object); //act - assert await Assert.ThrowsAsync <ArgumentException>( () => repository.GetCarrinhoAsync(clienteId)); }
public async Task UpdateCarrinhoAsync_invalid_item() { //arrange string clienteId = "123"; var repository = new RedisCarrinhoRepository(loggerMock.Object, redisMock.Object); //act //assert await Assert.ThrowsAsync <ArgumentNullException>( () => repository.UpdateCarrinhoAsync(clienteId, null)); }
public async Task UpdateCarrinhoAsync_negative_qty() { //arrange string clienteId = "123"; var repository = new RedisCarrinhoRepository(loggerMock.Object, redisMock.Object); //act //assert await Assert.ThrowsAsync <ArgumentOutOfRangeException>( () => repository.UpdateCarrinhoAsync(clienteId, new UpdateQuantidadeInput() { ProdutoId = "001", Quantidade = -1 })); }
public async Task UpdateCarrinhoAsync_invalid_item2() { //arrange string clienteId = "123"; var repository = new RedisCarrinhoRepository(loggerMock.Object, redisMock.Object); //act //assert await Assert.ThrowsAsync <ArgumentException>( () => repository.UpdateCarrinhoAsync(clienteId, new UpdateQuantidadeInput() { ProdutoId = "" })); }
public async Task GetCarrinhoAsync_clienteId_NotFound() { //arrange var json = @"{ ""ClienteId"": ""123"", ""Itens"": [] }"; string clienteId = "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(json); redisMock .Setup(r => r.GetDatabase(It.IsAny <int>(), It.IsAny <object>())) .Returns(databaseMock.Object) .Verifiable(); var repository = new RedisCarrinhoRepository(loggerMock.Object, redisMock.Object); //act var carrinhoCliente = await repository.GetCarrinhoAsync(clienteId); //assert Assert.Equal(clienteId, carrinhoCliente.ClienteId); Assert.Empty(carrinhoCliente.Itens); databaseMock.Verify(); redisMock.Verify(); }
public async Task GetCarrinhoAsync_success() { //arrange var json = @"{ ""ClienteId"": ""123"", ""Itens"": [{ ""Id"": ""001"", ""ProdutoId"": ""001"", ""ProdutoNome"": ""Produto 001"", ""Quantidade"": 7, ""PrecoUnitario"": 12.34}] }"; string clienteId = "123"; var databaseMock = new Mock <IDatabase>(); databaseMock .Setup(d => d.StringGetAsync(It.IsAny <RedisKey>(), It.IsAny <CommandFlags>())) .ReturnsAsync(json) .Verifiable(); redisMock .Setup(r => r.GetDatabase(It.IsAny <int>(), It.IsAny <object>())) .Returns(databaseMock.Object) .Verifiable(); var repository = new RedisCarrinhoRepository(loggerMock.Object, redisMock.Object); //act var carrinhoCliente = await repository.GetCarrinhoAsync(clienteId); //assert Assert.Equal(clienteId, carrinhoCliente.ClienteId); Assert.Collection(carrinhoCliente.Itens, item => { Assert.Equal("001", item.ProdutoId); Assert.Equal(7, item.Quantidade); }); databaseMock.Verify(); redisMock.Verify(); }