public async Task HandleDomainCreatedCreatesDomain()
        {
            A.CallTo(() => _tlsRptEntityDao.Get(Id)).Returns <TlsRptEntityState>(null);
            await _tlsRptEntity.Handle(new DomainCreated(Id, "*****@*****.**", DateTime.Now));

            A.CallTo(() => _tlsRptEntityDao.Save(A <TlsRptEntityState> ._)).MustHaveHappenedOnceExactly();
            A.CallTo(() => _dispatcher.Dispatch(A <TlsRptEntityCreated> ._, A <string> ._)).MustHaveHappenedOnceExactly();
        }
        public async Task Handle(DomainCreated message)
        {
            string messageId = message.Id.ToLower();

            TlsRptEntityState state = await _dao.Get(messageId);

            if (state != null)
            {
                _log.LogError("Ignoring {EventName} as TlsRptEntity already exists for {Id}.", nameof(DomainCreated), messageId);
                throw new MailCheckException($"Cannot handle event {nameof(DomainCreated)} as TlsRptEntity already exists for {messageId}.");
            }

            state = new TlsRptEntityState(messageId, 1, TlsRptState.Created, DateTime.UtcNow);
            await _dao.Save(state);

            TlsRptEntityCreated tlsRptEntityCreated = new TlsRptEntityCreated(messageId, state.Version);

            _dispatcher.Dispatch(tlsRptEntityCreated, _tlsRptEntityConfig.SnsTopicArn);
            _log.LogInformation("Created TlsRptEntity for {Id}.", messageId);
        }