public void QuandoInvocadoDeveChamarAtualizarTarefasQtdVezesDoTotalDeTarefasAtrasadas()
        {
            //Given
            var categoriaCasa  = new Categoria(2, "Casa");
            var categoriaSaude = new Categoria(4, "Saude");

            var tarefas = new List <Tarefa>
            {
                new Tarefa(1, "Tirar o lixo", categoriaCasa, new DateTime(2018, 12, 31), null, StatusTarefa.Criada),
                new Tarefa(4, "Fazer o almoço", categoriaCasa, new DateTime(2017, 12, 1), null, StatusTarefa.Criada),
                new Tarefa(9, "Ir a academia", categoriaSaude, new DateTime(2018, 12, 31), null, StatusTarefa.Criada)
            };

            var moq = new Mock <IRepositorioTarefas>();

            moq.Setup(r => r.ObtemTarefas(It.IsAny <Func <Tarefa, bool> >())).Returns(tarefas);
            var repository = moq.Object;

            var comando = new GerenciaPrazoDasTarefas(new DateTime(2019, 1, 1));
            var handler = new GerenciaPrazoDasTarefasHandler(repository);

            //When
            handler.Execute(comando);

            //Then
            // Verifica se o método foi chamado 1 vez
            moq.Verify(x => x.AtualizarTarefas(It.IsAny <Tarefa[]>()), Times.Once());
        }
        public void QuandoAtualizarAtrazadasContar()
        {
            var compCateg = new Categoria(1, "Compras");
            var casaCateg = new Categoria(2, "Casa");
            var trabCateg = new Categoria(3, "Trabalho");
            var saudCateg = new Categoria(4, "Saúde");
            var higiCateg = new Categoria(5, "Higiene");


            var tarefas = new List <Tarefa>
            {
                //atrasadas a partir de 1/1/2019
                new Tarefa(1, "Tirar lixo", casaCateg, new DateTime(2018, 12, 31), null, StatusTarefa.Criada),
                new Tarefa(4, "Fazer o almoço", casaCateg, new DateTime(2017, 12, 1), null, StatusTarefa.Criada),
                new Tarefa(9, "Ir à academia", saudCateg, new DateTime(2018, 12, 31), null, StatusTarefa.Criada)
            };

            var mock = new Mock <IRepositorioTarefas>();

            mock.Setup(r => r.ObtemTarefas(It.IsAny <Func <Tarefa, bool> >()))
            .Returns(tarefas);


            var repo = mock.Object;


            var comando = new GerenciaPrazoDasTarefas(new DateTime(2019, 1, 1));
            var handler = new GerenciaPrazoDasTarefasHandler(repo);


            handler.Execute(comando);

            mock.Verify(r => r.AtualizarTarefas(It.IsAny <Tarefa[]>()), Times.Once());
        }
        public void QuandoInvocadoDeveChamarAtualizarTarefasNaQtdDeVezesDeTarefasDesatualizadas()
        {
            //Arrange
            var categoriaSaude    = new Categoria("Saude");
            var categoriaHigiene  = new Categoria("Higiene");
            var categoriaTrabalho = new Categoria("Trabalho");

            List <Tarefa> tarefas = new List <Tarefa>()
            {
                new Tarefa(1, "Comprar remédio para dor de cabeça", categoriaSaude, new DateTime(2020, 1, 1), null, StatusTarefa.Criada),
                new Tarefa(2, "Marcar consulta com o médico", categoriaSaude, new DateTime(2020, 1, 1), null, StatusTarefa.Criada),
                new Tarefa(3, "Marcar reunião com o Marcelo", categoriaTrabalho, new DateTime(2020, 1, 1), null, StatusTarefa.Criada),
                new Tarefa(4, "Realizar faxina", categoriaHigiene, new DateTime(2020, 1, 1), null, StatusTarefa.Criada),
            };

            var mock = new Mock <IRepositorioTarefas>();

            mock.Setup(r => r.ObtemTarefas(It.IsAny <Func <Tarefa, bool> >())).Returns(tarefas);
            var repo = mock.Object;

            var comando = new GerenciaPrazoDasTarefas(new DateTime(2019, 1, 1));
            var handler = new GerenciaPrazoDasTarefasHandler(repo);

            //Act
            handler.Execute(comando);

            //Assert
            mock.Verify(x => x.AtualizarTarefas(It.IsAny <Tarefa[]>()), Times.Once);
        }
        public void QuandoInvocadeDeveChamarAtualizarListaDeTarefasApenasUmaVez()
        {
            //arrange
            var categ   = new Categoria("dummy");
            var tarefas = new List <Tarefa>
            {
                new Tarefa(20, "Fazer almoço", categ, new DateTime(2021, 01, 30), null, StatusTarefa.Criada),
                new Tarefa(30, "Cortar cabelo", categ, new DateTime(2021, 01, 24), null, StatusTarefa.Criada),
                new Tarefa(40, "Comprar carne", categ, new DateTime(2021, 02, 01), null, StatusTarefa.Criada),
            };

            var mock = new Mock <IRepositorioTarefas>();

            mock.Setup(r => r.ObtemTarefas(It.IsAny <Func <Tarefa, bool> >()))
            .Returns(tarefas);

            var repo = mock.Object;

            var comando = new GerenciaPrazoDasTarefas(new DateTime(2021, 01, 25));
            var handler = new GerenciaPrazoDasTarefasHandler(repo);

            //act
            handler.Execute(comando);

            mock.Verify(r => r.AtualizarTarefas(It.IsAny <Tarefa[]>()), Times.Once());
        }
コード例 #5
0
        public void QuandoInvocadoDeveChamarAtulizarTarefasNaQtdeVezesDoTotalDeTarefasAtrasadas()
        {
            //arrange
            var categ   = new Categoria("Dummy");
            var tarefas = new List <Tarefa>
            {
                //atrasadas a partir de 1/1/2019
                new Tarefa(100, "Tirar lixo", categ, new DateTime(2018, 12, 31), null, StatusTarefa.Criada),
                new Tarefa(104, "Fazer o almoço", categ, new DateTime(2017, 12, 01), null, StatusTarefa.Criada),
                new Tarefa(109, "Ir à academia", categ, new DateTime(2018, 12, 31), null, StatusTarefa.Criada)
            };
            var mock = new Mock <IRepositorioTarefas>();

            mock.Setup(r => r.ObtemTarefas(It.IsAny <Func <Tarefa, bool> >()))
            .Returns(tarefas);
            var repo = mock.Object;

            var comando = new GerenciaPrazoDasTarefas(new DateTime(2019, 1, 1));
            var handler = new GerenciaPrazoDasTarefasHandler(repo);

            //act
            handler.Execute(comando);

            //assert
            mock.Verify(r => r.AtualizarTarefas(It.IsAny <Tarefa[]>()), Times.Once());
        }
        public void QuandoTarefasEstiveremAtrasadasDeveMudarSeuStatus()
        {
            //Arrage
            var categoriaSaude    = new Categoria("Saude");
            var categoriaHigiene  = new Categoria("Higiene");
            var categoriaTrabalho = new Categoria("Trabalho");

            List <Tarefa> tarefas = new List <Tarefa>()
            {
                new Tarefa(1, "Comprar remédio para dor de cabeça", categoriaSaude, new DateTime(2020, 1, 1), null, StatusTarefa.Criada),
                new Tarefa(2, "Marcar consulta com o médico", categoriaSaude, new DateTime(2020, 1, 1), null, StatusTarefa.Criada),
                new Tarefa(3, "Marcar reunião com o Marcelo", categoriaTrabalho, new DateTime(2020, 1, 1), null, StatusTarefa.Criada),
                new Tarefa(4, "Realizar faxina", categoriaHigiene, new DateTime(2020, 1, 1), null, StatusTarefa.Criada),
            };

            var optionsContext = new DbContextOptionsBuilder <DbTarefasContext>()
                                 .UseInMemoryDatabase <DbTarefasContext>("DbTarefasContext")
                                 .Options;

            var repositorioTarefas = new RepositorioTarefa(new DbTarefasContext(optionsContext));

            repositorioTarefas.IncluirTarefas(tarefas.ToArray());

            var comando = new GerenciaPrazoDasTarefas(new DateTime(2020, 2, 1));
            var GerenciaPrazoDasTarefasHandler = new GerenciaPrazoDasTarefasHandler(repositorioTarefas);

            //Act
            GerenciaPrazoDasTarefasHandler.Execute(comando);

            //Assert
            var tarefasEmAtraso = repositorioTarefas.ObtemTarefas(t => t.Status == StatusTarefa.EmAtraso);

            Assert.Equal(4, tarefasEmAtraso.Count());
        }
コード例 #7
0
        public void VerificaQuantidadeDeChamadasDadaAtualizacaoDeTarefas()
        {
            Categoria[] categorias =
            {
                new Categoria("Categoria 1"),
                new Categoria("Categoria 2"),
                new Categoria("Categoria 3")
            };

            var tarefas = new List <Tarefa>
            {
                { new Tarefa(1, "Tarefa 1", categorias[0], new DateTime(2018, 12, 31), null, StatusTarefa.Criada) },
                { new Tarefa(2, "Tarefa 2", categorias[1], new DateTime(2017, 12, 24), null, StatusTarefa.Criada) },
                { new Tarefa(6, "Tarefa 6", categorias[2], new DateTime(2019, 3, 5), null, StatusTarefa.Criada) }
            };

            var mock = new Mock <IRepositorioTarefas>();

            mock.Setup(r => r.ObtemTarefas(It.IsAny <Func <Tarefa, bool> >()))
            .Returns(tarefas);

            var repo = mock.Object;

            var comando = new GerenciaPrazoDasTarefas(new DateTime(2019, 1, 1));
            var handler = new GerenciaPrazoDasTarefasHandler(repo);

            handler.Execute(comando);

            mock.Verify(r => r.AtualizarTarefas(It.IsAny <Tarefa[]>()), Times.Once);
        }
コード例 #8
0
        public void Execute(GerenciaPrazoDasTarefas comando)
        {
            var agora = comando.DataHoraAtual;

            //pegar todas as tarefas não concluídas que passaram do prazo
            var tarefas = _repositorioTarefas
                          .ObtemTarefas(t => t.Prazo <= agora && t.Status != StatusTarefa.Concluida)
                          .ToList();

            //atualizá-las com status Atrasada
            tarefas.ForEach(t => t.Status = StatusTarefa.EmAtraso);

            //salvar tarefas
            _repositorioTarefas.AtualizarTarefas(tarefas.ToArray());
        }
        public void AoExecutarDeveAtualizarTarefasNoRepo()
        {
            //arrange/setup do mock
            var dataHoraAtual = new DateTime(2019, 1, 1);
            var mock          = new Mock <IRepositorioTarefas>();
            var repo          = mock.Object;
            var comando       = new GerenciaPrazoDasTarefas(dataHoraAtual);
            var handler       = new GerenciaPrazoDasTarefasHandler(repo);

            //act
            handler.Execute(comando);

            //assert
            mock.Verify(r => r.AtualizarTarefas(It.IsAny <Tarefa[]>()), Times.Once());
        }
        public void QuandoTarefasEstiveremAtrasadasDeveMudarSeuStaus()
        {
            //Arrange
            var compCateg = new Categoria(1, "Compras");
            var casaCateg = new Categoria(2, "Casa");
            var trabCateg = new Categoria(3, "Trabalho");
            var saudCateg = new Categoria(4, "Saúde");
            var higiCateg = new Categoria(5, "Higiene");

            var tarefas = new List <Tarefa>
            {
                //atrasadas a partir de 1/1/2019
                new Tarefa(1, "Tirar Lixo", casaCateg, new DateTime(2018, 12, 31), null, StatusTarefa.Criada),
                new Tarefa(4, "Fazer almoço", casaCateg, new DateTime(2017, 12, 1), null, StatusTarefa.Criada),
                new Tarefa(9, "Ir à academia", saudCateg, new DateTime(2018, 12, 31), null, StatusTarefa.Criada),
                new Tarefa(7, "Concluir relatório", trabCateg, new DateTime(2018, 5, 7), null, StatusTarefa.Pendente),
                new Tarefa(10, "Beber água", saudCateg, new DateTime(2018, 12, 31), null, StatusTarefa.Criada),
                //dentro do prazo em 1/1/2019
                new Tarefa(8, "Comparecer a reunião", trabCateg, new DateTime(2018, 11, 12), new DateTime(2018, 11, 30),
                           StatusTarefa.Concluida),
                new Tarefa(2, "Arrumar a cama", casaCateg, new DateTime(2019, 4, 5), null, StatusTarefa.Criada),
                new Tarefa(3, "Escovar os dentes", higiCateg, new DateTime(2019, 1, 2), null, StatusTarefa.Criada),
                new Tarefa(5, "Comprar presente pro João", compCateg, new DateTime(2019, 10, 8), null, StatusTarefa.Criada),
                new Tarefa(6, "Comprar ração", compCateg, new DateTime(2019, 11, 20), null, StatusTarefa.Criada)
            };

            var options = new DbContextOptionsBuilder <DbTarefasContext>()
                          .UseInMemoryDatabase("DbTarefasContext")
                          .Options;

            var contexto = new DbTarefasContext(options);
            var repo     = new RepositorioTarefa(contexto);

            repo.IncluirTarefas(tarefas.ToArray());

            var comando = new GerenciaPrazoDasTarefas(new DateTime(2019, 1, 1));
            var handler = new GerenciaPrazoDasTarefasHandler(repo);

            //Act
            handler.Execute(comando);

            //Assert
            var tarefasEmAtraso = repo.ObtemTarefas(t => t.Status == StatusTarefa.EmAtraso);

            Assert.Equal(5, tarefasEmAtraso.Count());
        }
        public void QuandoTarefasEstiveremAtrasadasDeveMudarSeuStatus()
        {
            //Arrange
            // Fake Object
            var categoriaCompras  = new Categoria(1, "Compras");
            var categoriaCasa     = new Categoria(2, "Casa");
            var categoriaTrabalho = new Categoria(3, "Trabalho");
            var categoriaSaude    = new Categoria(4, "Saude");
            var categoriaHigiene  = new Categoria(5, "Higiene");

            var tarefas = new List <Tarefa>
            {
                //Atrasadas a partir de 2019/1/1
                new Tarefa(1, "Tirar o lixo", categoriaCasa, new DateTime(2018, 12, 31), null, StatusTarefa.Criada),
                new Tarefa(4, "Fazer o almoço", categoriaCasa, new DateTime(2017, 12, 1), null, StatusTarefa.Criada),
                new Tarefa(9, "Ir a academia", categoriaSaude, new DateTime(2018, 12, 31), null, StatusTarefa.Criada),
                new Tarefa(7, "Concluir o relatório", categoriaSaude, new DateTime(2018, 5, 7), null, StatusTarefa.Pendente),
                new Tarefa(10, "Beber água", categoriaSaude, new DateTime(2018, 12, 31), null, StatusTarefa.Criada),
                //Dentro do prazo em 2019/1/1
                new Tarefa(8, "Comparecer a reunião", categoriaTrabalho, new DateTime(2018, 11, 12), null, StatusTarefa.Concluida),
                new Tarefa(2, "Arrumar a cama", categoriaCasa, new DateTime(2019, 4, 5), null, StatusTarefa.Criada),
                new Tarefa(3, "Escovar os dentes", categoriaHigiene, new DateTime(2019, 1, 2), null, StatusTarefa.Criada),
                new Tarefa(5, "Comprar presentes para o João", categoriaCompras, new DateTime(2019, 10, 8), null, StatusTarefa.Criada),
                new Tarefa(6, "Comprar ração", categoriaCompras, new DateTime(2019, 11, 20), null, StatusTarefa.Criada)
            };

            var options = new DbContextOptionsBuilder <DbTarefasContext>()
                          .UseInMemoryDatabase("DbTarefasContext").Options;
            var context = new DbTarefasContext(options);

            var repository = new RepositorioTarefa(context);

            repository.IncluirTarefas(tarefas.ToArray());

            var comando = new GerenciaPrazoDasTarefas(new DateTime(2019, 1, 1));
            var handler = new GerenciaPrazoDasTarefasHandler(repository);

            //Act
            handler.Execute(comando);

            //Assert
            var tarefasEmAtraso = repository.ObtemTarefas(x => x.Status == StatusTarefa.EmAtraso);

            Assert.Equal(5, tarefasEmAtraso.Count());
        }
コード例 #12
0
        public void QuandoInvocadoDeveChamarAtualizarTarefasSomenteUmaVez()
        {
            // Arrange
            var categoria = new Categoria("Categoria teste");
            var tarefas   = new List <Tarefa>
            {
                new Tarefa()
                {
                    Categoria   = categoria,
                    Titulo      = "ToDo",
                    ConcluidaEm = DateTime.Now,
                    Prazo       = new DateTime(2019, 9, 21),
                    Id          = 200
                },
                new Tarefa()
                {
                    Categoria   = categoria,
                    Titulo      = "Do",
                    ConcluidaEm = DateTime.Now,
                    Prazo       = new DateTime(2019, 7, 21),
                    Id          = 201
                }
            };

            var mock = new Mock <IRepositorioTarefas>();

            mock.Setup(r => r.ObtemTarefas(It.IsAny <Func <Tarefa, bool> >())).Returns(tarefas);

            var repo = mock.Object;

            var comando = new GerenciaPrazoDasTarefas(new DateTime(2019, 1, 1));
            var handler = new GerenciaPrazoDasTarefasHandler(repo);

            //act
            handler.Execute(comando);

            //assert
            // Pode ser feito dessa forma também
            //mock.Verify(r => r.AtualizarTarefas(It.IsAny<Tarefa[]>()), Times.Exactly(1));
            mock.Verify(r => r.AtualizarTarefas(It.IsAny <Tarefa[]>()), Times.Once());
        }
コード例 #13
0
        public void TarefasAtrasadasDevemMudarStatus()
        {
            Categoria[] categorias =
            {
                new Categoria("Categoria 1"),
                new Categoria("Categoria 2"),
                new Categoria("Categoria 3")
            };

            var tarefas = new List <Tarefa>
            {
                //Atrasadas a partir de 1/1/2019
                { new Tarefa(1, "Tarefa 1", categorias[0], new DateTime(2018, 12, 31), null, StatusTarefa.Criada) },
                { new Tarefa(2, "Tarefa 2", categorias[1], new DateTime(2017, 12, 24), null, StatusTarefa.Criada) },
                { new Tarefa(3, "Tarefa 3", categorias[2], new DateTime(2018, 12, 15), null, StatusTarefa.Criada) },
                //No prazo em 1/1/2019
                { new Tarefa(4, "Tarefa 4", categorias[0], new DateTime(2019, 1, 22), null, StatusTarefa.Criada) },
                { new Tarefa(5, "Tarefa 5", categorias[1], new DateTime(2019, 4, 13), null, StatusTarefa.Criada) },
                { new Tarefa(6, "Tarefa 6", categorias[2], new DateTime(2019, 3, 5), null, StatusTarefa.Criada) }
            };

            var options = new DbContextOptionsBuilder <DbTarefasContext>()
                          .UseInMemoryDatabase("DbTarefasContext")
                          .Options;

            var contexto = new DbTarefasContext(options);

            var repositorio = new RepositorioTarefa(contexto);

            repositorio.IncluirTarefas(tarefas.ToArray());

            var comando = new GerenciaPrazoDasTarefas(new DateTime(2019, 1, 1));

            var gerenciador = new GerenciaPrazoDasTarefasHandler(repositorio);

            gerenciador.Execute(comando);

            var tarefasEmAtraso = tarefas.Where(t => t.Status == StatusTarefa.EmAtraso).Count();

            Assert.Equal(3, tarefasEmAtraso);
        }
        public void QuandoTarefasAtrasadasDeveMudarStatus()
        {
            //arrange
            var casaCateg     = new Categoria(2, "Casa");
            var trabalhoCateg = new Categoria(3, "trabalho");
            var saudeCateg    = new Categoria(4, "saude");
            var higieneCateg  = new Categoria(5, "higiene");
            var compraCateg   = new Categoria(6, "Compras");

            var tarefas = new List <Tarefa>
            {
                new Tarefa(2, "Fazer almoço", casaCateg, new DateTime(2021, 01, 30), null, StatusTarefa.Criada),
                new Tarefa(3, "Cortar cabelo", higieneCateg, new DateTime(2021, 01, 24), null, StatusTarefa.Criada),
                new Tarefa(4, "Comprar carne", compraCateg, new DateTime(2021, 02, 01), null, StatusTarefa.Criada),
                new Tarefa(5, "Fazer teste de integração", trabalhoCateg, new DateTime(2021, 01, 25), null, StatusTarefa.Criada),
                new Tarefa(6, "Tirar Lixo", casaCateg, new DateTime(2021, 01, 26), null, StatusTarefa.Criada),
            };

            var option = new DbContextOptionsBuilder <DbTarefasContext>()
                         .UseInMemoryDatabase("DbTarefas")
                         .Options;
            var contexto = new DbTarefasContext(option);
            var repo     = new RepositorioTarefa(contexto);

            repo.IncluirTarefas(tarefas.ToArray());

            var comando = new GerenciaPrazoDasTarefas(new DateTime(2021, 01, 25));
            var handler = new GerenciaPrazoDasTarefasHandler(repo);

            //act
            handler.Execute(comando);

            //assert
            var tarefasEmAtraso = repo.ObtemTarefas(t => t.Status == StatusTarefa.EmAtraso);

            Assert.Equal(2, tarefasEmAtraso.Count());
        }
        public void QuandoPassarDoPrazoDeveColocarTarefasEmAtraso()
        {
            //arrange: determinada massa de tarefas na base, algumas com prazo vencido
            var massaInicial = new List <Tarefa>
            {
                //atrasadas a partir de 1/1/2019
                new Tarefa(1, "Tirar lixo", new Categoria("Casa"), new DateTime(2018, 12, 31), null, StatusTarefa.Criada),
                new Tarefa(4, "Fazer o almoço", new Categoria("Casa"), new DateTime(2017, 12, 1), null, StatusTarefa.Criada),
                new Tarefa(9, "Ir à academia", new Categoria("Saúde"), new DateTime(2018, 12, 31), null, StatusTarefa.Criada),
                new Tarefa(7, "Concluir o relatório", new Categoria("Trabalho"), new DateTime(2018, 5, 7), null, StatusTarefa.Pendente),
                new Tarefa(10, "Beber água", new Categoria("Saúde"), new DateTime(2018, 12, 31), null, StatusTarefa.Criada),
                //dentro do prazo em 1/1/2019
                new Tarefa(8, "Comparecer à reunião", new Categoria("Trabalho"), new DateTime(2018, 11, 12), new DateTime(2018, 11, 30), StatusTarefa.Concluida),
                new Tarefa(2, "Arrumar a cama", new Categoria("Casa"), new DateTime(2019, 4, 5), null, StatusTarefa.Criada),
                new Tarefa(3, "Escovar os dentes", new Categoria("Higiene"), new DateTime(2019, 1, 2), null, StatusTarefa.Criada),
                new Tarefa(5, "Comprar presente pro João", new Categoria("Compras"), new DateTime(2019, 10, 8), null, StatusTarefa.Criada),
                new Tarefa(6, "Comprar ração", new Categoria("Compras"), new DateTime(2019, 11, 20), null, StatusTarefa.Criada),
            };
            var options = new DbContextOptionsBuilder <DbTarefasContext>()
                          .UseInMemoryDatabase("Testes de Integração")
                          .Options;
            var contexto = new DbTarefasContext(options);
            var repo     = new RepositorioTarefa(contexto);

            repo.IncluirTarefas(massaInicial.ToArray());

            var comando = new GerenciaPrazoDasTarefas(new DateTime(2019, 1, 1));
            var handler = new GerenciaPrazoDasTarefasHandler(repo);

            //act
            handler.Execute(comando);

            //assert
            var tarefas = repo.ObtemTarefas(t => t.Status == StatusTarefa.EmAtraso);

            Assert.Equal(5, tarefas.Count());
        }