diff --git a/src/api/controllers/collect.spec.ts b/src/api/controllers/collect.spec.ts index b89684916b2c4dddbed03b8d6e5a9eaea8b23697..45bc6d982273ee9016678e710033655a4944e007 100644 --- a/src/api/controllers/collect.spec.ts +++ b/src/api/controllers/collect.spec.ts @@ -27,7 +27,7 @@ import { Fixture as FixPostgres } from "../../../test/postgres/fixture"; import { Fixture as FixMonet } from "../../../test/monet/fixture"; import { MonetAdapter, MonetConfig } from "../../adapter/monet"; import { PostgresAdapter } from "../../adapter/postgres"; - +import { Source } from "../../core/source"; // criar de certa forma tabela e depois excluir apos o teste...??? // comando direto no bd @@ -41,46 +41,22 @@ import { PostgresAdapter } from "../../adapter/postgres"; describe("API collect controller", () => { // Initializing let config: any; - // let adapter: Adapter; + let adapter: Adapter; let fixture; before(function (done): void { // Arrow function not used to get acces to this and skip the test config = ConfigParser.parse("config/test.yaml"); if (config.adapter === "postgres") { fixture = new FixPostgres(config.connection); - fixture.LoadSource(config.sources, config.struct.create); - // if (err) { - // throw err; - // } - // adapter = new PostgresAdapter(config.connection); - // done(); - // }); - + fixture.LoadSource(config.sources, config.struct.create, (err) => { + if (err) { + throw err; + } + adapter = new PostgresAdapter(config.connection); + done(); + }); } - done(); }); - // else if (config.adapter === "monet") { - // fixture = new FixMonet(config.connection); - // fixture.load(config.loadViews, config.struct.create, (err) => { - // if (err) { - // throw err; - // } - // let parsedConfig: MonetConfig = { - // user: config.connection.user, - // dbname: config.connection.database, - // password: config.connection.password, - // host: config.connection.host, - // port: config.connection.port - // }; - // adapter = new MonetAdapter(parsedConfig); - // done(); - // }); - // } - // else { - // this.skip(); - // } - // }); - // Tests it("should respond 500 since the req.params.class does not exist on Sources", (done) => { request(server) .post("/v1/collect/thisisjustatest") @@ -258,15 +234,15 @@ describe("API collect controller", () => { }) .end(done); }); - it("should respond 500 failed to insert since source_4 isn't on postgres", (done) => { + it("should respond 200 sucessfull insertion of source_4", (done) => { request(server) .post("/v1/collect/source_4") .send({"fields_0" : 1 , "fields_1" : 95.5 , "fields_2" : "teste" , "fields_3" : true , "fields_4" : "1999-10-10"}) - .expect(500) + .expect(200) .expect((res: any) => { - const message = "Insertion has failed"; + const message = "Data has been successfully receibed and stored by the server"; expect(res.body).to.be.an("object"); expect(res.body).to.have.property("message"); expect(res.body.message).to.be.eql(message); @@ -274,7 +250,7 @@ describe("API collect controller", () => { }) .end(done); }); - it("should respond 500 the dataType does not exist", (done) =>{ + it("should respond 500 the dataType does not exist", (done) => { request(server) .post("/v1/collect/source_2") .send({"fields_0" : 1 }) @@ -291,4 +267,14 @@ describe("API collect controller", () => { }) .end(done); }); + // it("should respond 500 since source_9999 does not exist on postgres", (done) => { + // let source: Source; + // source = "['name': 'source_9999','description':'nothing herer ', 'fields' : [{'name' : 'field_0', 'description':'nothing here', 'dataType' : 'string'}]]"; + // let query: any = "[{'fields_0': 'batata }]"; + // adapter.insertIntoSource(null, query, (err, result) => { + // + // }); + // + // done(); + // }); }); diff --git a/test/postgres/fixture.ts b/test/postgres/fixture.ts index c77f048de16e865edef7be5387dfef151e52824c..0d0af09e97590e694131dbcf396b79563d8b039a 100644 --- a/test/postgres/fixture.ts +++ b/test/postgres/fixture.ts @@ -20,7 +20,7 @@ import { Client, PoolConfig } from "pg"; import { View, LoadView } from "../../src/core/view"; -import { Source, Field } from "../../src/core/source"; +import { Source } from "../../src/core/source"; import { each, series } from "async"; import * as fs from "fs"; @@ -114,7 +114,7 @@ export class Fixture { case "boolean": return "BOOLEAN"; default: - return ""; + return "TEXT"; } } @@ -155,17 +155,38 @@ export class Fixture { } return transaction; } - public LoadSource(source: Source[], create: boolean): void { - // console.log(source); + public LoadSource(source: Source[], create: boolean , cb: (err: Error) => void): void { + + let client = new Client(this.config); let query: string[] = []; for (let i = 0; i < source.length; i++ ){ - query[i] = this.ExtractData(source[i]); - // console.log(query[i]); + query[i] = this.ExtractData(source[i], create); } + client.connect((error) => { + if (error) { + cb(error); + return; + } + + series([(callback: (err: Error) => void) => { + each(query, (insere, cback) => { + return client.query(insere , [], (err: Error) => cback(err)); + }, (errQuery: Error) => callback(errQuery)); + }], (errQuery: Error) => { + if (errQuery) { + client.end(); + cb(errQuery); + } + client.end((err) => { + cb(err); + }); + }); + }); + } - private ExtractData(data: Source): string{ + private ExtractData(data: Source , create: boolean): string{ let name: string; let type: string[]; let fields: string[]; @@ -175,16 +196,19 @@ export class Fixture { type = data.fields.map((item) => item.dataType); fields = data.fields.map((item) => item.name); + if (create){ consult = "CREATE TABLE " + name + " ("; - consult = consult.concat(type.join(",") + text.join(",")) - // consult = consult.concat(colums.join(",")); - // consult = consult.concat(") VALUES ('"); - // consult = consult.concat(values.join("' , '")); - // consult = consult.concat("');"); - - console.log(name); + for (let i = 0; i < fields.length; i++){ + fields[i] = fields[i].concat(" " + this.typeConvertion(type[i])); + } + consult = consult.concat(fields.join(", ")); + consult = consult.concat(");"); + } + else{ + consult = "TRUNCATE TABLE " + name + ";"; + } - return ; + return consult; } }