public void NoSePuedeTerminarPausaSiNoHayPausaIniciada(
            [Frozen]Mock<IJornadaQueries> queriesMock,
            [Frozen]Mock<IJornadaCommands> commandsMock,
            [Frozen]Mock<ITimeProvider> timeProviderMock,
            JornadaService sut,
            Jornada jornada,
            string usuario)
        {
            queriesMock.Setup(q => q.ObtenerUltimaJornada(usuario)).Returns(jornada);
            timeProviderMock.Setup(t => t.Now).Returns(jornada.Inicio.AddHours(1));

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

            accion.ShouldThrow<InvalidOperationException>()
                .WithMessage("No se puede terminar una pausa cuando no hay una pausa iniciada.");
            commandsMock.Verify(c => c.ActualizarJornada(jornada, usuario), Times.Never());
        }
        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());
        }