public async Task WhenGettingBlog_ItShouldReturnTheResult()
        {
            await this.DatabaseTestAsync(async testDatabase =>
            {
                this.target = new GetBlogChannelsAndQueuesDbStatement(testDatabase);

                await this.CreateDataAsync(testDatabase);
                await testDatabase.TakeSnapshotAsync();

                var result = await this.target.ExecuteAsync(CreatorId);

                Assert.AreEqual(BlogId, result.Blog.BlogId);
                Assert.AreEqual(CreatorId, result.Blog.CreatorId);
                Assert.AreEqual(HeaderFileId, result.Blog.HeaderImageFileId);
                Assert.AreEqual(CreationDate, result.Blog.CreationDate);
                Assert.AreEqual(Description, result.Blog.Description.Value);
                Assert.AreEqual(ExternalVideoUrl, result.Blog.Video.Value);
                Assert.AreEqual(Introduction, result.Blog.Introduction.Value);
                Assert.AreEqual(Name, result.Blog.BlogName.Value);

                Assert.IsNotNull(result);
                Assert.AreEqual(3, result.Channels.Count);

                foreach (var channel in result.Channels)
                {
                    Assert.AreEqual(IsVisibleToNonSubscribers, channel.IsVisibleToNonSubscribers);
                    Assert.AreEqual(Name, channel.Name);
                    Assert.AreEqual(Price, channel.Price);
                }

                Assert.AreEqual(3, result.Blog.Queues.Count);

                foreach (var collection in result.Blog.Queues)
                {
                    Assert.AreEqual(Name, collection.Name);
                }

                var queue1 = result.Blog.Queues.Single(v => v.QueueId.Equals(QueueId1));
                var queue2 = result.Blog.Queues.Single(v => v.QueueId.Equals(QueueId2));
                var queue3 = result.Blog.Queues.Single(v => v.QueueId.Equals(QueueId3));

                Assert.AreEqual(1, queue1.WeeklyReleaseSchedule.Count);
                Assert.AreEqual(2, queue2.WeeklyReleaseSchedule.Count);
                Assert.AreEqual(3, queue3.WeeklyReleaseSchedule.Count);

                return(ExpectedSideEffects.None);
            });
        }
        public async Task WhenGettingANonExistantBlog_ItShouldReturnNull()
        {
            await this.DatabaseTestAsync(async testDatabase =>
            {
                this.target = new GetBlogChannelsAndQueuesDbStatement(testDatabase);

                await this.CreateDataAsync(testDatabase);
                await testDatabase.TakeSnapshotAsync();

                var result = await this.target.ExecuteAsync(new UserId(Guid.NewGuid()));

                Assert.IsNull(result);

                return(ExpectedSideEffects.None);
            });
        }
        public async Task WhenGettingBlog_ItShouldBeIdempotent()
        {
            await this.DatabaseTestAsync(async testDatabase =>
            {
                this.target = new GetBlogChannelsAndQueuesDbStatement(testDatabase);

                await this.CreateDataAsync(testDatabase);

                await this.target.ExecuteAsync(CreatorId);
                await testDatabase.TakeSnapshotAsync();

                await this.target.ExecuteAsync(CreatorId);

                return(ExpectedSideEffects.None);
            });
        }
 public void TestInitialize()
 {
     this.target = new GetBlogChannelsAndQueuesDbStatement(new Mock <IFifthweekDbConnectionFactory>(MockBehavior.Strict).Object);
 }