public void PolicyNotEnabled()
        {
            Mock <IInternalPackage> mock = new Mock <IInternalPackage>();

            mock.SetupProperty(fc => fc.Title, "Test Package");
            mock.SetupProperty(fc => fc.Id, 1);
            mock.SetupProperty(fc => fc.FeedId, 1);
            mock.SetupProperty(fc => fc.PackageId, "TestPackage");
            mock.Setup(fc => fc.GetSemanticVersion()).Returns(SemanticVersion.Parse("1.0.0"));
            mock.SetupProperty(fc => fc.Version, "1.0.0");

            Mock <IInternalPackage> mock2 = new Mock <IInternalPackage>();

            mock2.SetupProperty(fc => fc.Title, "Test Package");
            mock2.SetupProperty(fc => fc.Id, 1);
            mock2.SetupProperty(fc => fc.FeedId, 1);
            mock2.SetupProperty(fc => fc.PackageId, "TestPackage");
            mock2.Setup(fc => fc.GetSemanticVersion()).Returns(SemanticVersion.Parse("1.0.1"));
            mock2.SetupProperty(fc => fc.Version, "1.0.1");

            SetupMockObjects(1, 1, new List <Mock <IInternalPackage> > {
                mock, mock2
            }, false);

            TestableRunPackageRetentionPoliciesTask task = new TestableRunPackageRetentionPoliciesTask(Store.Object, PackageRepoFactory.Object);

            task.Execute();

            PackageRepoFactory.Verify(fc => fc.Create(It.IsAny <Int32>()), Times.Never);
            PackageRepo.Verify(pr => pr.RemovePackage(It.IsAny <IInternalPackage>()), Times.Never);
        }
        public void NoPackages()
        {
            SetupMockObjects(1, 1, new List <Mock <IInternalPackage> >(), true);

            TestableRunPackageRetentionPoliciesTask task = new TestableRunPackageRetentionPoliciesTask(Store.Object, PackageRepoFactory.Object);

            task.Execute();

            PackageRepoFactory.Verify(fc => fc.Create(It.IsAny <Int32>()), Times.Never);
            PackageRepo.Verify(pr => pr.RemovePackage(It.IsAny <IInternalPackage>()), Times.Never);
        }
        public void MultiplePrereleasePackagesDeleted()
        {
            Mock <IInternalPackage> mock = new Mock <IInternalPackage>();

            mock.SetupProperty(fc => fc.Title, "Test Package");
            mock.SetupProperty(fc => fc.Id, 1);
            mock.SetupProperty(fc => fc.FeedId, 1);
            mock.SetupProperty(fc => fc.PackageId, "TestPackage");
            mock.Setup(fc => fc.GetSemanticVersion()).Returns(SemanticVersion.Parse("1.0.0-alpha"));
            mock.SetupProperty(fc => fc.Version, "1.0.0-alpha");

            Mock <IInternalPackage> mock2 = new Mock <IInternalPackage>();

            mock2.SetupProperty(fc => fc.Title, "Test Package");
            mock2.SetupProperty(fc => fc.Id, 1);
            mock2.SetupProperty(fc => fc.FeedId, 1);
            mock2.SetupProperty(fc => fc.PackageId, "TestPackage");
            mock2.Setup(fc => fc.GetSemanticVersion()).Returns(SemanticVersion.Parse("1.0.1-alpha"));
            mock2.SetupProperty(fc => fc.Version, "1.0.1-alpha");

            Mock <IInternalPackage> mock3 = new Mock <IInternalPackage>();

            mock3.SetupProperty(fc => fc.Title, "Test Package");
            mock3.SetupProperty(fc => fc.Id, 1);
            mock3.SetupProperty(fc => fc.FeedId, 1);
            mock3.SetupProperty(fc => fc.PackageId, "TestPackage");
            mock3.Setup(fc => fc.GetSemanticVersion()).Returns(SemanticVersion.Parse("1.0.2-alpha"));
            mock3.SetupProperty(fc => fc.Version, "1.0.2-alpha");

            SetupMockObjects(1, 1, new List <Mock <IInternalPackage> > {
                mock, mock2, mock3
            }, true);

            TestableRunPackageRetentionPoliciesTask task = new TestableRunPackageRetentionPoliciesTask(Store.Object, PackageRepoFactory.Object);

            task.Execute();

            PackageRepoFactory.Verify(fc => fc.Create(It.IsAny <Int32>()), Times.Once);
            PackageRepo.Verify(pr => pr.RemovePackage(mock.Object), Times.Once);
            PackageRepo.Verify(pr => pr.RemovePackage(mock2.Object), Times.Once);
            PackageRepo.Verify(pr => pr.RemovePackage(mock3.Object), Times.Never);
        }