Пример #1
0
        public async Task GetLibraryCompletionSetAsync_ReturnsCompletionWithLatestVersion()
        {
            //Arrange
            var packageSearch = new Mock <INpmPackageSearch>();
            var infoFactory   = new Mock <INpmPackageInfoFactory>();

            var testPkgInfo = new NpmPackageInfo(name: "testPkg", description: "description", latestVersion: "1.2.3");
            var packages    = new List <NpmPackageInfo>()
            {
                testPkgInfo
            };

            packageSearch.Setup(p => p.GetPackageNamesAsync(It.Is <string>(s => string.Equals(s, "testPkg")), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult((IEnumerable <NpmPackageInfo>)packages));

            infoFactory.Setup(p => p.GetPackageInfoAsync(It.Is <string>(s => string.Equals(s, "testPkg")), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(testPkgInfo));

            UnpkgCatalog sut = SetupCatalog(packageSearch: packageSearch.Object, infoFactory: infoFactory.Object);

            //Act
            CompletionSet result = await sut.GetLibraryCompletionSetAsync("testPkg", 7);

            //Assert
            Assert.AreEqual(1, result.Completions.Count());
            Assert.AreEqual("testPkg", result.Completions.First().DisplayText);
            Assert.AreEqual("[email protected]", result.Completions.First().InsertionText);
        }
Пример #2
0
        public async Task GetLibraryCompletionSetAsync_EmptyString()
        {
            UnpkgCatalog sut = SetupCatalog();

            CancellationToken token  = CancellationToken.None;
            CompletionSet     result = await sut.GetLibraryCompletionSetAsync(string.Empty, 0);

            Assert.AreEqual(0, result.Start);
            Assert.AreEqual(0, result.Length);
            Assert.AreEqual(0, result.Completions.Count());
        }
Пример #3
0
        public async Task GetLibraryCompletionSetAsync_ScopedPackageNameisSingleAt_ReturnsNoCompletions()
        {
            UnpkgCatalog sut = SetupCatalog();

            CompletionSet result = await sut.GetLibraryCompletionSetAsync("@", 1);

            Assert.AreEqual(0, result.Start);
            Assert.AreEqual(1, result.Length);
            Assert.AreEqual(0, result.Completions.Count());
            Assert.AreEqual(CompletionSortOrder.AsSpecified, result.CompletionType);
        }
Пример #4
0
        public async Task GetLibraryCompletionSetAsync_ScopesWithNameAndVersions_CursorInNameSubstring()
        {
            UnpkgCatalog sut = SetupCatalog();

            CompletionSet result = await sut.GetLibraryCompletionSetAsync("@types/[email protected]", 8);

            Assert.AreEqual(0, result.Start);
            Assert.AreEqual(17, result.Length);
            Assert.AreEqual(1, result.Completions.Count());
            Assert.IsTrue(result.Completions.First().InsertionText.StartsWith("@types/node"));
        }
Пример #5
0
        [Ignore] // Enable it after version completion sorting is committed.
        public async Task GetLibraryCompletionSetAsync_Versions()
        {
            UnpkgCatalog sut = SetupCatalog();

            CompletionSet result = await sut.GetLibraryCompletionSetAsync("jquery@", 7);

            Assert.AreEqual(7, result.Start);
            Assert.AreEqual(0, result.Length);
            Assert.IsTrue(result.Completions.Count() > 0);
            Assert.AreEqual("1.5.1", result.Completions.Last().DisplayText);
            Assert.AreEqual("[email protected]", result.Completions.Last().InsertionText);
        }
Пример #6
0
        public async Task GetLibraryCompletionSetAsync_EmptyString()
        {
            var          mockRequestHandler = new Mock <IWebRequestHandler>();
            UnpkgCatalog sut = SetupCatalog(mockRequestHandler.Object);

            CompletionSet result = await sut.GetLibraryCompletionSetAsync(string.Empty, 0);

            Assert.AreEqual(0, result.Start);
            Assert.AreEqual(0, result.Length);
            Assert.AreEqual(0, result.Completions.Count());
            mockRequestHandler.Verify(m => m.GetStreamAsync(It.IsAny <string>(), It.IsAny <CancellationToken>()), Times.Never);
        }
Пример #7
0
        public async Task GetLibraryCompletionSetAsync_Names()
        {
            UnpkgCatalog sut = SetupCatalog();

            CompletionSet result = await sut.GetLibraryCompletionSetAsync("jquery", 0);

            Assert.AreEqual(0, result.Start);
            Assert.AreEqual(6, result.Length);
            Assert.AreEqual(100, result.Completions.Count());
            Assert.AreEqual("jquery", result.Completions.First().DisplayText);
            Assert.IsTrue(result.Completions.First().InsertionText.StartsWith("jquery"));
        }
Пример #8
0
        public async Task GetLibraryCompletionSetAsync_ScopesWithNameAndTrailingAt_CursorAtName()
        {
            UnpkgCatalog sut = SetupCatalog();

            CompletionSet result = await sut.GetLibraryCompletionSetAsync("@types/react@", 6);

            Assert.AreEqual(0, result.Start);
            Assert.AreEqual(13, result.Length);
            Assert.IsTrue(result.Completions.Count() > 0);
            Assert.IsTrue(result.Completions.First().InsertionText.StartsWith("@types/react"));
            Assert.AreEqual(CompletionSortOrder.AsSpecified, result.CompletionType);
        }
Пример #9
0
        public async Task GetLibraryCompletionSetAsync_ScopesWithName()
        {
            UnpkgCatalog sut = SetupCatalog();

            CompletionSet result = await sut.GetLibraryCompletionSetAsync("@types/node", 0);

            Assert.AreEqual(0, result.Start);
            Assert.AreEqual(11, result.Length);
            Assert.AreEqual(25, result.Completions.Count());
            Assert.AreEqual("@types/node", result.Completions.First().DisplayText);
            Assert.IsTrue(result.Completions.First().InsertionText.StartsWith("@types/node"));
        }
Пример #10
0
        public async Task GetLibraryCompletionSetAsync_LibraryNameWithLeadingAndTrailingWhitespace()
        {
            UnpkgCatalog sut = SetupCatalog();

            CancellationToken token  = CancellationToken.None;
            CompletionSet     result = await sut.GetLibraryCompletionSetAsync("    jquery ", 0);

            Assert.AreEqual(0, result.Start);
            Assert.AreEqual(12, result.Length);
            Assert.AreEqual(100, result.Completions.Count());
            Assert.AreEqual("jquery", result.Completions.First().DisplayText);
            Assert.IsTrue(result.Completions.First().InsertionText.StartsWith("jquery"));
        }
Пример #11
0
        public async Task GetLibraryCompletionSetAsync_EmptyString_MakesNoWebRequest()
        {
            var          mockPackageSearch = new Mock <INpmPackageSearch>();
            var          mockPackageInfo   = new Mock <INpmPackageInfoFactory>();
            UnpkgCatalog sut = SetupCatalog(packageSearch: mockPackageSearch.Object, infoFactory: mockPackageInfo.Object);

            CompletionSet result = await sut.GetLibraryCompletionSetAsync(string.Empty, 0);

            Assert.AreEqual(0, result.Start);
            Assert.AreEqual(0, result.Length);
            Assert.AreEqual(0, result.Completions.Count());
            mockPackageInfo.VerifyNoOtherCalls();
            mockPackageSearch.VerifyNoOtherCalls();
        }
Пример #12
0
        public async Task GetLibraryCompletionSetAsync_Names()
        {
            var mockSearch = new Mock <INpmPackageSearch>();

            mockSearch.Setup(m => m.GetPackageNamesAsync("jquery", It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(new[] { new NpmPackageInfo("fakePackage1", "", "1.0.0") }.AsEnumerable()));
            UnpkgCatalog sut = SetupCatalog(packageSearch: mockSearch.Object);

            CompletionSet result = await sut.GetLibraryCompletionSetAsync("jquery", 0);

            Assert.AreEqual(0, result.Start);
            Assert.AreEqual(6, result.Length);
            CollectionAssert.AreEquivalent(new[] { "fakePackage1" },
                                           result.Completions.Select(c => c.DisplayText).ToList());
        }
Пример #13
0
        public async Task GetLibraryCompletionSetAsync_ScopesWithName()
        {
            var mockSearch = new Mock <INpmPackageSearch>();

            mockSearch.Setup(m => m.GetPackageNamesAsync("@types/node", It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(new[] { new NpmPackageInfo("fakePackage1", "", "1.0.0") }.AsEnumerable()));
            UnpkgCatalog sut = SetupCatalog(packageSearch: mockSearch.Object);

            (string searchTerm, int caretPos) = ExtractCaret("|@types/node");

            CompletionSet result = await sut.GetLibraryCompletionSetAsync(searchTerm, caretPos);

            Assert.AreEqual(0, result.Start);
            Assert.AreEqual(11, result.Length);
            CollectionAssert.AreEquivalent(new[] { "fakePackage1" },
                                           result.Completions.Select(c => c.DisplayText).ToList());
        }
Пример #14
0
        public async Task GetLibraryCompletionSetAsync_ScopesWithNameAndVersions_CursorInNameSubstring()
        {
            var mockSearch = new Mock <INpmPackageSearch>();

            // TODO: do we really not strip the version out here?  Seems like we should...
            mockSearch.Setup(m => m.GetPackageNamesAsync("@types/[email protected]", It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(new[] { new NpmPackageInfo("fakePackage1", "", "1.0.0") }.AsEnumerable()));
            UnpkgCatalog sut = SetupCatalog(packageSearch: mockSearch.Object);

            (string nameStart, int caretPos) = ExtractCaret("@types/no|[email protected]");

            CompletionSet result = await sut.GetLibraryCompletionSetAsync(nameStart, caretPos);

            Assert.AreEqual(0, result.Start);
            Assert.AreEqual(17, result.Length);
            CollectionAssert.AreEquivalent(new[] { "fakePackage1" },
                                           result.Completions.Select(c => c.DisplayText).ToList());
        }
Пример #15
0
        public async Task GetLibraryCompletionSetAsync_ScopesWithNameAndTrailingAt_CursorAtName()
        {
            var mockSearch = new Mock <INpmPackageSearch>();

            // TODO: we should strip the trailing @ from the name
            mockSearch.Setup(m => m.GetPackageNamesAsync("@types/react@", It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(new[] { new NpmPackageInfo("fakePackage1", "", "1.0.0") }.AsEnumerable()));
            UnpkgCatalog sut = SetupCatalog(packageSearch: mockSearch.Object);

            (string nameStart, int caretPos) = ExtractCaret("@types/r|eact@");

            CompletionSet result = await sut.GetLibraryCompletionSetAsync(nameStart, caretPos);

            Assert.AreEqual(0, result.Start);
            Assert.AreEqual(13, result.Length);
            Assert.AreEqual(CompletionSortOrder.AsSpecified, result.CompletionType);
            CollectionAssert.AreEquivalent(new[] { "fakePackage1" },
                                           result.Completions.Select(c => c.DisplayText).ToList());
        }
Пример #16
0
        public async Task GetLibraryCompletionSetAsync_ScopesWithNameAndTrailingAt_CursorAtVersions()
        {
            var mockPackageInfoFactory = new Mock <INpmPackageInfoFactory>();

            mockPackageInfoFactory.Setup(m => m.GetPackageInfoAsync("@types/react", It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(new NpmPackageInfo("fakepackage", "", "2.0.0", new List <SemanticVersion> {
                SemanticVersion.Parse("1.0.0"), SemanticVersion.Parse("2.0.0")
            })));
            UnpkgCatalog sut = SetupCatalog(infoFactory: mockPackageInfoFactory.Object);

            (string nameStart, int caretPos) = ExtractCaret("@types/react@|");

            CompletionSet result = await sut.GetLibraryCompletionSetAsync(nameStart, caretPos);

            Assert.AreEqual(13, result.Start);
            Assert.AreEqual(0, result.Length);
            Assert.AreEqual(CompletionSortOrder.Version, result.CompletionType);
            CollectionAssert.AreEqual(new[] { "2.0.0", "1.0.0", "latest" },
                                      result.Completions.Select(c => c.DisplayText).ToList());
        }