Esempio n. 1
0
        public async Task Should_register_MoveDocument_when_class_has_no_typeidentifier_and_namespace_is_assembly_based(
            ICodeRefactoringContextSubscriber interceptor,
            FixNamespaceCodeRefactoringProvider sut
            )
        {
            const string TestCase1 = @"
using System;
namespace TestSuite.Test {
    public class {
}
";
            var          created   = new List <CodeAction>();

            A
            .CallTo(() => interceptor.Register(A <CodeAction> .Ignored))
            .Invokes((CodeAction act) => { created.Add(act); });

            await Task.WhenAll(new[]
            {
                TestCase1
            }.Select(c => GetContext(
                         c,
                         new TextSpan(c.IndexOf("estSuit", StringComparison.Ordinal), 4),
                         folders: new[] { "Folder" },
                         interceptRegister: interceptor.Register
                         ))
                               .Select(sut.ComputeRefactoringsAsync));

            var moveActions = created.OfType <MoveDocumentCodeAction>().ToArray();

            Assert.Equal(1, moveActions.Length);

            Assert.Equal("Test", moveActions[0].FixParameters.Name);
            moveActions[0].FixParameters.Folders.ShouldBeEquivalentTo(new[] { "Test" });
        }
Esempio n. 2
0
        public async Task Should_not_register_when_namespace_declaration_is_nested(
            ICodeRefactoringContextSubscriber interceptor,
            FixNamespaceCodeRefactoringProvider sut
            )
        {
            const string TestCase1 = @"
using System;
namespace TestSuite.Test {
    namespace Inner {
        public class {
        }
    }
}
";

            var cases = new[]
            {
                TestCase1
            }.Select(c => GetContext(
                         c,
                         new TextSpan(c.IndexOf("Inner", StringComparison.Ordinal), 4),
                         projectName: "TestSuite",
                         folders: new[] { "Folder" },
                         interceptRegister: interceptor.Register
                         ));

            foreach (var context in cases)
            {
                await sut.ComputeRefactoringsAsync(context);
            }

            A
            .CallTo(() => interceptor.Register(A <CodeAction> .Ignored))
            .MustNotHaveHappened();
        }
Esempio n. 3
0
        public async Task Should_not_register_MoveDocument_when_namespace_is_right_for_each_class(
            ICodeRefactoringContextSubscriber interceptor,
            FixNamespaceCodeRefactoringProvider sut
            )
        {
            const string TestCase1 = @"
using System;
namespace TestSuite.Folder {
    public class Foo {}
    public class Test {}
    public class Other {}
}
";
            var          created   = new List <CodeAction>();

            A
            .CallTo(() => interceptor.Register(A <CodeAction> .Ignored))
            .Invokes((CodeAction act) => { created.Add(act); });

            await Task.WhenAll(new[]
            {
                TestCase1
            }.Select(c => GetContext(
                         c,
                         new TextSpan(c.IndexOf("estSuit", StringComparison.Ordinal), 4),
                         folders: new[] { "Folder" },
                         interceptRegister: interceptor.Register
                         ))
                               .Select(sut.ComputeRefactoringsAsync));

            var moveActions = created.OfType <MoveDocumentCodeAction>().ToArray();

            Assert.Equal(0, moveActions.Length);
        }
Esempio n. 4
0
        public async Task _Should_not_register_when_context_is_not_namespace_identifier(
            ICodeRefactoringContextSubscriber interceptor,
            FixNamespaceCodeRefactoringProvider sut
            )
        {
            const string TestCase = @"
using System;
namespace Test {
    public class Foo {}
}
";
            await Task.WhenAll(new[]
            {
                "namespace",
                "using",
                "System",
                "public",
                "class",
                "Foo"
            }.Select(c => GetContext(
                         TestCase,
                         new TextSpan(TestCase.IndexOf(c, StringComparison.Ordinal), c.Length),
                         interceptRegister: interceptor.Register
                         )).Select(sut.ComputeRefactoringsAsync));

            A
            .CallTo(() => interceptor.Register(A <CodeAction> .Ignored))
            .MustNotHaveHappened();
        }
Esempio n. 5
0
        public async Task Should_register_ChangeNamespace_with_a_single_class_when_namespace_is_assembly_based_and_class_is_equal_to_document(
            ICodeRefactoringContextSubscriber interceptor,
            FixNamespaceCodeRefactoringProvider sut
            )
        {
            const string TestCase1 = @"
using System;
namespace TestSuite.Folder {
    public class Test {}
}
";
            var          created   = new List <CodeAction>();

            A
            .CallTo(() => interceptor.Register(A <CodeAction> .Ignored))
            .Invokes((CodeAction act) => { created.Add(act); });

            await Task.WhenAll(new[]
            {
                TestCase1
            }.Select(c => GetContext(
                         c,
                         new TextSpan(c.IndexOf("estSuit", StringComparison.Ordinal), 4),
                         folders: new[] { "Inner", "Nested" },
                         interceptRegister: interceptor.Register
                         ))
                               .Select(sut.ComputeRefactoringsAsync));

            var moveActions = created.OfType <ChangeNamespaceCodeAction>().ToArray();

            Assert.Equal(1, moveActions.Length);
            Assert.Equal("TestSuite.Folder", moveActions[0].FixParameters.NamespaceToFix);
            Assert.Equal("TestSuite.Inner.Nested", moveActions[0].FixParameters.NewNamespace);
            Assert.Equal($"Change Namespace to '{moveActions[0].FixParameters.NewNamespace}'", moveActions[0].Title);
        }
Esempio n. 6
0
        public async Task Should_not_register_with_a_single_class_when_namespace_is_right_and_class_is_equal_to_document(
            ICodeRefactoringContextSubscriber interceptor,
            FixNamespaceCodeRefactoringProvider sut
            )
        {
            const string TestCase1 = @"
using System;
namespace TestSuite.Folder {
    public class Test {}
}
";
            var          cases     = new[]
            {
                TestCase1
            }.Select(c => GetContext(
                         c,
                         new TextSpan(c.IndexOf("estSuit", StringComparison.Ordinal), 4),
                         folders: new[] { "Folder" },
                         interceptRegister: interceptor.Register
                         ));

            foreach (var context in cases)
            {
                await sut.ComputeRefactoringsAsync(context);
            }

            A
            .CallTo(() => interceptor.Register(A <CodeAction> .Ignored))
            .MustNotHaveHappened();
        }
Esempio n. 7
0
        public async Task Should_register_MoveDocument_when_namespace_is_assembly_based_for_each_class(
            ICodeRefactoringContextSubscriber interceptor,
            FixNamespaceCodeRefactoringProvider sut
            )
        {
            const string TestCase1 = @"
using System;
namespace TestSuite {
    public class Foo {}
    public class Test {}
    public class Other {}
}
";
            var          created   = new List <CodeAction>();

            A
            .CallTo(() => interceptor.Register(A <CodeAction> .Ignored))
            .Invokes((CodeAction act) => { created.Add(act); });

            await Task.WhenAll(new[]
            {
                TestCase1
            }.Select(c => GetContext(
                         c,
                         new TextSpan(c.IndexOf("estSuit", StringComparison.Ordinal), 4),
                         folders: new[] { "Folder", "Inner" },
                         interceptRegister: interceptor.Register
                         ))
                               .Select(sut.ComputeRefactoringsAsync));

            var moveActions = created.OfType <MoveDocumentCodeAction>().ToArray();

            Assert.Equal(3, moveActions.Length);

            Assert.Equal("Foo", moveActions[0].FixParameters.Name);
            moveActions[0].FixParameters.Folders.ShouldBeEquivalentTo(new string[] { });
            Assert.Equal($@"Move File to '{moveActions[0].FixParameters.Name}.cs'", moveActions[0].Title);

            Assert.Equal("Test", moveActions[1].FixParameters.Name);
            moveActions[1].FixParameters.Folders.ShouldBeEquivalentTo(new string[] { });
            Assert.Equal($@"Move File to '{moveActions[1].FixParameters.Name}.cs'", moveActions[1].Title);

            Assert.Equal("Other", moveActions[2].FixParameters.Name);
            moveActions[2].FixParameters.Folders.ShouldBeEquivalentTo(new string[] { });
            Assert.Equal($@"Move File to '{moveActions[2].FixParameters.Name}.cs'", moveActions[2].Title);
        }
Esempio n. 8
0
        public async Task Should_register_RenameDocument_when_namespace_is_not_assembly_name_based(
            ICodeRefactoringContextSubscriber interceptor,
            FixNamespaceCodeRefactoringProvider sut
            )
        {
            const string TestCase1 = @"
using System;
namespace Tests {
    public class Foo {}
    public class Test {}
    public class Other {}
}
";
            var          created   = new List <CodeAction>();

            A
            .CallTo(() => interceptor.Register(A <CodeAction> .Ignored))
            .Invokes((CodeAction act) => { created.Add(act); });

            await Task.WhenAll(new[]
            {
                TestCase1
            }.Select(c => GetContext(
                         c,
                         new TextSpan(c.IndexOf("est", StringComparison.Ordinal), 3),
                         folders: new[] { "Folder" },
                         interceptRegister: interceptor.Register
                         ))
                               .Select(sut.ComputeRefactoringsAsync));

            var moveActions = created.OfType <RenameDocumentCodeAction>().ToArray();

            Assert.Equal(2, moveActions.Length);

            var action = moveActions[0];

            Assert.NotNull(action);
            Assert.Equal("Foo", action.FixParameters.Name);

            action = moveActions[1];
            Assert.NotNull(action);
            Assert.Equal("Other", action.FixParameters.Name);
        }
Esempio n. 9
0
        public async Task Should_not_register_with_a_single_class_when_namespace_is_equal_to_assembly_and_class_is_equal_to_document(
            ICodeRefactoringContextSubscriber interceptor,
            FixNamespaceCodeRefactoringProvider sut
            )
        {
            const string TestCase = @"
using System;
namespace TestSuite {
    public class Test {}
}
";
            var          context  = GetContext(
                TestCase,
                new TextSpan(TestCase.IndexOf("Suite", StringComparison.Ordinal), 4),
                interceptRegister: interceptor.Register
                );

            await sut.ComputeRefactoringsAsync(context);

            A
            .CallTo(() => interceptor.Register(A <CodeAction> .Ignored))
            .MustNotHaveHappened();
        }