Skip to content

Commit 5795575

Browse files
committed
added test angular in project.
1 parent f5eb185 commit 5795575

File tree

5 files changed

+218
-43
lines changed

5 files changed

+218
-43
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import { DatabaseCreatorContract } from "../../model/database-creator-contract";
2+
import { DatabaseObject, DatabaseResult, DatabaseTransaction } from "database-builder";
3+
import { DatabaseConfig } from "../../model/database-config";
4+
5+
export class DatabaseCreatorFake implements DatabaseCreatorContract {
6+
7+
create(config: DatabaseConfig): Promise<DatabaseObject> {
8+
console.log("Database Fake! \\o/");
9+
return new Promise<DatabaseObject>((resolve, reject) => {
10+
resolve(<DatabaseObject>{
11+
executeSql: (statement: string, params: any): Promise<DatabaseResult> => {
12+
this.executeFake(statement, params);
13+
return new Promise<DatabaseResult>((resolve, reject) => {
14+
resolve(this.resultFake());
15+
});
16+
},
17+
transaction: (fn: (transaction: DatabaseTransaction) => void): Promise<any> => {
18+
return new Promise<any>((resolve, reject) => {
19+
fn(<DatabaseTransaction>{
20+
executeSql: (
21+
sql: string,
22+
values: any,
23+
success: (tx: DatabaseTransaction, result: DatabaseResult) => void,
24+
error: (tx: DatabaseTransaction, error: any) => void
25+
): void => {
26+
this.executeFake(sql, values);
27+
success(void 0, this.resultFake());
28+
},
29+
})
30+
resolve(void 0);
31+
});
32+
}
33+
});
34+
});
35+
}
36+
37+
private executeFake(sql: string, params: any) {
38+
console.log(`sql: ${sql}, params: ${JSON.stringify(params)}`);
39+
}
40+
41+
private resultFake(): DatabaseResult {
42+
return <DatabaseResult>{
43+
rows: {
44+
length: 20,
45+
item: (index: number) => {
46+
return {
47+
index: index
48+
}
49+
}
50+
}
51+
}
52+
}
53+
54+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { TableMapper } from './../mapper/table-mapper';
2+
3+
import { Injector } from '@angular/core';
4+
import { DatabaseSettingsFactoryContract, MappersTableBase } from '../..';
5+
6+
export class DatabaseSettingsFactory extends DatabaseSettingsFactoryContract {
7+
8+
databaseName(injector: Injector): string {
9+
return `database_123`;
10+
}
11+
12+
version(injector: Injector): number {
13+
return 2.0;
14+
}
15+
16+
mapper(injector: Injector): MappersTableBase {
17+
return injector.get(TableMapper);
18+
}
19+
20+
}

src/test/mapper.spec.ts

Lines changed: 88 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,112 @@
1-
import { Classificacao } from "./models/classificacao";
2-
import { SubRegiao } from "./models/sub-regiao";
3-
import { Cidade } from "./models/cidade";
4-
import { Cliente } from "./models/cliente";
5-
import { MappersTableSimple } from "..";
6-
import { DatabaseHelper, Insert } from "database-builder";
7-
import { TestClazz } from "./models/test-clazz";
8-
import { TestClazzRef } from "./models/test-clazz-ref";
9-
import { Uf } from "./models/uf";
10-
import { Regiao } from "./models/regiao";
1+
import { Classificacao } from './models/classificacao';
2+
import { SubRegiao } from './models/sub-regiao';
3+
import { Cidade } from './models/cidade';
4+
import { Cliente } from './models/cliente';
5+
import { Database, DatabaseModule } from '..';
6+
import { TestClazz } from './models/test-clazz';
7+
import { Uf } from './models/uf';
8+
import { Regiao } from './models/regiao';
9+
import { async, TestBed } from '@angular/core/testing';
10+
import { DatabaseMigrationService } from './provider/database-migration-service';
11+
import { DatabaseSettingsFactory } from './factory/database-settings-factory';
12+
import { TableMapper } from './mapper/table-mapper';
13+
import { DatabaseCreatorFake } from './factory/database-creator-fake';
1114

12-
describe("Mapper", () => {
15+
describe('Mapper', () => {
1316

14-
const mapper = new MappersTableSimple(new DatabaseHelper(), {
15-
references: false,
16-
referencesId: true,
17-
referencesIdRecursive: false,
18-
referencesIdColumn: "id"
19-
})
20-
.mapper(
21-
false,
22-
void 0,
23-
void 0,
24-
TestClazz,
25-
TestClazzRef,
26-
Cliente,
27-
Cidade,
28-
Uf,
29-
SubRegiao,
30-
Regiao,
31-
Classificacao
32-
);
17+
beforeEach(async(() => {
18+
TestBed.configureTestingModule({
19+
providers: [
20+
TableMapper
21+
],
22+
imports: [
23+
DatabaseModule.forRoot(
24+
{
25+
useClass: DatabaseSettingsFactory
26+
},
27+
{
28+
useFactory: (mapper: TableMapper) => {
29+
console.log(mapper.getMapper(TestClazz));
30+
return mapper.getMapper(TestClazz) ? true : false;
31+
},
32+
deps: [TableMapper]
33+
// useValue: true
34+
},
35+
{
36+
useClass: DatabaseCreatorFake
37+
// useClass: SQLite
38+
},
39+
DatabaseMigrationService
40+
)
41+
// DatabaseModule.forRootValue(
42+
// // object to simple settings database
43+
// new DatabaseSettingsFactoryDefault(
44+
// 1, // version database
45+
// 'database1', // name database
46+
// // mapper for database
47+
// new MappersTableSimple(new DatabaseHelper(), {
48+
// references: false, // if "true" generate column for serialize object reference to JSON.
49+
// // Example in "TestClazz", create column "testClazzRef" to serialize "TestClazzRef" object
50+
// referencesId: true, // if "true" generate column for id reference.
51+
// // Example in "TestClazz", create column "testClazzRef_id" to save "TestClazzRef" property "id"
52+
// referencesIdRecursive: false, // if "true" generate column for id reference recursive for all references inner.
53+
// referencesIdColumn: 'id' // name id column references
54+
// })
55+
// .mapper(
56+
// false, // readonly
57+
// void 0, // keyColumn: default "id"
58+
// void 0, // default settings constructor
59+
// // Type models for mapper
60+
// TestClazz,
61+
// TestClazzRef,
62+
// Cliente,
63+
// Cidade,
64+
// Uf,
65+
// SubRegiao,
66+
// Regiao,
67+
// Classificacao
68+
// )),
69+
// // implementation of "DatabaseMigrationContract" to estrategy migration upgrade versions database
70+
// DatabaseMigrationService
71+
// )
72+
],
73+
});
74+
}));
3375

3476
const clienteToSave = {
3577
id: 1,
36-
razaoSocial: "Razão",
37-
apelido: "Apelido",
78+
razaoSocial: 'Razão',
79+
apelido: 'Apelido',
3880
cidade: {
3981
id: 2,
40-
nome: "Cidade",
82+
nome: 'Cidade',
4183
uf: {
42-
id: "SC",
43-
nome: "Santa Catarina"
84+
id: 'SC',
85+
nome: 'Santa Catarina'
4486
} as Uf,
4587
subRegiao: {
4688
id: 4,
47-
nome: "Sub Região",
89+
nome: 'Sub Região',
4890
regiao: {
4991
id: 5,
50-
nome: "Região"
92+
nome: 'Região'
5193
} as Regiao
5294
} as SubRegiao,
5395
} as Cidade,
5496
classificacao: {
5597
id: 3,
56-
descricao: "Top"
98+
descricao: 'Top'
5799
} as Classificacao,
58100
desativo: false
59101
} as Cliente;
60102

61-
it("Test mapper insert", () => {
62-
const result = new Insert(Cliente, clienteToSave, mapper.getMapper(Cliente)).compile();
63-
expect(result.params.toString()).toEqual([1, "Razão", "Apelido", false, 2, 3].toString());
64-
expect(result.query).toEqual("INSERT INTO Cliente (id, razaoSocial, apelido, desativo, cidade_id, classificacao_id) VALUES (?, ?, ?, ?, ?, ?)");
65-
});
103+
it('Test mapper insert T', async(() => {
104+
const database: Database = TestBed.get(Database);
105+
database.crud().then(crud => {
106+
const result = crud.insert(Cliente, clienteToSave).compile();
107+
expect(result.params.toString()).toEqual([1, 'Razão', 'Apelido', false, 2, 3].toString());
108+
expect(result.query).toEqual('INSERT INTO Cliente (id, razaoSocial, apelido, desativo, cidade_id, classificacao_id) VALUES (?, ?, ?, ?, ?, ?)');
109+
});
110+
}));
66111

67112
});

src/test/mapper/table-mapper.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { Injectable } from "@angular/core";
2+
import { DatabaseHelperService, MappersTableSimple } from "../..";
3+
import { TestClazzRef } from "../models/test-clazz-ref";
4+
import { TestClazz } from "../models/test-clazz";
5+
import { Cliente } from "../models/cliente";
6+
import { Cidade } from "../models/cidade";
7+
import { Uf } from "../models/uf";
8+
import { SubRegiao } from "../models/sub-regiao";
9+
import { Regiao } from "../models/regiao";
10+
import { Classificacao } from "../models/classificacao";
11+
12+
13+
@Injectable()
14+
export class TableMapper extends MappersTableSimple {
15+
16+
constructor(_databaseHelper: DatabaseHelperService) {
17+
super(
18+
_databaseHelper,
19+
{
20+
references: false,
21+
referencesId: true,
22+
referencesIdRecursive: false,
23+
referencesIdColumn: void 0
24+
}
25+
);
26+
27+
this.mapper(false, void 0, this._defaultSettings,
28+
TestClazz,
29+
TestClazzRef,
30+
Cliente,
31+
Cidade,
32+
Uf,
33+
SubRegiao,
34+
Regiao,
35+
Classificacao
36+
);
37+
}
38+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { Observable } from 'rxjs/Observable';
2+
import { Injectable } from '@angular/core';
3+
import { DatabaseTransaction } from 'database-builder';
4+
import { DatabaseMigrationContract, MappersTableBase, Version } from '../..';
5+
6+
@Injectable()
7+
export class DatabaseMigrationService extends DatabaseMigrationContract {
8+
9+
public to(version: Version, transation: DatabaseTransaction, mappers: MappersTableBase): Observable<any>[] {
10+
const observablesNested: Observable<any>[] = [];
11+
12+
// if (version.oldVersion < 2.0) {
13+
// observablesNested.push(this.migration_v2_0(transation, version, mappers));
14+
// }
15+
16+
return observablesNested;
17+
}
18+
}

0 commit comments

Comments
 (0)