public void Apply_Feature_Branch_Changes_Version_Resets_On_Merge()
        {
            using (var fixture = new SimpleVersionRepositoryFixture())
            {
                // Arrange
                var config = fixture.GetConfig();

                fixture.MakeACommit();
                fixture.MakeACommit();
                fixture.MakeACommit();
                fixture.MakeACommit();

                fixture.BranchTo("feature/other");
                fixture.MakeACommit();

                config.Version = "0.1.1";
                fixture.SetConfig(config);

                fixture.MakeACommit();
                fixture.MakeACommit();

                fixture.Checkout("master");
                fixture.MergeNoFF("feature/other");

                var context = new VersionContext(fixture.Repository);

                // Act
                _sut.Apply(context);

                // Assert
                context.Result.Height.Should().Be(1);
            }
        }
        public void Apply_Feature_Branch_No_Change_Increments_Merge_Once()
        {
            using (var fixture = new SimpleVersionRepositoryFixture())
            {
                // Arrange
                fixture.MakeACommit();
                fixture.MakeACommit();
                fixture.MakeACommit();
                fixture.MakeACommit();

                fixture.BranchTo("feature/other");
                fixture.MakeACommit();
                fixture.MakeACommit();
                fixture.MakeACommit();

                fixture.Checkout("master");
                fixture.MergeNoFF("feature/other");

                var context = new VersionContext(fixture.Repository);

                // Act
                _sut.Apply(context);

                context.Result.Height.Should().Be(6);
            }
        }
        public void Apply_BranchOverride_AppliesOverride()
        {
            // Arrange
            var expectedLabel = new List <string> {
                "{branchName}"
            };
            var expectedMeta = new List <string> {
                "meta"
            };

            var config = new Configuration
            {
                Version  = "0.1.0",
                Branches =
                {
                    Overrides        =
                    {
                        new BranchConfiguration
                        {
                            Match    = "feature/other",
                            Label    = expectedLabel,
                            Metadata = expectedMeta
                        }
                    }
                }
            };

            using (var fixture = new SimpleVersionRepositoryFixture(config))
            {
                fixture.MakeACommit();
                fixture.MakeACommit();
                fixture.MakeACommit();
                fixture.MakeACommit();

                fixture.BranchTo("feature/other");
                fixture.MakeACommit();
                fixture.MakeACommit();
                fixture.MakeACommit();

                var context = new VersionContext(fixture.Repository);

                // Act
                _sut.Apply(context);

                context.Configuration.Label.Should().BeEquivalentTo(expectedLabel, options => options.WithStrictOrdering());
                context.Configuration.Metadata.Should().BeEquivalentTo(expectedMeta, options => options.WithStrictOrdering());
            }
        }
        public void Apply_Feature_Branch_Sets_BranchName()
        {
            using (var fixture = new SimpleVersionRepositoryFixture())
            {
                // Arrange
                fixture.MakeACommit();
                fixture.MakeACommit();
                fixture.MakeACommit();
                fixture.MakeACommit();

                fixture.BranchTo("feature/other");
                fixture.MakeACommit();
                fixture.MakeACommit();
                fixture.MakeACommit();

                var context = new VersionContext(fixture.Repository);

                // Act
                _sut.Apply(context);

                context.Result.BranchName.Should().Be("feature/other");
                context.Result.CanonicalBranchName.Should().Be("refs/heads/feature/other");
            }
        }