1
0

Better org of tests

This commit is contained in:
2020-03-06 13:08:13 -05:00
parent 6c101bb7b2
commit 62ab887ada
4 changed files with 40 additions and 36 deletions

View File

@@ -1,5 +1,8 @@
module.exports = { module.exports = {
roots: ['src'], roots: ['tests'],
moduleNameMapper: {
'src/(.*)': '<rootDir>/src/$1',
},
preset: 'ts-jest', preset: 'ts-jest',
testEnvironment: 'node', testEnvironment: 'node',
coverageReporters: [ coverageReporters: [

View File

@@ -0,0 +1,22 @@
import 'reflect-metadata';
import { Serde } from "src/serde";
import { Exclude } from 'src/decorators';
class ExcludeTestModel extends Serde<ExcludeTestModel> {
name: string;
date: Date;
description: string;
@Exclude() frontendField: string;
}
describe('@Exclude() Decorator', () => {
it('should remove properties marked during serialize', () => {
const testModel = new ExcludeTestModel().deserialize({
name: 'test model',
description: 'this is a test model',
frontendField: 'test field'
});
const serializedModel = testModel.serialize();
expect(serializedModel).toEqual({ name: 'test model', description: 'this is a test model' });
});
});

View File

@@ -1,48 +1,28 @@
import { Serde } from 'src/serde'; import 'reflect-metadata';
import { Exclude, Pluck } from 'src/decorators'; import { Serde } from "src/serde";
import { Pluck } from 'src/decorators';
class ExcludeTestModel extends Serde<ExcludeTestModel> {
name: string;
date: Date;
description: string;
@Exclude() frontendField: string;
}
class PluckArrayTestModel extends Serde<PluckArrayTestModel> { class PluckArrayTestModel extends Serde<PluckArrayTestModel> {
name: string; name: string;
@Pluck(['id']) nestedProperties: { id: number, name: string }[]; @Pluck(['id']) nestedProperties: { id: number, name: string }[];
} }
class PluckArrayTestTwoModel extends Serde<PluckArrayTestTwoModel> { class PluckArrayTestTwoModel extends Serde<PluckArrayTestTwoModel> {
name: string; name: string;
@Pluck('id') nestedProperties: { id: number, name: string }[]; @Pluck('id') nestedProperties: { id: number, name: string }[];
} }
class PluckObjectTestModel extends Serde<PluckObjectTestModel> { class PluckObjectTestModel extends Serde<PluckObjectTestModel> {
name: string; name: string;
@Pluck(['id']) nestedProperty: { id: number, name: string }; @Pluck(['id']) nestedProperty: { id: number, name: string };
} }
class PluckObjectTestTwoModel extends Serde<PluckObjectTestTwoModel> { class PluckObjectTestTwoModel extends Serde<PluckObjectTestTwoModel> {
name: string; name: string;
@Pluck('id') nestedProperty: { id: number, name: string }; @Pluck('id') nestedProperty: { id: number, name: string };
} }
describe('Serde', () => { describe('@Pluck() Decorator', () => {
describe('@Exclude() decorator tests', () => {
it('should remove properties marked during serialize', () => {
const testModel = new ExcludeTestModel().deserialize({
name: 'test model',
description: 'this is a test model',
frontendField: 'test field'
});
const serializedModel = testModel.serialize();
expect(serializedModel).toEqual({ name: 'test model', description: 'this is a test model' });
});
});
describe('@Pluck() decorator tests', () => {
it('should pluck \'id\' (property: T[]) from marked property during serialize', () => { it('should pluck \'id\' (property: T[]) from marked property during serialize', () => {
const testModel = new PluckArrayTestModel().deserialize({ const testModel = new PluckArrayTestModel().deserialize({
name: 'test model', name: 'test model',
@@ -88,5 +68,4 @@ describe('Serde', () => {
const serializedModel = testModel.serialize(); const serializedModel = testModel.serialize();
expect(serializedModel).toEqual({ name: 'test model', nestedProperty: 2 }); expect(serializedModel).toEqual({ name: 'test model', nestedProperty: 2 });
}); });
}); });
});

View File

@@ -22,6 +22,6 @@
] ]
}, },
"include": [ "include": [
"src/**/*", "test/**/*" "src/**/*", "tests/**/*"
] ]
} }