Exemplo n.º 1
0
        public void UnaJornadaNoTerminadaPuedeIniciarUnaPausa()
        {
            var fixture = new Fixture();
            var inicioJornada = fixture.CreateAnonymous<DateTime>();
            var inicioPausa = fixture.CreateAnonymous<DateTime>();

            var sut = new Jornada(inicioJornada);
            sut.PausaIniciada.Should().BeNull();

            sut.IniciarPausa(inicioPausa);

            sut.PausaIniciada.Should().NotBeNull();
        }
Exemplo n.º 2
0
        public void UnaJornadaTerminadaNoPuedeIniciarPausa()
        {
            var fixture = new Fixture();
            var inicioJornada = fixture.CreateAnonymous<DateTime>();
            var inicioPausa = fixture.CreateAnonymous<DateTime>();
            var finJornada = fixture.CreateAnonymous<DateTime>();

            var sut = new Jornada(inicioJornada, finJornada);

            Assert.Throws<InvalidOperationException>(() => sut.IniciarPausa(inicioPausa));
        }
Exemplo n.º 3
0
        public void UnaJornadaNoTerminadaNoPuedeIniciarUnaPausaAntesDelInicioDeLaJornada()
        {
            var fixture = new Fixture();
            var inicioPausa = fixture.CreateAnonymous<DateTime>();
            var inicioJornada = fixture.CreateAnonymous<DateTime>();

            var sut = new Jornada(inicioJornada);
            sut.PausaIniciada.Should().BeNull();

            Assert.Throws<InvalidOperationException>(
                () => sut.IniciarPausa(inicioPausa));
        }
Exemplo n.º 4
0
        public void UnaJornadaNoTerminadaNoPuedeIniciarPausaSiYaHayUnaPausaIniciada()
        {
            var fixture = new Fixture();
            var inicioJornada = fixture.CreateAnonymous<DateTime>();
            var inicioPausa1 = fixture.CreateAnonymous<DateTime>();
            var inicioPausa2 = fixture.CreateAnonymous<DateTime>();
            var pausa = new Pausa(inicioPausa1);

            var sut = new Jornada(inicioJornada, pausa);
            sut.PausaIniciada.Should().NotBeNull();

            Assert.Throws<InvalidOperationException>(
                () => sut.IniciarPausa(inicioPausa2));
        }
        public void SePuedeTerminarPausaEnCondicionesCorrectas(
            [Frozen]Mock<IJornadaQueries> queriesMock,
            [Frozen]Mock<IJornadaCommands> commandsMock,
            [Frozen]Mock<ITimeProvider> timeProviderMock,
            JornadaService sut,
            Jornada jornada,
            DateTime inicioPausa,
            string usuario)
        {
            jornada.IniciarPausa(inicioPausa);
            queriesMock.Setup(q => q.ObtenerUltimaJornada(usuario)).Returns(jornada);
            timeProviderMock.Setup(t => t.Now).Returns(inicioPausa.AddHours(1));

            sut.TerminarPausa(usuario);

            commandsMock.Verify(c => c.ActualizarJornada(jornada, usuario), Times.Once());
        }
        public void NoSePuedeTerminarPausaConFechaAnteriorAInicioPausa(
            [Frozen]Mock<IJornadaQueries> queriesMock,
            [Frozen]Mock<IJornadaCommands> commandsMock,
            [Frozen]Mock<ITimeProvider> timeProviderMock,
            JornadaService sut,
            Jornada jornada,
            DateTime inicioPausa,
            string usuario)
        {
            jornada.IniciarPausa(inicioPausa);
            queriesMock.Setup(q => q.ObtenerUltimaJornada(usuario)).Returns(jornada);
            timeProviderMock.Setup(t => t.Now).Returns(inicioPausa.AddHours(-1));

            Action accion = () => sut.TerminarPausa(usuario);

            accion.ShouldThrow<InvalidOperationException>()
                .WithMessage("La fecha de finalización debe ser posterior a la fecha de inicio.");
            commandsMock.Verify(c => c.ActualizarJornada(jornada, usuario), Times.Never());
        }
        public void NoSePuedeTerminarJornadaSiLaJornadaTienePausaIniciada(
            [Frozen]Mock<IJornadaQueries> queriesMock,
            [Frozen]Mock<IJornadaCommands> commandsMock,
            [Frozen]Mock<ITimeProvider> timeProviderMock,
            JornadaService sut,
            Jornada jornada,
            DateTime inicioPausa,
            string usuario)
        {
            jornada.IniciarPausa(inicioPausa);
            queriesMock.Setup(q => q.ObtenerUltimaJornada(usuario)).Returns(jornada);
            timeProviderMock.Setup(t => t.Now).Returns(jornada.Inicio.AddHours(8));

            Action accion = () => sut.TerminarJornada(usuario);

            accion.ShouldThrow<InvalidOperationException>()
                .WithMessage("No se puede terminar una jornada con una pausa iniciada.");
            commandsMock.Verify(c => c.ActualizarJornada(jornada, usuario), Times.Never());
        }