public void VersionControlledProject_WithGitReference_ShouldBeViablePlan()
        {
            gitReference = "main";
            projectResource.IsVersionControlled = true;
            var deploymentStepResource = ResourceBuilderHelpers.GetStep();

            deploymentStepResource.Actions.Add(ResourceBuilderHelpers.GetAction().WithChannel(channelResource.Id));
            deploymentProcessResource.Steps.Add(deploymentStepResource);

            var plan = ExecuteBuild();

            plan.IsViableReleasePlan().Should().BeTrue();
        }
        public void SingleEnabledScriptStepScopedToMatchingChannel_ShouldBeViablePlan()
        {
            // arrange
            var deploymentStepResource = ResourceBuilderHelpers.GetStep();

            deploymentStepResource.Actions.Add(ResourceBuilderHelpers.GetAction().WithChannel(channelResource.Id));
            deploymentProcessResource.Steps.Add(deploymentStepResource);

            // act
            var plan = ExecuteBuild();

            // assert
            plan.IsViableReleasePlan().Should().BeTrue();
        }
        public void SingleEnabledScriptStepScopedToDifferentChannel_ShouldNotBeAViablePlan()
        {
            // arrange
            var deploymentStepResource = ResourceBuilderHelpers.GetStep();

            deploymentStepResource.Actions.Add(ResourceBuilderHelpers.GetAction().WithChannel(TestHelpers.GetId("differentchannel")));
            deploymentProcessResource.Steps.Add(deploymentStepResource);

            // act
            var plan = ExecuteBuild();

            // assert
            plan.IsViableReleasePlan().Should().BeFalse();
        }
        public void DisabledScriptSteps_ShouldNotBeAViablePlan()
        {
            // arrange
            var deploymentStepResource = ResourceBuilderHelpers.GetStep();

            deploymentStepResource.Actions.Add(ResourceBuilderHelpers.GetAction().Disabled().WithChannel(channelResource.Id));
            deploymentProcessResource.Steps.Add(deploymentStepResource);

            // act
            var plan = ExecuteBuild();

            // assert
            plan.IsViableReleasePlan().Should().BeFalse();
        }
        public void SinglePackageStep_ShouldBeViablePlan(string version)
        {
            // arrange
            var deploymentStepResource = ResourceBuilderHelpers.GetStep();

            deploymentStepResource.Actions.Add(ResourceBuilderHelpers.GetAction().WithChannel(channelResource.Id).WithPackage());
            deploymentProcessResource.Steps.Add(deploymentStepResource);

            releaseTemplateResource.Packages.Add(GetReleaseTemplatePackage().WithPackage().WithVersion(version, versionResolver));
            channelVersionRuleTestResult.IsSatisfied();

            // act
            var plan = ExecuteBuild();

            // assert
            plan.IsViableReleasePlan().Should().BeTrue();
        }
        public void ChannelVersionRuleForNamedPackageReference_ShouldBeUsedToFilterPackages()
        {
            // arrange
            var deploymentStepResource = ResourceBuilderHelpers.GetStep();
            var action = ResourceBuilderHelpers.GetAction();

            action.Packages.Add(new PackageReference("Acme", "Acme", BuiltInFeedId, PackageAcquisitionLocation.Server));
            deploymentStepResource.Actions.Add(action);
            deploymentProcessResource.Steps.Add(deploymentStepResource);
            channelResource.AddRule(new ChannelVersionRuleResource
            {
                ActionPackages = new List <DeploymentActionPackageResource>
                {
                    new DeploymentActionPackageResource(action.Name, "Acme")
                },
                VersionRange = "(,1.0)"
            });

            packages.Add(new PackageResource {
                Version = "1.0.1"
            });

            releaseTemplateResource.Packages.Add(new ReleaseTemplatePackage {
                ActionName = action.Name, PackageReferenceName = "Acme", IsResolvable = true, FeedId = BuiltInFeedId
            });
            channelVersionRuleTestResult.IsSatisfied();

            repository.Client
            .Get <List <PackageResource> >(Arg.Any <string>(), Arg.Is <IDictionary <string, object> >(d => d.ContainsKey("versionRange") && (string)d["versionRange"] == "(,1.0)"))
            .Returns(new List <PackageResource>());

            // act
            var plan = ExecuteBuild();

            // assert
            plan.IsViableReleasePlan().Should().BeFalse();
        }