public void New_name_returns_shorter_name_for_file_without_extension()
        {
            // Arrange
            var validator = new PackageValidator();
            // file name with 200 chars
            var longEntry =
                "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua, At vero eos et accusam et justo duo doloresi";
            var packageItems = new List <TempValidationObject>
            {
                new TempValidationObject
                {
                    // Fullname sind 205
                    Path          = @"Test",
                    Name          = longEntry,
                    FullName      = $@"Test\{longEntry}",
                    HierachyLevel = 2,
                    IdPath        = @"id1",
                    RepositoryId  = "id2",
                    Type          = TempValidationObjectType.File
                }
            };

            // Act
            var result = validator.GetNewShorterNameForLongestElement(packageItems);

            // Assert
            result.Key.Should().Be("id2");
            // Ester Eintrag um 5 gekürzt
            result.Value.Should().Be(longEntry.Substring(0, longEntry.Length - 5));
            // Make sure not dot in filename
            result.Value.Should().NotContain(".");
        }
        public void New_name_returns_shorter_name_for_file()
        {
            // Arrange
            var validator = new PackageValidator();
            // file name with 200 chars + 4 chars for extension
            var longEntry =
                "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores.pdf";
            var packageItems = new List <TempValidationObject>
            {
                new TempValidationObject
                {
                    // Fullname sind 208
                    Path          = @"Test",
                    Name          = longEntry,
                    FullName      = $@"Test\{longEntry}",
                    HierachyLevel = 2,
                    IdPath        = @"id1",
                    RepositoryId  = "id2",
                    Type          = TempValidationObjectType.File
                }
            };

            // Act
            var result = validator.GetNewShorterNameForLongestElement(packageItems);

            // Assert
            result.Key.Should().Be("id2");
            // Ester Eintrag um 8 + 4 Zeichen gekürzt
            result.Value.Should().Be(longEntry.Substring(0, longEntry.Length - (8 + 4)) + ".pdf");
            // aber extension immer noch vorhanden
            result.Value.Should().EndWith(".pdf");
        }
        public void New_name_returns_shorter_name_for_folder_with_more_than_average_overflow()
        {
            // Arrange
            var validator = new PackageValidator();
            // 40 Zeichen
            var longEntry =
                "Lorem ipsum dolor sit amet, consetetur s";
            var packageItems = new List <TempValidationObject>
            {
                new TempValidationObject
                {
                    // Fullname sind 331
                    Path          = $@"{longEntry}1\{longEntry}2\{longEntry}3\{longEntry}4",
                    Name          = $"{longEntry}5",
                    FullName      = $@"{longEntry}1\{longEntry}2\{longEntry}3\{longEntry}4\{longEntry}5",
                    HierachyLevel = 5, // gives an average lenth of 40 allowed chars per level
                    IdPath        = @"id1\id2\id3\id4",
                    RepositoryId  = "id5",
                    Type          = TempValidationObjectType.Folder
                }
            };

            // Act
            var result = validator.GetNewShorterNameForLongestElement(packageItems);

            // Assert
            result.Key.Should().Be("id1"); // The first found entry
            // we just cut off one char from the longest entry, as we don't want to cut off
            // too much chars from one entry, if the distribution of length is similar
            result.Value.Should().Be(longEntry.Substring(0, longEntry.Length));
        }
        public void New_name_returns_shorter_name_for_folder_on_second_level()
        {
            // Arrange
            var validator = new PackageValidator();
            // 300 Zeichen
            var longEntry =
                "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lore";
            var packageItems = new List <TempValidationObject>
            {
                new TempValidationObject
                {
                    // Fullname sind 331
                    Path          = $@"Test1\{longEntry}\Test2\Test3",
                    Name          = "My Directory",
                    FullName      = $@"Test1\{longEntry}\Test2\Test3\My Directory",
                    HierachyLevel = 5, // gives an average lenth of 40 allowed chars per level
                    IdPath        = @"id1\id2\id3\id4",
                    RepositoryId  = "id5",
                    Type          = TempValidationObjectType.Folder
                }
            };

            // Act
            var result = validator.GetNewShorterNameForLongestElement(packageItems);

            // Assert
            result.Key.Should().Be("id2");
            // zweiter Eintrag um 131 Zeichen gekürzt
            result.Value.Should().Be(longEntry.Substring(0, longEntry.Length - 131));
        }
        public void New_name_returns_shorter_name_for_folder()
        {
            // Arrange
            var validator = new PackageValidator();
            var longEntry =
                "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores";
            var packageItems = new List <TempValidationObject>
            {
                new TempValidationObject
                {
                    // Erster Eintrag hat 200 Zeichen
                    // Fullname sind 217
                    Path          = $@"{longEntry}\Test",
                    Name          = "My Directory",
                    FullName      = $@"{longEntry}\Test\My Directory",
                    HierachyLevel = 3,
                    IdPath        = @"id1\id2",
                    RepositoryId  = "id3",
                    Type          = TempValidationObjectType.Folder
                }
            };

            // Act
            var result = validator.GetNewShorterNameForLongestElement(packageItems);

            // Assert
            result.Key.Should().Be("id1");
            // Ester Eintrag um 17 Zeichen gekürzt (und getrimmt)
            result.Value.Should().Be(longEntry.Substring(0, longEntry.Length - 17).Trim());
        }
        public void New_name_returns_empty_value_if_no_element_too_short()
        {
            // Arrange
            var validator    = new PackageValidator();
            var packageItems = new List <TempValidationObject>
            {
                new TempValidationObject
                {
                    Path          = @"Test\Test",
                    Name          = "My Directory",
                    FullName      = @"Test\Test\My Directory",
                    HierachyLevel = 3,
                    IdPath        = @"id1\id2",
                    Type          = TempValidationObjectType.Folder
                }
            };

            // Act
            var result = validator.GetNewShorterNameForLongestElement(packageItems);

            // Assert
            result.Key.Should().BeNullOrEmpty();
        }