public async Task After_submission__handler_returns_school_Id() { var command = 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") }, } }; var sp = new ServiceProviderBuilder().BuildServiceProvider(); using (var scope = sp.CreateScope()) { var aggregateStore = scope.ServiceProvider.GetRequiredService <IAggregateStore>(); var userAccessor = Mock.Of <IUserAccessor>( mock => mock.GetUser() == Task.FromResult(new ApplicationUser() { Id = Guid.NewGuid() }), MockBehavior.Strict); var handler = new RegisterSchoolHandler(NodaTime.SystemClock.Instance, userAccessor, aggregateStore); var result = await handler.Handle(command, CancellationToken.None); Assert.True(result.IsSuccess); Assert.IsType <Guid>(result.Value); } }
public void After_submission__aggregate_contains_SchoolRegistered_event() { var command = 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") }, } }; var school = new SchoolAggregate(SchoolId.New); var registeringUser = new ApplicationUser() { Id = Guid.NewGuid() }; var result = school.RegisterSchool(NodaTime.SystemClock.Instance.GetCurrentInstant(), command, registeringUser); Assert.True(result.IsSuccess); var uncommittedEvent = Assert.Single(school.UncommittedEvents, e => e.AggregateEvent is SchoolRegistered); var @event = Assert.IsType <SchoolRegistered>(uncommittedEvent.AggregateEvent); Assert.Equal(registeringUser.Id, @event.RegisteringUserId); Assert.Equal(command.Name, @event.Name); Assert.Equal(command.City, @event.City); var contactData = Assert.Single(command.ContactData); Assert.Equal("sekretariat", contactData.Name); Assert.Equal(EmailAddress.Parse("*****@*****.**"), contactData.EmailAddress); Assert.Equal(PhoneNumber.Parse("58 301-67-34"), contactData.PhoneNumber); }
public async Task <IActionResult> Register(RegisterSchool.Command command) { var result = await _engine.Execute(command); return(result.MatchToActionResult(success => Ok(success))); }