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); }
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()); }
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); }
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")); }
[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); }
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); }
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")); }
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); }
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")); }
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")); }
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(); }
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()); }
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()); }
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()); }
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()); }
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()); }