예제 #1
0
        public void DirectoryNode_AddMultipleFiles_ToSameDirectory()
        {
            // Arrange
            var root         = new DirectoryNode("/");
            var projectItem1 = new TestRazorProjectItem("/Pages/Shared/_Layout.cshtml");
            var projectItem2 = new TestRazorProjectItem("/Pages/Shared/_Partial.cshtml");

            // Act
            root.AddFile(new FileNode(projectItem1.FilePath, projectItem1));
            root.AddFile(new FileNode(projectItem2.FilePath, projectItem2));

            // Assert
            Assert.Collection(
                root.Directories,
                directory =>
            {
                Assert.Equal("/Pages/", directory.Path);
                Assert.Empty(directory.Files);

                Assert.Collection(
                    directory.Directories,
                    subDirectory =>
                {
                    Assert.Equal("/Pages/Shared/", subDirectory.Path);
                    Assert.Collection(
                        subDirectory.Files,
                        file => Assert.Same(projectItem1, file.ProjectItem),
                        file => Assert.Same(projectItem2, file.ProjectItem));
                });
            });
        }
예제 #2
0
        public void DirectoryNode_GetItem_WhenFileNameIsSameAsDirectoryName()
        {
            // Arrange
            var projectItem1 = new TestRazorProjectItem("/Home/Home.cshtml");
            var projectItem2 = new TestRazorProjectItem("/Home/About.cshtml");
            var root         = new DirectoryNode("/")
            {
                Directories =
                {
                    new DirectoryNode("/Home/")
                    {
                        Files =
                        {
                            new FileNode(projectItem1.FilePath, projectItem1),
                            new FileNode(projectItem2.FilePath, projectItem2),
                        }
                    }
                },
            };

            // Act
            var result = root.GetItem(projectItem1.FilePath);

            // Assert
            Assert.Same(result, projectItem1);
        }
예제 #3
0
        public void DirectoryNode_AddFile_CanAddToNestedDirectory()
        {
            // Arrange
            var root        = new DirectoryNode("/");
            var projectItem = new TestRazorProjectItem("/Pages/Shared/_Layout.cshtml");

            // Act
            root.AddFile(new FileNode("/Pages/Shared/_Layout.cshtml", projectItem));

            // Assert
            Assert.Collection(
                root.Directories,
                directory =>
            {
                Assert.Equal("/Pages/", directory.Path);
                Assert.Empty(directory.Files);

                Assert.Collection(
                    directory.Directories,
                    subDirectory =>
                {
                    Assert.Equal("/Pages/Shared/", subDirectory.Path);
                    Assert.Collection(
                        subDirectory.Files,
                        file => Assert.Same(projectItem, file.ProjectItem));
                });
            });
        }
예제 #4
0
        public void DirectoryNode_GetDirectory_ReturnsNull_IfDirectoryDoesNotExist()
        {
            // Arrange
            var root = new DirectoryNode("/");

            // Act
            var result = root.GetDirectory("/does-not/exist");

            // Assert
            Assert.Null(result);
        }
예제 #5
0
        public void DirectoryNode_GetDirectory_ReturnsRoot()
        {
            // Arrange
            var root = new DirectoryNode("/");

            // Act
            var result = root.GetDirectory("/");

            // Assert
            Assert.Same(root, result);
        }
예제 #6
0
        public void DirectoryNode_GetItem_ReturnsItemAtRoot()
        {
            // Arrange
            var root        = new DirectoryNode("/");
            var projectItem = new TestRazorProjectItem("/_ViewStart.cshtml");

            root.AddFile(new FileNode(projectItem.FilePath, projectItem));

            // Act
            var result = root.GetItem(projectItem.FilePath);

            // Assert
            Assert.Same(result, projectItem);
        }
예제 #7
0
        public void DirectoryNode_AddFile_CanAddToRoot()
        {
            // Arrange
            var root        = new DirectoryNode("/");
            var projectItem = new TestRazorProjectItem("/File.txt");

            // Act
            root.AddFile(new FileNode("/File.txt", projectItem));

            // Assert
            Assert.Empty(root.Directories);
            Assert.Collection(
                root.Files,
                file => Assert.Same(projectItem, file.ProjectItem));
        }
예제 #8
0
        public void DirectoryNode_GetItem_WhenFilePathSharesSameNameAsSiblingDirectory()
        {
            // Arrange
            var root         = new DirectoryNode("/");
            var projectItem1 = new TestRazorProjectItem("/Home.cshtml");
            var projectItem2 = new TestRazorProjectItem("/Home/About.cshtml");

            root.AddFile(new FileNode(projectItem1.FilePath, projectItem1));
            root.AddFile(new FileNode(projectItem2.FilePath, projectItem2));

            // Act
            var result = root.GetItem(projectItem1.FilePath);

            // Assert
            Assert.Same(result, projectItem1);
        }
예제 #9
0
        public void DirectoryNode_AddsFiles_ToSiblingDirectories()
        {
            // Arrange
            var root         = new DirectoryNode("/");
            var projectItem1 = new TestRazorProjectItem("/Pages/Products/Index.cshtml");
            var projectItem2 = new TestRazorProjectItem("/Pages/Accounts/About.cshtml");

            // Act
            root.AddFile(new FileNode(projectItem1.FilePath, projectItem1));
            root.AddFile(new FileNode(projectItem2.FilePath, projectItem2));

            // Assert
            Assert.Collection(
                root.Directories,
                directory =>
            {
                Assert.Equal("/Pages/", directory.Path);
                Assert.Empty(directory.Files);

                Assert.Collection(
                    directory.Directories,
                    subDirectory =>
                {
                    Assert.Equal("/Pages/Products/", subDirectory.Path);
                    Assert.Collection(
                        subDirectory.Files,
                        file => Assert.Same(projectItem1, file.ProjectItem));
                },
                    subDirectory =>
                {
                    Assert.Equal("/Pages/Accounts/", subDirectory.Path);
                    Assert.Collection(
                        subDirectory.Files,
                        file => Assert.Same(projectItem2, file.ProjectItem));
                });
            });
        }