Skip to content

Commit

Permalink
test: fix and update test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
riccardoperra committed Apr 27, 2023
1 parent 9a99209 commit c6ca856
Show file tree
Hide file tree
Showing 9 changed files with 98 additions and 48 deletions.
2 changes: 1 addition & 1 deletion apps/api/src/modules/preset/handlers/create.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {PresetHandlerDependencies} from './';
export const create =
HandlerBuilder.withDependencies<PresetHandlerDependencies>()
.withName('createPreset')
.withImplementation(({repository, mapper, config, logger}) => {
.withImplementation(({repository, mapper, config}) => {
return async (
ownerId: string,
data: PresetCreateDto,
Expand Down
1 change: 0 additions & 1 deletion apps/api/src/modules/preset/handlers/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,4 @@ export type PresetHandlerDependencies = {
repository: PresetRepository;
mapper: PresetMapper;
config: FastifyInstance['config'];
logger: FastifyInstance['log'];
};
1 change: 0 additions & 1 deletion apps/api/src/modules/preset/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ const preset: FastifyPluginAsync = async fastify => {
repository: fastify.presetRepository,
mapper,
config: fastify.config,
logger: fastify.log,
},
fastify.handlerRegistry,
),
Expand Down
61 changes: 46 additions & 15 deletions apps/api/test/modules/preset/handlers/create.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,12 @@ import * as sinon from 'sinon';
import t from 'tap';
import {PresetHandlerDependencies} from '../../../../src/modules/preset/handlers';
import {create} from '../../../../src/modules/preset/handlers/create';
import {PresetMapper} from '../../../../src/modules/preset/mapper';
import {PresetRepository} from '../../../../src/modules/preset/repository';
import {PresetCreateDto} from '../../../../src/modules/preset/schema/preset-create-dto.schema';
import {PresetDto} from '../../../../src/modules/preset/schema/preset-dto.schema';
import {dependencies} from './dependencies';

const handlersStub = {} as ResolvedDomainHandlerMap<DomainHandlerMap>;

const dependencies = {
mapper: {
fromEntityToDto: () => void 0,
} as unknown as PresetMapper,
repository: {
create: () => void 0,
deletePreset: () => void 0,
findByIdAndOwnerId: () => void 0,
update: () => void 0,
findAllByOwnerId: () => void 0,
} as unknown as PresetRepository,
} as const;

t.beforeEach(() => sinon.restore());

t.test('when findById and found result', async t => {
Expand Down Expand Up @@ -51,8 +37,12 @@ t.test('when findById and found result', async t => {
version: 1,
createdAt: savedPreset.createdAt,
updatedAt: savedPreset.updatedAt,
data: {test: true},
};

sinon.stub(dependencies.config, 'PRESETS_LIMIT').value(10);
sinon.stub(dependencies.repository, 'countByOwnerId').resolves(0);

const createStub = sinon
.stub(dependencies.repository, 'create')
.resolves(savedPreset);
Expand All @@ -75,3 +65,44 @@ t.test('when findById and found result', async t => {

t.equal(result, expected);
});

t.test('throw error when exceed limit', async t => {
const id = 'preset-1';
const ownerId = 'owner-1';

const request: PresetCreateDto = {
name: 'presetToCreate',
data: {test: true},
};

const savedPreset: Preset = {
id,
name: request.name,
version: BigInt(1),
createdAt: new Date(),
updatedAt: new Date(),
data: {test: true},
ownerId,
};

sinon.stub(dependencies.config, 'PRESETS_LIMIT').value(1);
sinon.stub(dependencies.repository, 'countByOwnerId').resolves(10);

const createStub = sinon
.stub(dependencies.repository, 'create')
.resolves(savedPreset);

const fromEntityToDtoStub = sinon.stub(
dependencies.mapper,
'fromEntityToDto',
);

await t.rejects(
create(dependencies as unknown as PresetHandlerDependencies, {
handlers: handlersStub,
})(ownerId, request),
);

t.ok(createStub.notCalled);
t.ok(fromEntityToDtoStub.notCalled);
});
21 changes: 21 additions & 0 deletions apps/api/test/modules/preset/handlers/dependencies.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import {FastifyInstance} from 'fastify';
import {PresetHandlerDependencies} from '../../../../src/modules/preset/handlers';
import {PresetMapper} from '../../../../src/modules/preset/mapper';
import {PresetRepository} from '../../../../src/modules/preset/repository';

export const dependencies: PresetHandlerDependencies = {
mapper: {
fromEntityToDto: () => void 0,
} as unknown as PresetMapper,
repository: {
create: () => void 0,
deletePreset: () => void 0,
findByIdAndOwnerId: () => void 0,
update: () => void 0,
findAllByOwnerId: () => void 0,
countByOwnerId: () => void 0,
} as unknown as PresetRepository,
config: {
PRESETS_LIMIT: 20,
} as FastifyInstance['config'],
} as const;
17 changes: 2 additions & 15 deletions apps/api/test/modules/preset/handlers/findById.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,12 @@ import * as sinon from 'sinon';
import t from 'tap';
import {PresetHandlerDependencies} from '../../../../src/modules/preset/handlers';
import {findById} from '../../../../src/modules/preset/handlers/findById';
import {PresetMapper} from '../../../../src/modules/preset/mapper';
import {PresetRepository} from '../../../../src/modules/preset/repository';
import {PresetDto} from '../../../../src/modules/preset/schema/preset-dto.schema';
import {PresetTestDataUtils} from '../data-utils';
import {dependencies} from './dependencies';

const handlersStub = {} as ResolvedDomainHandlerMap<DomainHandlerMap>;

const dependencies = {
mapper: {
fromEntityToDto: () => void 0,
} as unknown as PresetMapper,
repository: {
create: () => void 0,
deletePreset: () => void 0,
findByIdAndOwnerId: () => void 0,
update: () => void 0,
findAllByOwnerId: () => void 0,
} as unknown as PresetRepository,
} as const;

t.beforeEach(() => sinon.restore());

t.test('when findById and found result', async t => {
Expand All @@ -41,6 +27,7 @@ t.test('when findById and found result', async t => {
version: Number(preset.version),
createdAt: preset.createdAt,
updatedAt: preset.updatedAt,
data: {},
} as PresetDto;

const fromEntityToDtoStub = sinon
Expand Down
17 changes: 2 additions & 15 deletions apps/api/test/modules/preset/handlers/getAll.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,12 @@ import * as sinon from 'sinon';
import t from 'tap';
import {PresetHandlerDependencies} from '../../../../src/modules/preset/handlers';
import {findAll} from '../../../../src/modules/preset/handlers/findAll';
import {PresetMapper} from '../../../../src/modules/preset/mapper';
import {PresetRepository} from '../../../../src/modules/preset/repository';
import {PresetDto} from '../../../../src/modules/preset/schema/preset-dto.schema';
import {PresetTestDataUtils} from '../data-utils';
import {dependencies} from './dependencies';

const handlersStub = {} as ResolvedDomainHandlerMap<DomainHandlerMap>;

const dependencies = {
mapper: {
fromEntityToDto: () => void 0,
} as unknown as PresetMapper,
repository: {
create: () => void 0,
deletePreset: () => void 0,
findByIdAndOwnerId: () => void 0,
update: () => void 0,
findAllByOwnerId: () => void 0,
} as unknown as PresetRepository,
} as const;

t.beforeEach(() => sinon.restore());

t.test('when findAll', async t => {
Expand All @@ -40,6 +26,7 @@ t.test('when findAll', async t => {
version: Number(preset1.version),
createdAt: preset1.createdAt,
updatedAt: preset1.updatedAt,
data: {},
} as PresetDto;

const fromEntityToDtoStub = sinon
Expand Down
1 change: 1 addition & 0 deletions apps/api/test/modules/preset/mapper/presetMapper.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ test('fromEntityToDto', async t => {
createdAt: entity.createdAt,
version: Number(entity.version),
name: entity.name,
data: {},
} as PresetDto;

const result = mapper.fromEntityToDto(entity);
Expand Down
25 changes: 25 additions & 0 deletions apps/api/test/routes/v1/preset/create.integration.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,28 @@ t.test('POST /v1/preset [Create Preset] -> 200', async t => {
t.same(response.statusCode, 200, 'return status 200');
t.strictSame(body.name, 'Data');
});

t.test(
'POST /v1/preset [Create Preset] -> Exceed presets limit > 422',
async t => {
const fastify = await build(t);
const createRepositorySpy = sinon.spy(fastify.presetRepository, 'create');
sinon.stub(fastify.config, 'PRESETS_LIMIT').value(-1);

const request: PresetCreateDto = {
name: 'Data',
data: {test: true},
};

const response = await fastify.inject({
url: `/api/v1/preset`,
method: 'POST',
payload: request,
});

response.json<PresetDto>();

t.ok(createRepositorySpy.notCalled);
t.same(response.statusCode, 422, 'return status 422');
},
);

0 comments on commit c6ca856

Please sign in to comment.