public async Task WhenCalledAsACreatorWithNoBlog_ItShouldReturnUserStateWithoutABlog()
        {
            this.requesterSecurity.SetupFor(Requester);

            this.requesterSecurity.Setup(v => v.IsInRoleAsync(Requester, FifthweekRole.Creator)).ReturnsAsync(true);

            var creatorStatus   = new CreatorStatus(null, true);
            var accountSettings = new GetAccountSettingsResult(new Username("username"), new Email("*****@*****.**"), null, 10, PaymentStatus.Retry1, true, 1m, null, 1);

            this.getUserAccessSignatures.Setup(v => v.HandleAsync(new GetUserAccessSignaturesQuery(Requester, UserId, null, new List <ChannelId> {
                UserSubscriptions.Blogs[0].Channels[0].ChannelId, UserSubscriptions.Blogs[1].Channels[0].ChannelId
            }, UserSubscriptions.FreeAccessChannelIds)))
            .ReturnsAsync(UserAccessSignatures);
            this.getBlogSubscriptions.Setup(v => v.HandleAsync(new GetUserSubscriptionsQuery(Requester, UserId)))
            .ReturnsAsync(UserSubscriptions);
            this.getAccountSettings.Setup(v => v.HandleAsync(new GetAccountSettingsQuery(Requester, UserId, Now)))
            .ReturnsAsync(accountSettings);
            this.getBlogChannelsAndCollections.Setup(v => v.HandleAsync(new GetBlogChannelsAndQueuesQuery(UserId)))
            .ReturnsAsync(null);

            var result = await this.target.HandleAsync(new GetUserStateQuery(Requester, UserId, false, Now));

            Assert.IsNotNull(result);
            Assert.AreEqual(UserAccessSignatures, result.AccessSignatures);
            Assert.AreEqual(UserSubscriptions, result.Subscriptions);
            Assert.AreEqual(accountSettings, result.AccountSettings);
            Assert.IsNull(result.Blog);
        }
        public async Task WhenCalledAsACreator_ItShouldReturnUserStateWithCreatorState()
        {
            this.requesterSecurity.SetupFor(Requester);

            this.requesterSecurity.Setup(v => v.IsInRoleAsync(Requester, FifthweekRole.Creator)).ReturnsAsync(true);

            var creatorStatus              = new CreatorStatus(new BlogId(Guid.NewGuid()), true);
            var accountSettings            = new GetAccountSettingsResult(new Username("username"), new Email("*****@*****.**"), null, 10, PaymentStatus.Retry1, true, 1m, null, 1);
            var blogChannelsAndCollections = new GetBlogChannelsAndQueuesResult(
                new BlogWithFileInformation(new BlogId(Guid.NewGuid()), new BlogName("My Subscription"), new Introduction("Once upon a time there was an intro."), DateTime.UtcNow, null, null, null,
                                            new List <ChannelResult> {
                new ChannelResult(new ChannelId(Guid.NewGuid()), "name", 10, true)
            },
                                            new List <QueueResult> {
                new QueueResult(new QueueId(Guid.NewGuid()), "name", new List <HourOfWeek>())
            }));

            this.getUserAccessSignatures.Setup(v => v.HandleAsync(new GetUserAccessSignaturesQuery(Requester, UserId, new List <ChannelId> {
                blogChannelsAndCollections.Blog.Channels[0].ChannelId
            }, new List <ChannelId> {
                UserSubscriptions.Blogs[0].Channels[0].ChannelId, UserSubscriptions.Blogs[1].Channels[0].ChannelId
            }, UserSubscriptions.FreeAccessChannelIds)))
            .ReturnsAsync(UserAccessSignatures);
            this.getBlogSubscriptions.Setup(v => v.HandleAsync(new GetUserSubscriptionsQuery(Requester, UserId)))
            .ReturnsAsync(UserSubscriptions);
            this.getAccountSettings.Setup(v => v.HandleAsync(new GetAccountSettingsQuery(Requester, UserId, Now)))
            .ReturnsAsync(accountSettings);
            this.getBlogChannelsAndCollections.Setup(v => v.HandleAsync(new GetBlogChannelsAndQueuesQuery(UserId)))
            .ReturnsAsync(blogChannelsAndCollections);

            var result = await this.target.HandleAsync(new GetUserStateQuery(Requester, UserId, false, Now));

            Assert.IsNotNull(result);
            Assert.AreEqual(UserAccessSignatures, result.AccessSignatures);
            Assert.AreEqual(UserSubscriptions, result.Subscriptions);
            Assert.AreEqual(accountSettings, result.AccountSettings);
            Assert.AreEqual(blogChannelsAndCollections.Blog, result.Blog);
        }