public async Task Should_import_data()
        {
            var data1 = CreateData(1);
            var data2 = CreateData(2);

            var domainObject = A.Fake <ContentDomainObject>();

            A.CallTo(() => serviceProvider.GetService(typeof(ContentDomainObject)))
            .Returns(domainObject);

            var command = new CreateContents
            {
                Datas = new List <NamedContentData>
                {
                    data1,
                    data2
                }
            };

            var context = new CommandContext(command, commandBus);

            await sut.HandleAsync(context);

            var result = context.Result <ImportResult>();

            Assert.Equal(2, result.Count);
            Assert.Equal(2, result.Count(x => x.ContentId.HasValue && x.Exception == null));

            A.CallTo(() => domainObject.Setup(A <Guid> .Ignored))
            .MustHaveHappenedTwiceExactly();

            A.CallTo(() => domainObject.ExecuteAsync(A <CreateContent> .Ignored))
            .MustHaveHappenedTwiceExactly();
        }
        public async Task Should_skip_exception()
        {
            var data1 = CreateData(1);
            var data2 = CreateData(2);

            var domainObject = A.Fake <ContentDomainObject>();

            var exception = new InvalidOperationException();

            A.CallTo(() => serviceProvider.GetService(typeof(ContentDomainObject)))
            .Returns(domainObject);

            A.CallTo(() => domainObject.ExecuteAsync(A <CreateContent> .That.Matches(x => x.Data == data1)))
            .Throws(exception);

            var command = new CreateContents
            {
                Datas = new List <NamedContentData>
                {
                    data1,
                    data2
                }
            };

            var context = new CommandContext(command, commandBus);

            await sut.HandleAsync(context);

            var result = context.Result <ImportResult>();

            Assert.Equal(2, result.Count);
            Assert.Equal(1, result.Count(x => x.ContentId.HasValue && x.Exception == null));
            Assert.Equal(1, result.Count(x => !x.ContentId.HasValue && x.Exception == exception));
        }
        public async Task Should_do_nothing_if_datas_is_null()
        {
            var command = new CreateContents();

            var context = new CommandContext(command, commandBus);

            await sut.HandleAsync(context);

            Assert.True(context.PlainResult is ImportResult);

            A.CallTo(() => serviceProvider.GetService(A <Type> .Ignored))
            .MustNotHaveHappened();
        }