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(); }
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)); }
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)); }
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()); }