public void Invalid_chars_in_path_are_replaced_with_underscore()
        {
            // Arrange
            var package   = CreateTestData();
            var validator = new PackageValidator();

            // Act
            validator.CreateValidNames(package);

            // Assert
            package.Folders.First(f => f.Id == "Dir00000001").PhysicalName.Should().Be("Das ist ein Ordner_name mit _ ungültigen _ Zeichen _");
        }
        public void Invalid_chars_in_file_are_replaced_with_underscore()
        {
            // Arrange
            var package   = CreateTestData();
            var validator = new PackageValidator();

            // Act
            validator.CreateValidNames(package);

            // Assert
            package.Files.First(f => f.Id == "F00000001").PhysicalName.Should().Be("Und _ ein Datei_Name mit _ _ Sonderzeichen.pdf");
        }
        public void Invalid_chars_in_folder_with_long_name_are_replaced_with_underscore()
        {
            // Arrange
            var package   = CreateTestData();
            var validator = new PackageValidator();

            // Act
            validator.CreateValidNames(package);

            // Assert
            package.Folders.First(f => f.Id == "Dir00000001").Folders.First(f => f.Id == "Dir00000002").PhysicalName.Should().Be(
                "Das ist ein Ordner_name mit _ ungültigen _ Zeichen _ und der dann noch überaus lang ist und viele Zeichen enthält bis er dann irgend wann");
        }
        public void Invalid_chars_in_file_with_long_name_are_replaced_with_underscore()
        {
            // Arrange
            var package   = CreateTestData();
            var validator = new PackageValidator();

            // Act
            validator.CreateValidNames(package);

            // Assert
            package.Files.First(f => f.Id == "F00000002").PhysicalName.Should().Be(
                "Und _ ein Datei_Name mit _ _ Sonderzeichen und deren Name dann noch überaus lang ist und viele Zeichen enthält bis er dann irgend wann einfach zu lang ist.pdf");
        }
        public void Make_sure_we_have_too_long_path_names_correct()
        {
            // Arrange
            var validator = new PackageValidator();
            var package   = CreateTestData();

            validator.CreateValidNames(package);

            // Act
            var list = validator.ConvertToRepositoryObject(package);

            // Assert
            (list.Max(l => l.FullName.Length) > validator.MaxPathLength).Should().BeTrue();
        }
        public void Make_sure_object_count_of_temp_object_is_correct()
        {
            // Arrange
            var validator = new PackageValidator();
            var package   = CreateTestData();

            validator.CreateValidNames(package);

            // Act
            var list = validator.ConvertToRepositoryObject(package);

            // Assert
            var numFolders = 2 + 2 * 2 + 4 * 2 + 8 * 2 + 16 * 2;
            var numFiles   = 2 + 2 * 2 + 4 * 2 + 8 * 2 + 16 * 2 + 32 * 2;

            list.Count.Should().Be(numFolders + numFiles);
            list.Count(f => f.Type == TempValidationObjectType.File).Should().Be(numFiles);
            list.Count(f => f.Type == TempValidationObjectType.Folder).Should().Be(numFolders);
            list.Max(l => l.HierachyLevel).Should().Be(MaxLevel + 1); // 5 Folder levels + 1 File Level
        }