Skip to content
This repository was archived by the owner on Jul 28, 2025. It is now read-only.

Commit f8cf1d2

Browse files
committed
learning about jest
1 parent f1a809e commit f8cf1d2

File tree

10 files changed

+138
-131
lines changed

10 files changed

+138
-131
lines changed

__mocks__/StateManager.ts

Whitespace-only changes.

src/__mocks__/StateManager.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { App, FileStats, TFolder, Vault } from "obsidian";
2+
import {
3+
mock,
4+
} from "jest-mock-extended";
5+
import { DatabaseView } from "DatabaseView";
6+
import { DatabaseSettings } from "Settings";
7+
import { jest } from '@jest/globals';
8+
const StateManager = jest.mock("StateManager", () => {
9+
return {
10+
StateManager: jest
11+
.fn()
12+
.mockImplementation(
13+
(
14+
app: App,
15+
initialView: DatabaseView,
16+
initialData: string,
17+
onEmpty: () => void,
18+
getGlobalSettings: () => DatabaseSettings
19+
) => {
20+
return {
21+
file: {
22+
path: "mockedPath",
23+
basename: "mockedBasename",
24+
name: "mockedName",
25+
parent: mock<TFolder>(),
26+
vault: mock<Vault>(),
27+
stat: mock<FileStats>(),
28+
extension: "md",
29+
},
30+
};
31+
}
32+
),
33+
};
34+
});
35+
36+
module.exports = StateManager;

src/__tests__/IO/settings.test.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { parseYamlMock } from "mock/mockObsidianUtils";
2+
import DatabaseStringToYamlParser from "parsers/DatabaseStringToYamlParser";
3+
import { YamlHandlerResponse } from "parsers/handlers/AbstractYamlPropertyHandler";
4+
5+
jest.mock("obsidian",
6+
() => {
7+
8+
return {
9+
parseYaml: jest.fn(() => {
10+
return parseYamlMock(1, 1);
11+
}
12+
),
13+
};
14+
}
15+
);
16+
describe("Settings", () => {
17+
/** Parse string YAML */
18+
test("Parse Database string to Yaml", () => {
19+
const yamlResponse: YamlHandlerResponse = DatabaseStringToYamlParser("test");
20+
expect(yamlResponse.yaml.name).toBeDefined();
21+
expect(yamlResponse.yaml.description).toBeDefined();
22+
expect(yamlResponse.yaml.columns).toBeDefined();
23+
expect(yamlResponse.yaml.config).toBeDefined();
24+
expect(yamlResponse.yaml.filters).toBeDefined();
25+
});
26+
});

src/__tests__/lab.test.ts

Lines changed: 0 additions & 63 deletions
This file was deleted.

src/__tests__/reactTable.test.tsx

Lines changed: 37 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,49 @@
1+
import { mocked } from "ts-jest/utils";
12
import { render, screen } from "@testing-library/react";
23
import { Database } from "components/index/Database";
34
import { TableDataType } from "cdm/FolderModel";
45
import { makeData } from "mock/mockTableUtils";
56
import React from "react";
6-
import {
7-
DeepMockProxy,
8-
mockDeep,
9-
mock,
10-
mockReset,
11-
MockProxy,
12-
} from "jest-mock-extended";
13-
import { App, FileStats, TFolder, Vault } from "obsidian";
7+
import { DeepMockProxy, mockDeep, mockReset } from "jest-mock-extended";
8+
import { App } from "obsidian";
149
import StateManager from "StateManager";
15-
import { DatabaseView } from "DatabaseView";
16-
17-
// void mock
18-
const greetImplementation = (dataview: MockProxy<StateManager>) => {};
19-
const mockFn = jest.fn(greetImplementation);
20-
21-
// const mockStateManager: MockProxy<StateManager> = {
22-
// app: global.app,
23-
// file: {
24-
// path: "mockedPath",
25-
// basename: "mockedBasename",
26-
// name: "mockedName",
27-
// parent: mock<TFolder>(),
28-
// vault: mock<Vault>(),
29-
// stat: mock<FileStats>(),
30-
// extension: "md",
31-
// },
32-
// onEmpty: jest.fn(),
33-
// getGlobalSettings: jest.fn(),
34-
// unregisterView: mockFn,
35-
// registerView: jest.fn(),
36-
// getAView: mock<DatabaseView>(),
37-
// forceRefresh: jest.fn(),
38-
// };
10+
import { jest } from "@jest/globals";
3911
/**
4012
* @jest-environment jsdom
4113
*/
4214
describe("React-table", () => {
43-
// @ts-ignore
44-
const mockGlobalApp: DeepMockProxy<App> = mockDeep<App>();
45-
/**
46-
* Run this before each test.
47-
*/
48-
beforeAll(() => {
49-
mockReset(mockGlobalApp);
50-
global.app = mockGlobalApp;
51-
});
52-
53-
test("Render without crashing", async () => {
54-
const mockedTableData: TableDataType = await makeData(10);
55-
// mockedTableData.stateManager = mockStateManager;
56-
render(<Database {...mockedTableData} />);
57-
const titleLabel = screen.getByText(" title");
58-
expect(titleLabel).toBeInTheDocument();
59-
});
60-
61-
/**
62-
* Run this after each test.
63-
*/
64-
afterAll(() => {
65-
global.app = undefined;
15+
test("TODO React testing", async () => {
16+
expect(true).toBeTruthy();
6617
});
18+
// // @ts-ignore
19+
// const mockGlobalApp: DeepMockProxy<App> = mockDeep<App>();
20+
// const MockedStateManager = mocked(StateManager, true);
21+
// /**
22+
// * Run this before each test.
23+
// */
24+
// beforeAll(() => {
25+
// mockReset(mockGlobalApp);
26+
// global.app = mockGlobalApp;
27+
// // Clears the record of calls to the mock constructor function and its methods
28+
// MockedStateManager.mockClear();
29+
// });
30+
// test("Render without crashing", async () => {
31+
// const mockedTableData: TableDataType = await makeData(10);
32+
// mockedTableData.stateManager = new StateManager(
33+
// global.app,
34+
// null,
35+
// null,
36+
// null,
37+
// null
38+
// );
39+
// render(<Database {...mockedTableData} />);
40+
// const titleLabel = screen.getByText(" title");
41+
// expect(titleLabel).toBeInTheDocument();
42+
// });
43+
// /**
44+
// * Run this after each test.
45+
// */
46+
// afterAll(() => {
47+
// global.app = undefined;
48+
// });
6749
});

src/helpers/Constants.ts

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -136,13 +136,8 @@ export const OperatorFilter = Object.freeze({
136136
});
137137

138138
export function getOperatorFilterValue(keyToFind: string): string {
139-
let result: string = '';
140-
Object.entries(OperatorFilter).find(([key, value]) => {
141-
if (key === keyToFind) {
142-
result = value;
143-
return true;
144-
}
145-
return false;
146-
});
147-
return result;
139+
const entry = Object.entries(OperatorFilter).find(([key]) =>
140+
key === keyToFind
141+
);
142+
return entry[1];
148143
}

src/helpers/StylesHelper.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export function dbTrim(str: string) {
3434
* @returns
3535
*/
3636
export function getTotalWidth(state: ColumnWidthState): number {
37-
let totalWidth: number = 0;
37+
let totalWidth = 0;
3838
Object.keys(state.widthRecord).forEach((key) => {
3939
totalWidth += state.widthRecord[key];
4040
});

src/mock/labTest.ts

Lines changed: 0 additions & 3 deletions
This file was deleted.

src/mock/mockObsidianUtils.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { parseYaml } from "obsidian";
2+
3+
/** Mock parseYaml returning YamlHandlerResponse object */
4+
export const parseYamlMock = (numOfColumns: number, numberOfFilters: number) => {
5+
return {
6+
name: "Test",
7+
description: "Test",
8+
columns: {
9+
"test": {
10+
input: "text",
11+
accessor: "test",
12+
label: "test",
13+
key: "test",
14+
position: 1,
15+
isMetadata: true,
16+
skipPersist: false,
17+
csvCandidate: true,
18+
isInline: false
19+
}
20+
},
21+
config: {
22+
enable_show_state: false,
23+
group_folder_column: "test"
24+
},
25+
filters: [
26+
{
27+
field: "test",
28+
operator: "NOT_EQUAL",
29+
value: "✅ Resolved"
30+
}
31+
]
32+
};
33+
}
34+

0 commit comments

Comments
 (0)