private void Initialize() { if (_providers.Count > 0) { return; } var packageInfoFactory = new NpmPackageInfoFactory(); var packageSearch = new NpmPackageSearch(); IEnumerable <IProviderFactory> factories = new IProviderFactory[] { new FileSystemProviderFactory(), new CdnjsProviderFactory(), new UnpkgProviderFactory(packageSearch, packageInfoFactory), new JsDelivrProviderFactory(packageSearch, packageInfoFactory), }; foreach (IProviderFactory factory in factories) { if (factory != null) { _providers.Add(factory.CreateProvider(_hostInteraction)); } } }
private void Initialize() { if (_providers.Count > 0) { return; } var packageInfoFactory = new NpmPackageInfoFactory(WebRequestHandler.Instance); var packageSearch = new NpmPackageSearch(WebRequestHandler.Instance); IEnumerable <IProviderFactory> factories = new IProviderFactory[] { new UnpkgProviderFactory(packageSearch, packageInfoFactory), new JsDelivrProviderFactory(packageSearch, packageInfoFactory), new FileSystemProviderFactory(), new CdnjsProviderFactory(), }; foreach (IProviderFactory factory in factories) { if (factory != null) { var provider = factory.CreateProvider(_hostInteraction); if (!string.IsNullOrEmpty(provider.Id)) { _providers.Add(provider); } } } }
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_GetPackageInfoAsync_ScopedPackage() { string searchItem = "@angular/cli"; CancellationToken token = CancellationToken.None; NpmPackageInfo packageInfo = await NpmPackageSearch.GetPackageInfoAsync(searchItem, token); Assert.IsTrue(packageInfo.Versions != null); Assert.IsTrue(packageInfo.Versions.Count() > 0); }
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 DependenciesFactory() { var packageSearch = new NpmPackageSearch(WebRequestHandler.Instance); var packageInfoFactory = new NpmPackageInfoFactory(WebRequestHandler.Instance); ProviderFactories = new IProviderFactory[] { new FileSystemProviderFactory(), new CdnjsProviderFactory(), new UnpkgProviderFactory(packageSearch, packageInfoFactory), new JsDelivrProviderFactory(packageSearch, packageInfoFactory), }; }
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 void Setup() { string cacheFolder = Environment.ExpandEnvironmentVariables(@"%localappdata%\Microsoft\Library\"); _projectFolder = Path.Combine(Path.GetTempPath(), "LibraryManager"); var hostInteraction = new HostInteraction(_projectFolder, cacheFolder); var npmPackageSearch = new NpmPackageSearch(); var packageInfoFactory = new NpmPackageInfoFactory(); var dependencies = new Dependencies(hostInteraction, new UnpkgProviderFactory(npmPackageSearch, packageInfoFactory)); _provider = dependencies.GetProvider("unpkg"); LibraryIdToNameAndVersionConverter.Instance.Reinitialize(dependencies); Directory.CreateDirectory(_projectFolder); }
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); }