コード例 #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));
            });
        });
    }