public async Task ThenEmailIsSent()
        {
            var dbContext         = ContextHelper.GetInMemoryContext();
            var requestFeedbackId = Guid.NewGuid();

            await dbContext.VisitFeedback.AddAsync(new VisitFeedback()
            {
                Id     = requestFeedbackId,
                Status = FeedbackStatus.NotStarted,
                Visit  = new Visit()
                {
                    OrganisationContact = new OrganisationContact()
                    {
                        Email = "*****@*****.**", FirstName = "Fred"
                    },
                    SupportRequest = new SupportRequest()
                    {
                        Organisation = new Organisation()
                        {
                            OrganisationName = "Org1"
                        }
                    }
                }
            });

            await dbContext.SaveChangesAsync();

            var emailService = Substitute.For <IEmailService>();

            var handler = new SetVisitFeedbackCompleteHandler(dbContext, emailService);
            await handler.Handle(new SetVisitFeedbackCompleteCommand(requestFeedbackId, FeedbackStatus.Complete), CancellationToken.None);

            await emailService.Received().SendFeedbackSubmitted("*****@*****.**", "Fred", "Org1");
        }
        public async Task ThenVisitStatusSetToComplete()
        {
            var dbContext         = ContextHelper.GetInMemoryContext();
            var requestFeedbackId = Guid.NewGuid();

            await dbContext.VisitFeedback.AddAsync(new VisitFeedback()
            {
                Id     = requestFeedbackId,
                Status = FeedbackStatus.NotStarted,
                Visit  = new Visit()
                {
                    OrganisationContact = new OrganisationContact()
                    {
                        Email = "*****@*****.**", FirstName = "Fred"
                    },
                    SupportRequest = new SupportRequest()
                    {
                        Organisation = new Organisation()
                        {
                            OrganisationName = "Org1"
                        }
                    }
                }
            });

            await dbContext.SaveChangesAsync();

            var handler = new SetVisitFeedbackCompleteHandler(dbContext, Substitute.For <IEmailService>());
            await handler.Handle(new SetVisitFeedbackCompleteCommand(requestFeedbackId, FeedbackStatus.Complete), CancellationToken.None);

            (await dbContext.VisitFeedback.Where(visit => visit.Id == requestFeedbackId).SingleAsync()).Status.Should().Be(FeedbackStatus.Complete);
        }