public async Task AddsNewListToDBWithUpdatedNow()
        {
            const string USER    = "******";
            var          UPDATED = new DateTime(2020, 01, 01);

            var(context, nowProvider, randomisedWordProvider, config) = CreateDeps(UPDATED);

            using (context)
            {
                var request = new CreateEmptyListRequest(USER);
                var handler = new CreateEmptyListHandler(context, nowProvider, randomisedWordProvider, config);
                var result  = await handler.Handle(request, CancellationToken.None);

                Assert.AreEqual(UPDATED, context.Lists.First().Updated);
            }
        }
        public async Task ThrowsExceptionWhenLimitReached()
        {
            const string USER = "******";

            var(context, nowProvider, randomiser, _) = CreateDeps();

            var config = CreateConfigWithListLimit(0);

            using (context)
            {
                var request = new CreateEmptyListRequest(USER);
                var handler = new CreateEmptyListHandler(context, nowProvider, randomiser, config);

                await Assert.ThrowsExceptionAsync <RequestFailedException>(() => handler.Handle(request, CancellationToken.None));
            }
        }
        public async Task ReturnsIdForList()
        {
            const string USER    = "******";
            const string LIST_ID = "list id";

            var(context, nowProvider, _, config) = CreateDeps();

            var randomiserMock = new Mock <IRandomisedWordProvider>();

            randomiserMock.Setup(m => m.CreateRandomId()).Returns(LIST_ID);

            using (context)
            {
                var request = new CreateEmptyListRequest(USER);
                var handler = new CreateEmptyListHandler(context, nowProvider, randomiserMock.Object, config);
                var result  = await handler.Handle(request, CancellationToken.None);

                Assert.AreEqual(LIST_ID, result);
            }
        }
        public async Task AddsNewContributorForListAndUser()
        {
            const string USER           = "******";
            const string LIST_ID        = "list id";
            var          idProviderMock = new Mock <IRandomisedWordProvider>();

            idProviderMock
            .Setup(m => m.CreateRandomId())
            .Returns(LIST_ID);

            var(context, nowProvider, _, config) = CreateDeps();

            using (context)
            {
                var request = new CreateEmptyListRequest(USER);
                var handler = new CreateEmptyListHandler(context, nowProvider, idProviderMock.Object, config);
                var result  = await handler.Handle(request, CancellationToken.None);

                Assert.AreEqual(1, context.ListContributors.Count());
                Assert.AreEqual(LIST_ID, context.ListContributors.First().ListId);
                Assert.AreEqual(USER, context.ListContributors.First().UserIdent);
            }
        }