public void NoOrphanFlag_DoesNotIncurRequest()
        {
            var args = ArgumentsMockData.BaseBuilder();

            // OrphanOnly defaults to false
            cut.Prepare(args.Build());
            var result = cut.Matches(null);

            Assert.IsTrue(result);
            clientMock.VerifyNoOtherCalls();
        }
        public void InversionFilterDelegatesPrepareCall()
        {
            var args = ArgumentsMockData.BaseBuilder().Build();

            var wrappedFilter = new Mock <IReleasePredicate>();

            wrappedFilter.Setup(f => f.Prepare(args)).Verifiable();

            var filter = new ConditionalInversion(wrappedFilter.Object);

            filter.Prepare(args);

            Mock.Verify(wrappedFilter);
        }
        public void ConditionalInversionFilter(bool invert, bool wrappedResult, bool expected)
        {
            var builder = ArgumentsMockData.BaseBuilder();

            if (invert)
            {
                builder.Inverted();
            }

            var filter = new ConditionalInversion(new ConstantValueFilter(wrappedResult));

            filter.Prepare(builder.Build());
            Assert.AreEqual(expected, filter.Matches(null));
        }
        public void PrepareWithOrphanFlag_HitsApi()
        {
            var args = ArgumentsMockData.BaseBuilder();

            args.Orphans();

            var repositoryMock = new Mock <IRepositoriesClient>();

            clientMock.SetupGet(client => client.Repository).Returns(repositoryMock.Object);
            repositoryMock.Setup(repository => repository.GetAllTags(ArgumentsMockData.Owner, ArgumentsMockData.Project))
            .Returns(Task.FromResult <IReadOnlyList <RepositoryTag> >(new List <RepositoryTag>()))
            .Verifiable();
            cut.Prepare(args.Build());

            Mock.VerifyAll(clientMock, repositoryMock);
            clientMock.VerifyNoOtherCalls();
            repositoryMock.VerifyNoOtherCalls();
        }
        public void BasicNaryFiltersDelegatePrepareCall(Type filterType)
        {
            var args = ArgumentsMockData.BaseBuilder().Build();

            var wrappedFilter = new Mock <IReleasePredicate>();
            var anotherFilter = new Mock <IReleasePredicate>();

            wrappedFilter.Setup(f => f.Prepare(args)).Verifiable();
            anotherFilter.Setup(f => f.Prepare(args)).Verifiable();

            IEnumerable <IReleasePredicate> cast = new [] { wrappedFilter.Object, anotherFilter.Object }.ToList();

            var filter = (IReleasePredicate)Activator.CreateInstance(filterType, cast);

            filter.Prepare(args);

            Mock.VerifyAll(wrappedFilter, anotherFilter);
        }