Exemplo n.º 1
0
        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);
            });
        }
Exemplo n.º 4
0
        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;
                        }
                    }
                });
            });
        }