Skip to content

Commit

Permalink
Merged program repositories to one class
Browse files Browse the repository at this point in the history
  • Loading branch information
oliverschwendener committed May 20, 2018
1 parent 0ed0bf5 commit 8cf2547
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 68 deletions.
58 changes: 37 additions & 21 deletions src/tests/integration/search-plugins/programs-plugin.test.ts
Original file line number Diff line number Diff line change
@@ -1,33 +1,49 @@
import { ProgramsPlugin } from "../../../ts/search-plugins/programs-plugin";
import { platform } from "os";
import { WindowsProgramRepository } from "../../../ts/programs-plugin/windows-program-repository";
import { MacOsProgramRepository } from "../../../ts/programs-plugin/macos-program-repository";
import { defaultConfig } from "../../../ts/default-config";
import { ProgramFileRepository } from "../../../ts/programs-plugin/program-file-repository";
import { mkdirSync, writeFileSync, unlinkSync, rmdirSync } from "fs";
import { join } from "path";

describe(ProgramsPlugin.name, (): void => {
const programRepo = platform() === "win32"
? new WindowsProgramRepository(defaultConfig.applicationFolders, defaultConfig.applicationFileExtensions)
: new MacOsProgramRepository(defaultConfig.applicationFolders, defaultConfig.applicationFileExtensions);
describe(ProgramFileRepository.name, (): void => {
const applicationFileExtension = ".lnk";
const applicationFolder = "test-folder";
const applications = ["test-1", "test-2", "test-3"];

const plugin = new ProgramsPlugin(programRepo);
describe("getPrograms", (): void => {
beforeAll((): void => {
mkdirSync(applicationFolder);

describe(plugin.getAllItems.name, (): void => {
it("should return some programs", (): void => {
const programs = plugin.getAllItems();
for (const application of applications) {
const filePath = getFilePath(applicationFolder, application, applicationFileExtension);
writeFileSync(filePath, "", "utf-8");
}
});

afterAll((): void => {
for (const application of applications) {
const filePath = getFilePath(applicationFolder, application, applicationFileExtension);
unlinkSync(filePath);
}

expect(programs.length).toBeGreaterThan(0);
rmdirSync(applicationFolder);
});

it("all returned items should have set a name, execution argument and tags", (): void => {
const programs = plugin.getAllItems();
it("should return programs correctly", (): void => {
const repo = new ProgramFileRepository([applicationFolder], [applicationFileExtension]);
const programs = repo.getPrograms();
expect(programs.length).toBe(applications.length);

for (const program of programs) {
expect(program).not.toBeUndefined();
expect(program.name).not.toBeUndefined();
expect(program.executionArgument).not.toBeUndefined();
expect(program.icon).not.toBeUndefined();
expect(program.tags).not.toBeUndefined();
const application = applications.filter((a) => {
return a === program.name;
})[0];

expect(application).not.toBe(undefined);
expect(program.name).toBe(application);
expect(program.executionArgument).toBe(getFilePath(applicationFolder, application, applicationFileExtension));
}
});
});
});

function getFilePath(folder: string, file: string, fileExtension: string): string {
return `${join(folder, file)}${fileExtension}`;
}
2 changes: 0 additions & 2 deletions src/ts/injector.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ import { IconManager } from "./icon-manager/icon-manager";
import { MacOsIconManager } from "./icon-manager/mac-os-icon-manager";
import { WindowsIconManager } from "./icon-manager/windows-icon-manager";
import { OperatingSystem } from "./operating-system";
import { MacOsProgramRepository } from "./programs-plugin/macos-program-repository";
import { ProgramRepository } from "./programs-plugin/program-repository";
import { WindowsProgramRepository } from "./programs-plugin/windows-program-repository";
import { MacOsSettingsPlugin } from "./search-plugins/mac-os-settings-plugin";
import { SearchPlugin } from "./search-plugins/search-plugin";
import { Windows10SettingsSearchPlugin } from "./search-plugins/windows-10-settings-plugin";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { FileHelpers } from "../helpers/file-helpers";
import { Program } from "./program";
import { ProgramRepository } from "./program-repository";

export class MacOsProgramRepository implements ProgramRepository {
export class ProgramFileRepository implements ProgramRepository {
private applicationFileExtensions: string[];
private programs: Program[];

Expand Down
37 changes: 0 additions & 37 deletions src/ts/programs-plugin/windows-program-repository.ts

This file was deleted.

9 changes: 2 additions & 7 deletions src/ts/search-plugin-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ import { ProgramsPlugin } from "./search-plugins/programs-plugin";
import { SearchPlugin } from "./search-plugins/search-plugin";
import { Windows10SettingsSearchPlugin } from "./search-plugins/windows-10-settings-plugin";
import { platform } from "os";
import { WindowsProgramRepository } from "./programs-plugin/windows-program-repository";
import { MacOsProgramRepository } from "./programs-plugin/macos-program-repository";
import { ProgramFileRepository } from "./programs-plugin/program-file-repository";
import { defaultConfig } from "./default-config";
import { UeliHelpers } from "./helpers/ueli-helpers";
import { ConfigOptions } from "./config-options";
Expand All @@ -16,12 +15,8 @@ export class SearchPluginManager {
private plugins: SearchPlugin[];

public constructor(config: ConfigOptions) {
const programRepo = platform() === "win32"
? new WindowsProgramRepository(config.applicationFolders, config.applicationFileExtensions)
: new MacOsProgramRepository(config.applicationFolders, config.applicationFileExtensions);

this.plugins = [
new ProgramsPlugin(programRepo),
new ProgramsPlugin(new ProgramFileRepository(config.applicationFolders, config.applicationFileExtensions)),
new HomeFolderSearchPlugin(),
new UeliCommandsSearchPlugin(),
];
Expand Down

0 comments on commit 8cf2547

Please sign in to comment.