public async Task ItShouldUpdateIfMailboxAlreadyContainsMessage() { await this.DatabaseTestAsync(async testDatabase => { this.InitializeTarget(testDatabase); using (var connection = testDatabase.CreateConnection()) { await connection.CreateEndToEndEmailAsync(MailboxName.Value); } await testDatabase.TakeSnapshotAsync(); await this.target.ExecuteAsync(MailboxName, Subject, Body); var expected = new EndToEndTestEmail(MailboxName.Value, Subject, Body, default(DateTime)); return(new ExpectedSideEffects { Update = new WildcardEntity <EndToEndTestEmail>(expected) { Expected = actual => { expected.DateReceived = actual.DateReceived; return expected; } } }); }); }
public async Task ExecuteAsync(MailboxName mailboxName, string subject, string body) { mailboxName.AssertNotNull("mailboxName"); subject.AssertNotNull("subject"); body.AssertNotNull("body"); var email = new EndToEndTestEmail(mailboxName.Value, subject, body, DateTime.UtcNow); using (var connection = this.connectionFactory.CreateConnection()) { await connection.UpsertAsync(email, EndToEndTestEmail.Fields.Subject | EndToEndTestEmail.Fields.Body | EndToEndTestEmail.Fields.DateReceived); } }
public async Task WhenMessagesExist_ItShouldRemoveAllMessagesOnlyForThisMailbox() { await this.DatabaseTestAsync(async testDatabase => { this.InitializeTarget(testDatabase); using (var connection = testDatabase.CreateConnection()) { var entity = new EndToEndTestEmail(MailboxName.Value, Subject, Body, DateTime.UtcNow); await connection.InsertAsync(entity); } await testDatabase.TakeSnapshotAsync(); var result = await this.target.HandleAsync(Query); Assert.AreEqual(new Message(Subject, Body), result); return(ExpectedSideEffects.None); }); }
public async Task ItShouldInsertIfMailboxContainsNoMessages() { await this.DatabaseTestAsync(async testDatabase => { this.InitializeTarget(testDatabase); await testDatabase.TakeSnapshotAsync(); await this.target.ExecuteAsync(MailboxName, Subject, Body); var expected = new EndToEndTestEmail(MailboxName.Value, Subject, Body, default(DateTime)); return(new ExpectedSideEffects { Insert = new WildcardEntity <EndToEndTestEmail>(expected) { Expected = actual => { expected.DateReceived = actual.DateReceived; return expected; } } }); }); }