コード例 #1
0
        public void It_throws_FileNotFoundException_if_GetDefaultNamespace_cannot_find_csproj()
        {
            // Arrange Mocks
            var sb = new StringBuilder();

            SystemContext.ConsoleErrorWriteLine = s => sb.Append(s);
            var directory = Substitute.For <DirectoryInfoBase>();

            directory.GetFiles("*.csproj", SearchOption.TopDirectoryOnly).Returns(info => new FileInfoBase[] { });

            // Act
            Action act = () => ProjectFileHelper.GetDefaultNamespace(directory);

            // Assert
            act.Should().Throw <FileNotFoundException>();
            sb.ToString().Should().Be("No csproj file found for default namespace. Please specify a namespace as a command argument.");
        }
コード例 #2
0
        public void It_can_GetDefaultNamespace_even_if_the_rootNamespace_is_not_found_in_csproj()
        {
            // Arrange Mocks
            var filesystem  = Substitute.For <IFileSystem>();
            var directory   = Substitute.For <DirectoryInfoBase>();
            var result1     = Substitute.For <FileInfoBase>();
            var filecontent = "Sorry no namespace here";

            directory.GetFiles("*.csproj", SearchOption.TopDirectoryOnly).Returns(info => new[] { result1 });
            result1.OpenRead().Returns(info => StringToStream(filecontent));
            result1.Name.Returns("bar.csproj");
            filesystem.Path.GetFileNameWithoutExtension("bar.csproj").Returns("bar");

            // Act
            var result = ProjectFileHelper.GetDefaultNamespace(directory);

            // Assert
            result.Should().Be("bar");
        }
コード例 #3
0
        public void It_can_GetDefaultNamespace_even_if_it_finds_too_many_csproj_files()
        {
            // Arrange Mocks
            var sb = new StringBuilder();

            SystemContext.ConsoleWriteLine = s => sb.Append(s);
            var directory   = Substitute.For <DirectoryInfoBase>();
            var result1     = Substitute.For <FileInfoBase>();
            var result2     = Substitute.For <FileInfoBase>();
            var filecontent = "<RootNamespace>Foo</RootNamespace>";

            directory.GetFiles("*.csproj", SearchOption.TopDirectoryOnly).Returns(info => new[] { result1, result2 });
            result1.OpenRead().Returns(info => StringToStream(filecontent));

            // Act
            var result = ProjectFileHelper.GetDefaultNamespace(directory);

            // Assert
            result.Should().Be("Foo");
            sb.ToString().Should().Be("Multiple csproj files found for namespace, using the first one.");
        }