public async Task Command_must_be_issued_during_campaign() { var clock = new NodaTime.Testing.FakeClock(NodaTime.Instant.FromDateTimeUtc(DateTime.UtcNow).Plus(NodaTime.Duration.FromDays(30))); var sp = new ServiceProviderBuilder().BuildServiceProvider(services => { ConfigureServices(services); services.Remove <NodaTime.IClock>(); services.AddSingleton <NodaTime.IClock>(clock); }); using (var scope = sp.CreateScope()) { var engine = scope.ServiceProvider.GetRequiredService <ISzlemEngine>(); var command = new SubmitRecruitmentForm.Command() { FirstName = "Andrzej", LastName = "Strzelba", Email = EmailAddress.Parse("*****@*****.**"), PhoneNumber = Consts.FakePhoneNumber, AboutMe = "ala ma kota", Region = "Wolne Miasto Gdańsk", PreferredTrainingIds = new[] { 1 }, PreferredLecturingCities = new[] { "Wolne Miasto Gdańsk" }, GdprConsentGiven = true }; var result = await engine.Execute(command); Assert.True(result.IsFailure); var error = Assert.IsType <Domain.Error.DomainError>(result.Error); Assert.Equal(SubmitRecruitmentForm_ErrorMessages.SubmissionMustOccurDuringCampaign, error.Message); } }
public async Task If_school_has_resigned_but_resignation_time_expired__summary_status_is_Unknown() { // arrange Guid schoolId; var clock = new NodaTime.Testing.FakeClock(NodaTime.SystemClock.Instance.GetCurrentInstant()); var sp = new ServiceProviderBuilder().BuildServiceProvider(services => { services.AddSingleton(Mock.Of <IUserAccessor>( mock => mock.GetUser() == Task.FromResult(new ApplicationUser() { Id = Guid.NewGuid() }), MockBehavior.Strict)); services.AddSingleton <NodaTime.IClock>(clock); }); using (var scope = sp.CreateScope()) { var engine = scope.ServiceProvider.GetRequiredService <ISzlemEngine>(); var result = await engine.Execute(new RegisterSchool.Command() { Name = "I Liceum Ogólnokształcące", City = "Gdańsk", Address = "Wały Piastowskie 6", ContactData = new[] { new ContactData() { Name = "sekretariat", EmailAddress = EmailAddress.Parse("*****@*****.**"), PhoneNumber = PhoneNumber.Parse("58 301-67-34") }, } }); schoolId = result.Value; } using (var scope = sp.CreateScope()) { var engine = scope.ServiceProvider.GetRequiredService <ISzlemEngine>(); var result = await engine.Execute(new RecordResignation.Command() { SchoolId = schoolId, PotentialNextContactDate = clock.GetTodayDate() + NodaTime.Period.FromDays(1) }); Assert.True(result.IsSuccess); } // act & assert clock.AdvanceDays(3); using (var scope = sp.CreateScope()) { var engine = scope.ServiceProvider.GetRequiredService <ISzlemEngine>(); var results = await engine.Query(new GetSchools.Query()); results.Should().ContainSingle() .Which.Should().BeEquivalentTo(new GetSchools.Summary() { Id = schoolId, Name = "I Liceum Ogólnokształcące", City = "Gdańsk", Address = "Wały Piastowskie 6", Status = GetSchools.SchoolStatus.Unknown }); } }