public async Task CanCallOnChangeSetItemProcessingAsync()
 {
     var testClass         = new ConventionBasedChangeSetItemFilter(typeof(EmptyApi));
     var context           = new SubmitContext(new EmptyApi(serviceProvider), new ChangeSet());
     var cancellationToken = CancellationToken.None;
     await testClass.OnChangeSetItemProcessingAsync(context, dataModificationItem, cancellationToken);
 }
 public async Task CannotCallOnChangeSetItemProcessedAsyncWithNullItem()
 {
     var         testClass = new ConventionBasedChangeSetItemFilter(typeof(EmptyApi));
     Func <Task> act       = () => testClass.OnChangeSetItemProcessedAsync(
         new SubmitContext(new EmptyApi(serviceProvider), new ChangeSet()),
         default(ChangeSetItem),
         CancellationToken.None);
     await act.Should().ThrowAsync <ArgumentNullException>();
 }
 public async Task CannotCallOnChangeSetItemProcessedAsyncWithNullContext()
 {
     var         testClass = new ConventionBasedChangeSetItemFilter(typeof(EmptyApi));
     Func <Task> act       = () => testClass.OnChangeSetItemProcessedAsync(
         default(SubmitContext),
         dataModificationItem,
         CancellationToken.None);
     await act.Should().ThrowAsync <ArgumentNullException>();
 }
        public async Task OnChangeSetItemProcessingAsyncInvokesConventionMethod()
        {
            var api               = new InsertApi(serviceProvider);
            var context           = new SubmitContext(api, new ChangeSet());
            var cancellationToken = CancellationToken.None;
            var testClass         = new ConventionBasedChangeSetItemFilter(typeof(InsertApi));
            await testClass.OnChangeSetItemProcessingAsync(context, dataModificationItem, cancellationToken);

            api.InvocationCount.Should().Be(1);
        }
        public async Task OnChangeSetItemProcessingWithWrongNumberOfArguments()
        {
            testTraceListener.Clear();
            var api               = new IncorrectArgumentsApi(serviceProvider);
            var testClass         = new ConventionBasedChangeSetItemFilter(typeof(IncorrectArgumentsApi));
            var context           = new SubmitContext(api, new ChangeSet());
            var cancellationToken = CancellationToken.None;
            await testClass.OnChangeSetItemProcessingAsync(context, dataModificationItem, cancellationToken);

            testTraceListener.Messages.Should().Contain("incorrect number of arguments");
            api.InvocationCount.Should().Be(0);
        }
        public async Task OnChangeSetItemProcessingWithWrongApiType()
        {
            testTraceListener.Clear();
            var api               = new PrivateMethodApi(serviceProvider);
            var testClass         = new ConventionBasedChangeSetItemFilter(typeof(InsertApi));
            var context           = new SubmitContext(api, new ChangeSet());
            var cancellationToken = CancellationToken.None;
            await testClass.OnChangeSetItemProcessingAsync(context, dataModificationItem, cancellationToken);

            testTraceListener.Messages.Should().Contain("is of the incorrect type");
            api.InvocationCount.Should().Be(0);
        }
        public async Task OnChangeSetItemProcessingWithWrongMethod()
        {
            testTraceListener.Clear();
            var api               = new WrongMethodApi(serviceProvider);
            var testClass         = new ConventionBasedChangeSetItemFilter(typeof(WrongMethodApi));
            var context           = new SubmitContext(api, new ChangeSet());
            var cancellationToken = CancellationToken.None;
            await testClass.OnChangeSetItemProcessingAsync(context, dataModificationItem, cancellationToken);

            testTraceListener.Messages.Should().Contain("Restier Filter expected'OnInsertingObject' but found 'OnInsertingTest'");
            api.InvocationCount.Should().Be(0);
        }
        public async Task OnChangeSetItemProcessingAsyncWithPrivateMethod()
        {
            testTraceListener.Clear();
            var api               = new PrivateMethodApi(serviceProvider);
            var testClass         = new ConventionBasedChangeSetItemFilter(typeof(PrivateMethodApi));
            var context           = new SubmitContext(api, new ChangeSet());
            var cancellationToken = CancellationToken.None;
            await testClass.OnChangeSetItemProcessingAsync(context, dataModificationItem, cancellationToken);

            testTraceListener.Messages.Should().Contain("inaccessible due to its protection level");
            api.InvocationCount.Should().Be(0);
        }
        public void CanConstruct()
        {
            var instance = new ConventionBasedChangeSetItemFilter(typeof(EmptyApi));

            instance.Should().NotBeNull();
        }