Skip to content

Commit 77dacfe

Browse files
committed
ci: fixes
Signed-off-by: riccardoperra <riccardo.perra@icloud.com>
1 parent 3483d24 commit 77dacfe

File tree

27 files changed

+963
-1025
lines changed

27 files changed

+963
-1025
lines changed

.github/workflows/main.yml

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -94,15 +94,15 @@ jobs:
9494
pnpm libs:build
9595
9696
- name: Cache packages
97-
uses: actions/cache@v5
97+
uses: actions/cache/save@v5
9898
with:
9999
path: packages
100100
key: packages-dist-${{ github.run_id }}-${{ github.run_number }}
101101

102102
typecheck-packages:
103103
if: ${{ needs.install.outputs.libs-change == 'true' }}
104104
name: Type-checking
105-
needs: [install, build-packages]
105+
needs: [install, build-packages, build-api]
106106
runs-on: ubuntu-latest
107107
steps:
108108
- name: Checkout PR
@@ -113,11 +113,17 @@ jobs:
113113
uses: ./.github/actions/pnpm-install
114114

115115
- name: Restore dist
116-
uses: actions/cache@v5
116+
uses: actions/cache/restore@v5
117117
with:
118118
path: packages
119119
key: packages-dist-${{ github.run_id }}-${{ github.run_number }}
120120

121+
- name: Restore api bundle
122+
uses: actions/cache/restore@v5
123+
with:
124+
path: apps/api/dist
125+
key: rest-api-bundle-${{ github.run_id }}-${{ github.run_number }}
126+
121127
- name: Typecheck packages
122128
run: |
123129
pnpm --filter='./packages/**' --recursive typecheck:ci
@@ -142,7 +148,7 @@ jobs:
142148
uses: ./.github/actions/pnpm-install
143149

144150
- name: Restore dist
145-
uses: actions/cache@v5
151+
uses: actions/cache/restore@v5
146152
with:
147153
path: packages
148154
key: packages-dist-${{ github.run_id }}-${{ github.run_number }}
@@ -188,7 +194,7 @@ jobs:
188194
uses: ./.github/actions/pnpm-install
189195

190196
- name: Restore dist
191-
uses: actions/cache@v5
197+
uses: actions/cache/restore@v5
192198
with:
193199
path: packages
194200
key: packages-dist-${{ github.run_id }}-${{ github.run_number }}
@@ -235,7 +241,7 @@ jobs:
235241
uses: ./.github/actions/pnpm-install
236242

237243
- name: Restore dist
238-
uses: actions/cache@v5
244+
uses: actions/cache/restore@v5
239245
with:
240246
path: packages
241247
key: packages-dist-${{ github.run_id }}-${{ github.run_number }}
@@ -272,7 +278,7 @@ jobs:
272278
uses: ./.github/actions/pnpm-install
273279

274280
- name: Restore dist
275-
uses: actions/cache@v5
281+
uses: actions/cache/restore@v5
276282
with:
277283
path: packages
278284
key: packages-dist-${{ github.run_id }}-${{ github.run_number }}
@@ -299,7 +305,7 @@ jobs:
299305
codeimage-website-pr-{{PR_NUMBER}}.vercel.app
300306
301307
- name: Cache website
302-
uses: actions/cache@v5
308+
uses: actions/cache/save@v5
303309
with:
304310
path: apps/website
305311
key: apps-website-${{ github.run_id }}-${{ github.run_number }}
@@ -317,7 +323,7 @@ jobs:
317323
uses: ./.github/actions/pnpm-install
318324

319325
- name: Restore website
320-
uses: actions/cache@v5
326+
uses: actions/cache/restore@v5
321327
with:
322328
path: apps/website
323329
key: apps-website-${{ github.run_id }}-${{ github.run_number }}
@@ -352,13 +358,17 @@ jobs:
352358
pnpm --filter=@codeimage/api build:ts
353359
pnpm prepare:api:deploy
354360
355-
- name: Cache build
356-
uses: actions/cache@v5
361+
- name: Cache api dist
362+
uses: actions/cache/save@v5
357363
with:
358-
path: |
359-
dist/api-bundle/**
364+
path: apps/api/dist
365+
key: rest-api-bundle-${{ github.run_id }}-${{ github.run_number }}
366+
367+
- name: Cache api bundle
368+
uses: actions/cache/save@v5
369+
with:
370+
path: dist/api-bundle/**
360371
key: rest-api-bundle-${{ github.run_id }}-${{ github.run_number }}
361-
restore-keys: rest-api-bundle-${{ github.run_id }}-${{ github.run_number }}
362372

363373
be-test:
364374
if: ${{ needs.install.outputs.backend-change == 'true' }}
@@ -402,7 +412,7 @@ jobs:
402412
uses: ./.github/actions/pnpm-install
403413

404414
- name: Restore dist
405-
uses: actions/cache@v5
415+
uses: actions/cache/restore@v5
406416
with:
407417
path: |
408418
packages
@@ -436,13 +446,13 @@ jobs:
436446
uses: ./.github/actions/pnpm-install
437447

438448
- name: Restore packages
439-
uses: actions/cache@v5
449+
uses: actions/cache/restore@v5
440450
with:
441451
path: packages
442452
key: packages-dist-${{ github.run_id }}-${{ github.run_number }}
443453

444454
- name: Restore api build
445-
uses: actions/cache@v5
455+
uses: actions/cache/restore@v5
446456
with:
447457
path: |
448458
dist/api-bundle/**

apps/api/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@
3434
"build:ts": "tsdown",
3535
"build:types": "tsc -p tsconfig.schema.json",
3636
"prisma:migrate:dev": "prisma migrate dev",
37-
"prisma:migrate:test": "dotenv -e .env.testing -- prisma migrate dev",
37+
"prisma:migrate:test": "dotenv -e .env.test -- prisma migrate dev",
3838
"prisma:migrate:deploy": "prisma migrate deploy",
39-
"prisma:migrate:deploy-test": "dotenv -e .env.testing -- prisma migrate deploy",
40-
"prisma:migrate:reset-test": "dotenv -e .env.testing -- prisma migrate reset --force",
39+
"prisma:migrate:deploy-test": "dotenv -e .env.test -- prisma migrate deploy",
40+
"prisma:migrate:reset-test": "dotenv -e .env.test -- prisma migrate reset --force",
4141
"prisma:generate": "prisma generate dev && pnpm --filter=@codeimage/prisma-models build",
4242
"docker:dev": "docker compose -f docker-compose.dev.yml up"
4343
},
@@ -70,7 +70,7 @@
7070
"@prisma/adapter-pg": "7.5.0",
7171
"@types/node": "catalog:next",
7272
"@types/sinon": "^21.0.0",
73-
"@vitest/ui": "^4.1.1",
73+
"@vitest/ui": "^4.1.2",
7474
"concurrently": "^9.2.1",
7575
"fastify-tsconfig": "^3.0.0",
7676
"oxfmt": "catalog:next",
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
import * as sinon from 'sinon';
2-
import {assert, test} from 'vitest';
1+
import {expect, test, vi} from 'vitest';
32
import {HandlerBuilder} from '../../../src/common/domainFunctions/builder.js';
43

54
test('create handler', async () => {
6-
const fn = sinon.fake();
5+
const fn = vi.fn();
76

87
const handler = HandlerBuilder.withDependencies<string>()
98
.withName('name')
@@ -14,5 +13,5 @@ test('create handler', async () => {
1413
// oxlint-disable-next-line typescript/no-explicit-any
1514
handler('test-deps', {} as any)(1);
1615

17-
assert(fn.calledWith(1, 'test-deps'));
16+
expect(fn).toHaveBeenCalledWith(1, 'test-deps');
1817
});

apps/api/test/modules/preset/handlers/create.test.ts

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import type {DomainHandlerMap, ResolvedDomainHandlerMap} from '@api/domain';
22
import type {Preset} from '@codeimage/prisma-models';
3-
import * as sinon from 'sinon';
4-
import {assert, beforeEach, expect, test} from 'vitest';
3+
import {assert, beforeEach, expect, test, vi} from 'vitest';
54
import {create} from '../../../../src/modules/preset/handlers/create.js';
65
import type {PresetHandlerDependencies} from '../../../../src/modules/preset/handlers/index.js';
76
import type {PresetCreateDto} from '../../../../src/modules/preset/schema/preset-create-dto.schema.js';
@@ -11,7 +10,7 @@ import {dependencies} from './dependencies.js';
1110

1211
const handlersStub = {} as ResolvedDomainHandlerMap<DomainHandlerMap>;
1312

14-
beforeEach(() => sinon.restore());
13+
beforeEach(() => vi.restoreAllMocks());
1514

1615
test('when findById and found result', async () => {
1716
const id = 'preset-1';
@@ -41,16 +40,16 @@ test('when findById and found result', async () => {
4140
data: testPresetUtils.buildPresetData(),
4241
};
4342

44-
sinon.stub(dependencies.config, 'PRESETS_LIMIT').value(10);
45-
sinon.stub(dependencies.repository, 'countByOwnerId').resolves(0);
43+
vi.spyOn(dependencies.config, 'PRESETS_LIMIT', 'get').mockReturnValue(10);
44+
vi.spyOn(dependencies.repository, 'countByOwnerId').mockResolvedValue(0);
4645

47-
const createStub = sinon
48-
.stub(dependencies.repository, 'create')
49-
.resolves(savedPreset);
46+
const createStub = vi
47+
.spyOn(dependencies.repository, 'create')
48+
.mockResolvedValue(savedPreset);
5049

51-
const fromEntityToDtoStub = sinon
52-
.stub(dependencies.mapper, 'fromEntityToDto')
53-
.resolves(expected);
50+
const fromEntityToDtoStub = vi
51+
.spyOn(dependencies.mapper, 'fromEntityToDto')
52+
.mockResolvedValue(expected);
5453

5554
const result = await create(
5655
dependencies as unknown as PresetHandlerDependencies,
@@ -59,10 +58,14 @@ test('when findById and found result', async () => {
5958
},
6059
)(ownerId, request);
6160

62-
assert.ok(
63-
createStub.calledOnceWithExactly({...request, version: BigInt(1), ownerId}),
64-
);
65-
assert.ok(fromEntityToDtoStub.calledOnceWithExactly(savedPreset));
61+
expect(createStub).toHaveBeenCalledTimes(1);
62+
expect(createStub).toHaveBeenCalledWith({
63+
...request,
64+
version: BigInt(1),
65+
ownerId,
66+
});
67+
expect(fromEntityToDtoStub).toHaveBeenCalledTimes(1);
68+
expect(fromEntityToDtoStub).toHaveBeenCalledWith(savedPreset);
6669

6770
assert.equal(result, expected);
6871
});
@@ -86,24 +89,21 @@ test('throw error when exceed limit', async () => {
8689
ownerId,
8790
};
8891

89-
sinon.stub(dependencies.config, 'PRESETS_LIMIT').value(1);
90-
sinon.stub(dependencies.repository, 'countByOwnerId').resolves(10);
92+
vi.spyOn(dependencies.config, 'PRESETS_LIMIT', 'get').mockReturnValue(1);
93+
vi.spyOn(dependencies.repository, 'countByOwnerId').mockResolvedValue(10);
9194

92-
const createStub = sinon
93-
.stub(dependencies.repository, 'create')
94-
.resolves(savedPreset);
95+
const createStub = vi
96+
.spyOn(dependencies.repository, 'create')
97+
.mockResolvedValue(savedPreset);
9598

96-
const fromEntityToDtoStub = sinon.stub(
97-
dependencies.mapper,
98-
'fromEntityToDto',
99-
);
99+
const fromEntityToDtoStub = vi.spyOn(dependencies.mapper, 'fromEntityToDto');
100100

101101
await expect(
102102
create(dependencies as unknown as PresetHandlerDependencies, {
103103
handlers: handlersStub,
104104
})(ownerId, request),
105105
).rejects.toThrow();
106106

107-
assert.ok(createStub.notCalled);
108-
assert.ok(fromEntityToDtoStub.notCalled);
107+
expect(createStub).not.toHaveBeenCalled();
108+
expect(fromEntityToDtoStub).not.toHaveBeenCalled();
109109
});

apps/api/test/modules/preset/handlers/findById.test.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import type {DomainHandlerMap, ResolvedDomainHandlerMap} from '@api/domain';
22
import type {Preset} from '@codeimage/prisma-models';
3-
import * as sinon from 'sinon';
43
import {assert, beforeEach, expect, test, vi} from 'vitest';
54
import {findById} from '../../../../src/modules/preset/handlers/findById.js';
65
import type {PresetHandlerDependencies} from '../../../../src/modules/preset/handlers/index.js';
@@ -10,7 +9,7 @@ import {dependencies} from './dependencies.js';
109

1110
const handlersStub = {} as ResolvedDomainHandlerMap<DomainHandlerMap>;
1211

13-
beforeEach(() => sinon.restore());
12+
beforeEach(() => vi.restoreAllMocks());
1413

1514
test('when findById and found result', async () => {
1615
const id = 'preset-1';
@@ -52,14 +51,15 @@ test('when findById and return 0 result', async () => {
5251
const ownerId = 'owner-1';
5352
const id = 'preset-1';
5453

55-
sinon
56-
.stub(dependencies.repository, 'findByIdAndOwnerId')
57-
.withArgs(id, ownerId)
58-
.returns(Promise.resolve(null));
54+
const findByIdStub = vi
55+
.spyOn(dependencies.repository, 'findByIdAndOwnerId')
56+
.mockResolvedValue(null);
5957

6058
await expect(
6159
findById(dependencies as unknown as PresetHandlerDependencies, {
6260
handlers: handlersStub,
63-
})('ownerId', id),
61+
})(ownerId, id),
6462
).rejects.toThrow();
63+
64+
expect(findByIdStub).toHaveBeenCalledWith(id, ownerId);
6565
});
Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import type {DomainHandlerMap, ResolvedDomainHandlerMap} from '@api/domain';
2-
import * as sinon from 'sinon';
3-
import {assert, beforeEach, test} from 'vitest';
2+
import {assert, beforeEach, expect, test, vi} from 'vitest';
43
import {findAll} from '../../../../src/modules/preset/handlers/findAll.js';
54
import type {PresetHandlerDependencies} from '../../../../src/modules/preset/handlers/index.js';
65
import type {PresetDto} from '../../../../src/modules/preset/schema/preset-dto.schema.js';
@@ -9,16 +8,16 @@ import {dependencies} from './dependencies.js';
98

109
const handlersStub = {} as ResolvedDomainHandlerMap<DomainHandlerMap>;
1110

12-
beforeEach(() => sinon.restore());
11+
beforeEach(() => vi.restoreAllMocks());
1312

1413
test('when findAll', async () => {
1514
const ownerId = 'owner-1';
1615
const preset1 = PresetTestDataUtils.buildPreset('id1', 'preset', ownerId);
1716
const preset2 = PresetTestDataUtils.buildPreset('id2', 'preset2', ownerId);
1817

19-
const findAllByOwnerIdStub = sinon
20-
.stub(dependencies.repository, 'findAllByOwnerId')
21-
.resolves([preset1, preset2]);
18+
const findAllByOwnerIdStub = vi
19+
.spyOn(dependencies.repository, 'findAllByOwnerId')
20+
.mockResolvedValue([preset1, preset2]);
2221

2322
const expected1 = {
2423
id: preset1.id,
@@ -29,9 +28,9 @@ test('when findAll', async () => {
2928
data: {},
3029
} as PresetDto;
3130

32-
const fromEntityToDtoStub = sinon
33-
.stub(dependencies.mapper, 'fromEntityToDto')
34-
.resolves(expected1);
31+
const fromEntityToDtoStub = vi
32+
.spyOn(dependencies.mapper, 'fromEntityToDto')
33+
.mockResolvedValue(expected1);
3534

3635
const result = await findAll(
3736
dependencies as unknown as PresetHandlerDependencies,
@@ -40,7 +39,8 @@ test('when findAll', async () => {
4039
},
4140
)(ownerId);
4241

43-
assert.ok(findAllByOwnerIdStub.calledOnceWithExactly(ownerId));
44-
assert.ok(fromEntityToDtoStub.calledTwice);
42+
expect(findAllByOwnerIdStub).toHaveBeenCalledTimes(1);
43+
expect(findAllByOwnerIdStub).toHaveBeenCalledWith(ownerId);
44+
expect(fromEntityToDtoStub).toHaveBeenCalledTimes(2);
4545
assert.equal(result.length, 2);
4646
});

0 commit comments

Comments
 (0)