private void RepairVersion <T> (
            JiraProjectVersion toBeRepairedVersion,
            IEnumerable <JiraProjectVersion> versions,
            Func <string, T> parseVersion)
            where T : IComparable <T>
        {
            var parsedVersion = parseVersion(toBeRepairedVersion.name);

            var versionList = versions.Select(
                x => new JiraProjectVersionComparableAdapter <T>()
            {
                JiraProjectVersion = x,
                ComparableVersion  = parseVersion(x.name)
            }).ToList();

            var repairedVersionAsAdapter =
                new JiraProjectVersionComparableAdapter <T>()
            {
                JiraProjectVersion = toBeRepairedVersion,
                ComparableVersion  = parsedVersion
            };

            var jiraMovePositioner = new JiraVersionPositionFinder <T> (versionList, repairedVersionAsAdapter);

            RepairVersionPosition(jiraMovePositioner);
        }
        public void JiraVersionMovePositioner_HasToBeMoved_WithInvalidVersionInList_ReturnsTrue()
        {
            var jiraProjectVersions = CreateSemanticJiraProjectVersions(null, "2.1.3");
            var createdVersion      = CreateSemanticVersion("2.1.0");

            var jiraVersionMovePositioner = new JiraVersionPositionFinder <SemanticVersion> (jiraProjectVersions, createdVersion);

            Assert.That(jiraVersionMovePositioner.HasToBeMoved(), Is.True);
        }
        public void JiraVersionMovePositioner_HasToBeMoved_WhenLowerVersionIsBefore_ReturnsFalse()
        {
            var jiraProjectVersions = CreateSemanticJiraProjectVersions("1.0.0");
            var createdVersion      = CreateSemanticVersion("1.0.1");

            var jiraVersionMovePositioner = new JiraVersionPositionFinder <SemanticVersion> (jiraProjectVersions, createdVersion);

            Assert.That(jiraVersionMovePositioner.HasToBeMoved(), Is.False);
        }
        public void JiraVersionMovePositioner_HasToBeMoved_OnEmptyList_ReturnsFalse()
        {
            var jiraProjectVersions = new List <JiraProjectVersionComparableAdapter <SemanticVersion> >();
            var createdVersion      = CreateSemanticVersion("1.0.0");

            var jiraVersionMovePositioner = new JiraVersionPositionFinder <SemanticVersion> (jiraProjectVersions, createdVersion);

            Assert.That(jiraVersionMovePositioner.HasToBeMoved(), Is.False);
        }
        public void JiraVersionMovePositioner_HasToBeMoved_GivenListNotInOrder_ReturnsTrue()
        {
            var jiraProjectVersions = CreateSemanticJiraProjectVersions("2.0.1", "1.9.3");

            var createdVersion = CreateSemanticVersion("2.0.2");

            var jiraVersionMovePositioner = new JiraVersionPositionFinder <SemanticVersion> (jiraProjectVersions, createdVersion);

            Assert.That(jiraVersionMovePositioner.HasToBeMoved(), Is.True);
        }
        public void JiraVersionMovePositioner_HasToBeMoved_WithPrereleaseVersion_ReturnsTrue()
        {
            var jiraProjectVersions = CreateSemanticJiraProjectVersions("2.1.3", "2.2.0");

            var createdVersion = CreateSemanticVersion("2.2.0-alpha.5");

            var jiraVersionMovePositioner = new JiraVersionPositionFinder <SemanticVersion> (jiraProjectVersions, createdVersion);

            Assert.That(jiraVersionMovePositioner.HasToBeMoved(), Is.True);
        }
        public void JiraVersionMovePositioner_GetVersionBeforeCreatedVersion_WithOnlyMinorDifference_ReturnsCorrectVersion()
        {
            var jiraProjectVersions = CreateSemanticJiraProjectVersions("1.8.1", "1.8.3");
            var createdVersion      = CreateSemanticVersion("1.8.2");

            var jiraVersionMovePositioner = new JiraVersionPositionFinder <SemanticVersion> (jiraProjectVersions, createdVersion);
            var versionCreatedBefore      = jiraVersionMovePositioner.GetVersionBeforeCreatedVersionOrderedList();

            Assert.That(versionCreatedBefore.ComparableVersion.ToString(), Is.EqualTo("1.8.1"));
        }
        public void JiraVersionMovePositioner_GetVersionBeforeCreatedVersion_WithPrereleaseVersion_ReturnsCorrectVersion()
        {
            var jiraProjectVersions = CreateSemanticJiraProjectVersions("2.1.3", "2.2.0");

            var createdVersion = CreateSemanticVersion("2.2.0-alpha.5");

            var jiraVersionMovePositioner = new JiraVersionPositionFinder <SemanticVersion> (jiraProjectVersions, createdVersion);
            var versionBeforeCreated      = jiraVersionMovePositioner.GetVersionBeforeCreatedVersionOrderedList();

            Assert.That(versionBeforeCreated.ComparableVersion.ToString(), Is.EqualTo("2.1.3"));
        }
        public void JiraVersionMovePositioner_GetVersionBeforeCreatedVersion_WouldBeMovedToFirstPosition_ReturnsNull()
        {
            var jiraProjectVersions = CreateSemanticJiraProjectVersions("1.0.1");

            var createdVersion = CreateSemanticVersion("1.0.0");

            var jiraVersionMovePositioner = new JiraVersionPositionFinder <SemanticVersion> (jiraProjectVersions, createdVersion);
            var versionCreatedBefore      = jiraVersionMovePositioner.GetVersionBeforeCreatedVersionOrderedList();

            Assert.That(versionCreatedBefore, Is.Null);
        }