mirror of
https://github.com/Awesome-Technologies/synapse-admin.git
synced 2026-05-29 18:54:33 +00:00
Add typecheck quality gate (#814)
This commit is contained in:
@@ -20,7 +20,9 @@ jobs:
|
||||
node-version: 24
|
||||
- name: Install dependencies
|
||||
run: yarn --immutable
|
||||
- name: Run checks
|
||||
- name: Run lint
|
||||
run: yarn lint
|
||||
- name: Run typecheck
|
||||
run: yarn typecheck
|
||||
- name: Run tests
|
||||
run: yarn test
|
||||
|
||||
@@ -91,6 +91,7 @@
|
||||
"coverage:badge": "node ./scripts/generate-coverage-badge.mjs",
|
||||
"lint": "eslint --ignore-path .gitignore --ext .ts,.tsx,.yml,.yaml .",
|
||||
"fix": "yarn lint --fix",
|
||||
"typecheck": "tsc --noEmit",
|
||||
"test": "vitest run",
|
||||
"test:coverage": "vitest run --coverage",
|
||||
"test:watch": "vitest watch",
|
||||
|
||||
@@ -88,11 +88,13 @@ const ReportShowActions = () => {
|
||||
);
|
||||
};
|
||||
|
||||
const ReceivedTsField = (props: any) => <DateField {...props} showTime options={DATE_FORMAT} />;
|
||||
|
||||
export const ReportList = (props: ListProps) => (
|
||||
<List {...props} pagination={<ReportPagination />} sort={{ field: "received_ts", order: "DESC" }}>
|
||||
<DataTable rowClick="show" bulkActionButtons={false}>
|
||||
<DataTable.Col source="id" />
|
||||
<DataTable.Col source="received_ts" field={DateField} fieldProps={{ showTime: true, options: DATE_FORMAT }} />
|
||||
<DataTable.Col source="received_ts" field={ReceivedTsField} />
|
||||
<DataTable.Col source="user_id" />
|
||||
<DataTable.NumberCol source="score" />
|
||||
<DataTable.Col source="name" />
|
||||
|
||||
@@ -376,37 +376,37 @@ describe("dataProvider", () => {
|
||||
it("deletes various resources using their custom configurations", async () => {
|
||||
fetchMock.mockResponse(JSON.stringify({}));
|
||||
|
||||
await dataProvider.delete("rooms", { id: "room1", previousData: {} });
|
||||
await dataProvider.delete("rooms", { id: "room1", previousData: { id: "room1" } });
|
||||
expect(fetchMock).toHaveBeenCalledWith(
|
||||
"http://localhost/_synapse/admin/v2/rooms/room1",
|
||||
expect.objectContaining({ method: "DELETE", body: '{"block":false}' })
|
||||
);
|
||||
|
||||
await dataProvider.delete("users_media", { id: "media1", previousData: {} });
|
||||
await dataProvider.delete("users_media", { id: "media1", previousData: { id: "media1" } });
|
||||
expect(fetchMock).toHaveBeenCalledWith(
|
||||
"http://localhost/_synapse/admin/v1/media/matrix.example.com/media1",
|
||||
expect.objectContaining({ method: "DELETE" })
|
||||
);
|
||||
|
||||
await dataProvider.delete("protect_media", { id: "media1", previousData: {} });
|
||||
await dataProvider.delete("protect_media", { id: "media1", previousData: { id: "media1" } });
|
||||
expect(fetchMock).toHaveBeenCalledWith(
|
||||
"http://localhost/_synapse/admin/v1/media/unprotect/media1",
|
||||
expect.objectContaining({ method: "POST" })
|
||||
);
|
||||
|
||||
await dataProvider.delete("quarantine_media", { id: "media1", previousData: {} });
|
||||
await dataProvider.delete("quarantine_media", { id: "media1", previousData: { id: "media1" } });
|
||||
expect(fetchMock).toHaveBeenCalledWith(
|
||||
"http://localhost/_synapse/admin/v1/media/unquarantine/matrix.example.com/media1",
|
||||
expect.objectContaining({ method: "POST" })
|
||||
);
|
||||
|
||||
await dataProvider.delete("forward_extremities", { id: "room1", previousData: {} });
|
||||
await dataProvider.delete("forward_extremities", { id: "room1", previousData: { id: "room1" } });
|
||||
expect(fetchMock).toHaveBeenCalledWith(
|
||||
"http://localhost/_synapse/admin/v1/rooms/room1/forward_extremities",
|
||||
expect.objectContaining({ method: "DELETE" })
|
||||
);
|
||||
|
||||
await dataProvider.delete("destinations", { id: "dest1", previousData: {} });
|
||||
await dataProvider.delete("destinations", { id: "dest1", previousData: { id: "dest1" } });
|
||||
expect(fetchMock).toHaveBeenCalledWith(
|
||||
"http://localhost/_synapse/admin/v1/federation/destinations/dest1/reset_connection",
|
||||
expect.objectContaining({ method: "POST" })
|
||||
@@ -415,11 +415,11 @@ describe("dataProvider", () => {
|
||||
|
||||
it("deletes single resources using custom methods and fallback body logic", async () => {
|
||||
fetchMock.mockResponseOnce(JSON.stringify({}));
|
||||
await deleteResource("devices", { id: "D1", previousData: { user_id: "@u:example.com" } });
|
||||
await deleteResource("devices", { id: "D1", previousData: { id: "D1", user_id: "@u:example.com" } });
|
||||
expect(fetchMock.mock.calls[0]?.[1]?.body).toBeNull();
|
||||
|
||||
fetchMock.mockResponseOnce(JSON.stringify({ id: "deleted" }));
|
||||
await deleteResource("users", { id: "@user:matrix.example.com", previousData: {} });
|
||||
await deleteResource("users", { id: "@user:matrix.example.com", previousData: { id: "@user:matrix.example.com" } });
|
||||
expect(fetchMock.mock.calls[1]?.[1]?.method).toBe("POST");
|
||||
expect(fetchMock.mock.calls[1]?.[1]?.body).toBe('{"erase":true}');
|
||||
});
|
||||
|
||||
+1
-1
@@ -57,7 +57,7 @@
|
||||
/* Experimental Options */
|
||||
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
|
||||
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
|
||||
"skipLibCheck": false
|
||||
"skipLibCheck": true
|
||||
},
|
||||
"include": ["src"],
|
||||
"references": [{ "path": "./tsconfig.vite.json" }]
|
||||
|
||||
Reference in New Issue
Block a user