public async Task NpmPackageSearch_GetPackageNamesAsync_NullOrEmptyOrUnmatchedPackage(string searchItem, int expectedCount) { CancellationToken token = CancellationToken.None; IEnumerable <string> packages = await NpmPackageSearch.GetPackageNamesAsync(searchItem, token); Assert.AreEqual(expectedCount, packages.Count()); }
public async Task NpmPackageSearch_GetPackageNamesAsync_ScopedPackage() { string searchItem = "@angular/"; CancellationToken token = CancellationToken.None; IEnumerable <string> packages = await NpmPackageSearch.GetPackageNamesAsync(searchItem, token); Assert.IsTrue(packages.Count() > 0); }
public async Task NpmPackageSearch_GetPackageNamesAsync_NullSearchItem_DoesNotMakeWebRequest() { var mockRequestHandler = new Mock <IWebRequestHandler>(); var sut = new NpmPackageSearch(mockRequestHandler.Object); IEnumerable <NpmPackageInfo> packages = await sut.GetPackageNamesAsync(null, CancellationToken.None); mockRequestHandler.Verify(x => x.GetStreamAsync(It.IsAny <string>(), It.IsAny <CancellationToken>()), Times.Never); }
public async Task NpmPackageSearch_GetPackageNamesAsync_UnScopedPackage() { string searchItem = "jquery"; CancellationToken token = CancellationToken.None; IEnumerable <string> packages = await NpmPackageSearch.GetPackageNamesAsync(searchItem, token); Assert.AreEqual(100, packages.Count()); Assert.AreEqual("jquery", packages.FirstOrDefault()); }
public async Task NpmPackageSearch_GetPackageNamesAsync_ResponseContainsNoObjects_ReturnEmptyListOfPackages() { string noHitsResponse = @"{""objects"":[],""total"":0}"; var mockRequestHandler = new Mock <IWebRequestHandler>(); mockRequestHandler.Setup(m => m.GetStreamAsync(It.IsAny <string>(), It.IsAny <CancellationToken>())) .Returns(Task.FromResult <Stream>(new MemoryStream(Encoding.Default.GetBytes(noHitsResponse)))); var sut = new NpmPackageSearch(mockRequestHandler.Object); IEnumerable <NpmPackageInfo> packages = await sut.GetPackageNamesAsync("searchTerm", CancellationToken.None); Assert.IsFalse(packages.Any()); }
public async Task NpmPackageSearch_GetPackageNamesAsync_ScopedPackage() { // this is a mockup of the response from the npms.io search string response = @"{ ""results"": [ { ""package"": { ""name"": ""firstResult"", ""scope"": ""unscoped"", ""version"": ""1.0.1"", ""description"": ""a package"", } }, { ""package"": { ""name"": ""secondResult"", ""scope"": ""unscoped"", ""version"": ""2.2.0"", ""description"": ""another package"" } } ], ""total"": 2 }"; var mockRequestHandler = new Mock <IWebRequestHandler>(); mockRequestHandler.Setup(m => m.GetStreamAsync(It.IsAny <string>(), It.IsAny <CancellationToken>())) .Returns(Task.FromResult <Stream>(new MemoryStream(Encoding.Default.GetBytes(response)))); var sut = new NpmPackageSearch(mockRequestHandler.Object); IEnumerable <NpmPackageInfo> result = await sut.GetPackageNamesAsync("@searchTerm/", CancellationToken.None); CollectionAssert.AreEquivalent(new[] { "firstResult", "secondResult" }, result.Select(p => p.Name).ToList()); }
public async Task <CompletionSet> GetLibraryCompletionSetAsync(string libraryNameStart, int caretPosition) { var completions = new List <CompletionItem>(); var completionSet = new CompletionSet { Start = 0, Length = 0, Completions = completions }; if (string.IsNullOrEmpty(libraryNameStart)) { // no point in doing the rest of the work, we know it's going to be an empty completion set anyway return(completionSet); } completionSet.Length = libraryNameStart.Length; (string name, string version) = _libraryNamingScheme.GetLibraryNameAndVersion(libraryNameStart); try { // library name completion if (caretPosition < name.Length + 1) { if (IsGitHub(libraryNameStart)) { return(completionSet); } IEnumerable <string> packageNames = await NpmPackageSearch.GetPackageNamesAsync(libraryNameStart, CancellationToken.None); foreach (string packageName in packageNames) { var completionItem = new CompletionItem { DisplayText = packageName, InsertionText = packageName }; completions.Add(completionItem); } } // library version completion else { completionSet.Start = name.Length + 1; completionSet.Length = version.Length; IEnumerable <string> versions; if (IsGitHub(name)) { versions = await GetGithubLibraryVersionsAsync(name); } else { var libGroup = new JsDelivrLibraryGroup(name); versions = await libGroup.GetLibraryVersions(CancellationToken.None); } foreach (string v in versions) { var completionItem = new CompletionItem { DisplayText = v, InsertionText = _libraryNamingScheme.GetLibraryId(name, v), }; completions.Add(completionItem); } } } catch (Exception ex) { _logger.Log(ex.ToString(), LogLevel.Error); } return(completionSet); }