public void Test()
        {
            var eventModel   = EventManagementModelBuilder.Build();
            var updatedTitle = eventModel.With(
                eventTitle: new EventTitle("special value")
                );

            Assert.Equal(new EventTitle("special value"), updatedTitle.Title);
        }
        public async Task PostAddsANewEventManagementModelWithANewId()
        {
            var repo = new InMemoryEventManagementRepo();
            await repo.Update(
                EventManagementModelBuilder.Build().With(
                    id: new Guid("8b014e41-d74f-4031-a3d7-ae264144b989"),
                    eventTitle: new EventTitle("Brad's Amazing Event")
                    ));

            var factory = new WebApplicationFactory <Startup>()
                          .WithWebHostBuilder(builder =>
                                              builder.ConfigureTestServices(services => {
                services.AddSingleton <IEventManagementRepo>(repo);
            }));
            var client = factory.CreateClient();

            var model = EventManagementModelBuilder.Build().With(
                id: new Guid("8b014e41-d74f-4031-a3d7-ae264144b989"),
                eventTitle: new EventTitle("Carlie's awesome party")
                );

            var requestBody = JsonConvert.SerializeObject(model);
            var result      = await client.PostAsync("/v1/events", new StringContent(requestBody, Encoding.UTF8, "application/json"));

            // get a status code 200
            Assert.Equal(HttpStatusCode.OK, result.StatusCode);

            // view that it is the last thing in the EventManagementDto
            var getResult = await client.GetAsync("/v1/events");

            var body = await getResult.Content.ReadAsStringAsync();

            var response = JsonConvert.DeserializeObject <List <EventManagementDto> >(body);

            Assert.Equal(2, response.Count);
            Assert.Equal(2, response.Select(x => x.Id).Distinct().Count());
            Assert.Equal("Carlie's awesome party", response[1].Title);
        }