/src/tests/unit/injector.test.ts

https://github.com/khanhas/ueli · TypeScript · 135 lines · 111 code · 24 blank · 0 comment · 0 complexity · 31e641c3289add846c452a750c685550 MD5 · raw file

  1. import { Injector } from "../../ts/injector";
  2. import { platform } from "os";
  3. import { OperatingSystem } from "../../ts/operating-system";
  4. import { WindowsIconManager } from "../../ts/icon-manager/windows-icon-manager";
  5. import { MacOsIconManager } from "../../ts/icon-manager/mac-os-icon-manager";
  6. import { Windows10SettingsSearchPlugin } from "../../ts/search-plugins/windows-10-settings-plugin";
  7. import { MacOsSettingsPlugin } from "../../ts/search-plugins/mac-os-settings-plugin";
  8. import { WindowsProgramRepository } from "../../ts/programs-plugin/windows-program-repository";
  9. import { MacOsProgramRepository } from "../../ts/programs-plugin/macos-program-repository";
  10. import { DirectorySeparator } from "../../ts/directory-separator";
  11. import { join } from "path";
  12. import { FileExecutionCommandBuilder } from "../../ts/builders/file-execution-command-builder";
  13. import { FileLocationExecutionCommandBuilder } from "../../ts/builders/file-location-execution-command-builder";
  14. import { FilePathRegex } from "../../ts/file-path-regex";
  15. import { OpenUrlWithDefaultBrowserCommandBuilder } from "../../ts/builders/open-url-with-default-browser-command-builder";
  16. import { SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG } from "constants";
  17. import { StylesheetPath } from "../../ts/builders/stylesheet-path-builder";
  18. import { TrayIconPathBuilder } from "../../ts/builders/tray-icon-path-builder";
  19. import { OperatingSystemNotSupportedError } from "../../ts/errors/operatingsystem-not-supported-error";
  20. const win = "win32";
  21. const mac = "darwin";
  22. const testFilePath = join("example", "file", "path");
  23. const testUrl = "https://github.com";
  24. describe(Injector.name, () => {
  25. describe(Injector.getDirectorySeparator.name, () => {
  26. it("should return the correct directory separator", () => {
  27. const actualWin = Injector.getDirectorySeparator(win);
  28. const actualMac = Injector.getDirectorySeparator(mac);
  29. expect(actualWin).toBe(DirectorySeparator.WindowsDirectorySeparator);
  30. expect(actualMac).toBe(DirectorySeparator.macOsDirectorySeparator);
  31. });
  32. });
  33. describe(Injector.getFileExecutionCommand.name, () => {
  34. it("should return a file execution command", () => {
  35. const actualWin = Injector.getFileExecutionCommand(win, testFilePath);
  36. const actualMac = Injector.getFileExecutionCommand(mac, testFilePath);
  37. expect(actualWin).toBe(FileExecutionCommandBuilder.buildWindowsFileExecutionCommand(testFilePath));
  38. expect(actualMac).toBe(FileExecutionCommandBuilder.buildMacOsFileExecutionCommand(testFilePath));
  39. });
  40. });
  41. describe(Injector.getFileLocationExecutionCommand.name, () => {
  42. it("should return a file location execution command", () => {
  43. const actualWin = Injector.getFileLocationExecutionCommand(win, testFilePath);
  44. const actualMac = Injector.getFileLocationExecutionCommand(mac, testFilePath);
  45. expect(actualWin).toBe(FileLocationExecutionCommandBuilder.buildWindowsLocationExecutionCommand(testFilePath));
  46. expect(actualMac).toBe(FileLocationExecutionCommandBuilder.buildMacOsLocationExecutionCommand(testFilePath));
  47. });
  48. });
  49. describe(Injector.getFilePathRegExp.name, () => {
  50. it("should return a valid file path regexp", () => {
  51. const actualWin = Injector.getFilePathRegExp(win);
  52. const actualMac = Injector.getFilePathRegExp(mac);
  53. expect(actualWin.source).toBe(FilePathRegex.windowsFilePathRegExp.source);
  54. expect(actualMac.source).toBe(FilePathRegex.macOsFilePathRegexp.source);
  55. });
  56. });
  57. describe(Injector.getIconManager.name, () => {
  58. it("should return an icon manager", () => {
  59. const actualWin = Injector.getIconManager(win);
  60. const acutalMac = Injector.getIconManager(mac);
  61. expect(actualWin instanceof WindowsIconManager).toBe(true);
  62. expect(acutalMac instanceof MacOsIconManager).toBe(true);
  63. });
  64. });
  65. describe(Injector.getOpenUrlWithDefaultBrowserCommand.name, () => {
  66. it("should return an command to open up default browser with URL", () => {
  67. const actualWin = Injector.getOpenUrlWithDefaultBrowserCommand(win, testUrl);
  68. const acutalMac = Injector.getOpenUrlWithDefaultBrowserCommand(mac, testUrl);
  69. expect(actualWin).toBe(OpenUrlWithDefaultBrowserCommandBuilder.buildWindowsCommand(testUrl));
  70. expect(acutalMac).toBe(OpenUrlWithDefaultBrowserCommandBuilder.buildMacCommand(testUrl));
  71. });
  72. });
  73. describe(Injector.getOperatingSystemSettingsPlugin.name, () => {
  74. it("should return an operating system settings search plugin", () => {
  75. const actualWin = Injector.getOperatingSystemSettingsPlugin(win);
  76. const actualMac = Injector.getOperatingSystemSettingsPlugin(mac);
  77. expect(actualWin instanceof Windows10SettingsSearchPlugin).toBe(true);
  78. expect(actualMac instanceof MacOsSettingsPlugin).toBe(true);
  79. });
  80. });
  81. describe(Injector.getStyleSheetPath.name, () => {
  82. it("should return a stylesheet path", () => {
  83. const actualWin = Injector.getStyleSheetPath(win);
  84. const actualMac = Injector.getStyleSheetPath(mac);
  85. expect(actualWin).toBe(StylesheetPath.Windows);
  86. expect(actualMac).toBe(StylesheetPath.MacOs);
  87. });
  88. });
  89. describe(Injector.getTrayIconPath.name, () => {
  90. it("should return a tray icon path", () => {
  91. const actualWin = Injector.getTrayIconPath(win, testFilePath);
  92. const actualMac = Injector.getTrayIconPath(mac, testFilePath);
  93. expect(actualWin).toBe(TrayIconPathBuilder.buildWindowsTrayIconPath(testFilePath));
  94. expect(actualMac).toBe(TrayIconPathBuilder.buildMacOsTrayIconPath(testFilePath));
  95. });
  96. });
  97. describe(Injector.getWebUrlRegExp.name, () => {
  98. it("should return a valid web url regexp", () => {
  99. const webUrlRegexp = Injector.getWebUrlRegExp();
  100. expect(webUrlRegexp).not.toBe(undefined);
  101. expect(webUrlRegexp).not.toBe(null);
  102. let regexIsValid = true;
  103. try {
  104. const regexp = new RegExp(webUrlRegexp);
  105. } catch (error) {
  106. regexIsValid = false;
  107. }
  108. expect(regexIsValid).toBe(true);
  109. });
  110. });
  111. });