Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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();
        }