Commit f6dbdba2 authored by Lucas Fernandes de Oliveira's avatar Lucas Fernandes de Oliveira

Merge branch 'issue/6' into 'develop'

Issue #6: Adicionada rota para atualizar jogo

Closes #6

See merge request !7
parents 835a261d 65708274
Pipeline #22082 passed with stage
in 43 seconds
......@@ -135,6 +135,11 @@
"to-fast-properties": "^2.0.0"
}
},
"@types/async": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@types/async/-/async-3.0.3.tgz",
"integrity": "sha512-FrIcC67Zpko1jO8K4d30C41/KVhAABbMbaSxccvXacxPcKbDBav+8WoFzv72BA2zJvyX4T9PFz0we1hcNymgGA=="
},
"@types/body-parser": {
"version": "1.17.1",
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.1.tgz",
......@@ -313,6 +318,11 @@
"integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
"dev": true
},
"async": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/async/-/async-3.1.0.tgz",
"integrity": "sha512-4vx/aaY6j/j3Lw3fbCHNWP0pPaTCew3F6F3hYyl/tHs/ndmV1q7NW9T5yuJ2XAGwdQrP+6Wu20x06U4APo/iQQ=="
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
......
......@@ -36,8 +36,10 @@
"author": "Lucas Fernandes de Oliveira",
"license": "ISC",
"dependencies": {
"@types/async": "^3.0.3",
"@types/express": "^4.17.1",
"@types/pg": "^7.11.2",
"async": "^3.1.0",
"body-parser": "^1.19.0",
"express": "^4.17.1",
"pg": "^7.12.1",
......
import { expect } from "chai";
import * as request from "supertest";
import * as server from "./main";
import * as async from "async";
describe("Arquivo main.ts", () => {
// Testa a função que lista os jogadores, com app.get("/jogadores")
......@@ -91,23 +92,114 @@ describe("Arquivo main.ts", () => {
});
// Testando erro em app.get("/jogo/:id")
it("Fracassa em dar as infos do jogo", (done) => {
async.parallel([
(callback) => {
request(server)
.get("/jogo/1000000000")
.expect(400)
.expect((res: any) => {
expect(res.body).to.be.an("object");
expect(res.body).to.have.property("msg");
expect(res.body.msg).to.be.an("string");
expect(res.body.msg).to.be.eql("O jogo não existe no banco");
})
.end(callback);
}
, (callback) => {
request(server)
.get("/jogo/sahsudhaisdh")
.expect(400)
.expect((res: any) => {
expect(res.body).to.be.an("object");
expect(res.body).to.have.property("msg");
expect(res.body.msg).to.be.an("string");
expect(res.body.msg).to.be.eql("Busca inapropriada");
})
.end(callback);
}
], (err: Error) => {
done(err);
});
});
// Testando o sucesso na atualização do jogo com app.put("/jogo/:id")
it("Atualiza um jogo", (done) => {
request(server)
.get("/jogo/1000000000")
.expect(400)
.put("/jogo/1")
.send({nome: "Path of Exile", dev: "ggg", producer: "Tencent", release: "2013-10-23", price: 0 })
.expect(200)
.expect((res: any) => {
expect(res.body).to.be.an("object");
expect(res.body).to.have.property("msg");
expect(res.body.msg).to.be.an("string");
expect(res.body.msg).to.be.eql("O jogo não existe no banco");
});
expect(res.body.msg).to.be.eql("O jogo foi atulaizado com sucesso.");
})
.end(done);
});
// Testando o erro na atualização do jogo com app.put("/jogo/:id")
it("Falha em atualizar um jogo - nome ", (done) => {
request(server)
.get("/jogo/sahsudhaisdh")
.put("/jogo/1")
.send({nome: undefined, dev: "ggg", producer: "Tencent", release: "2013-10-23", price: 0 })
.expect(400)
.expect((res: any) => {
expect(res.body).to.be.an("object");
expect(res.body).to.have.property("msg");
expect(res.body.msg).to.be.an("string");
expect(res.body.msg).to.be.eql("Busca inapropriada");
expect(res.body).to.have.property("msgN");
expect(res.body.msgN).to.be.an("string");
expect(res.body.msgN).to.be.eql("Nome inválido");
})
.end(done);
});
it("Falha em atualizar um jogo - developer ", (done) => {
request(server)
.put("/jogo/1")
.send({nome: "Path of Exile", dev: undefined, producer: "Tencent", release: "2013-10-23", price: 0 })
.expect(400)
.expect((res: any) => {
expect(res.body).to.be.an("object");
expect(res.body).to.have.property("msgD");
expect(res.body.msgD).to.be.an("string");
expect(res.body.msgD).to.be.eql("Desenvolvedor inválido");
})
.end(done);
});
it("Falha em atualizar um jogo - produtor ", (done) => {
request(server)
.put("/jogo/1")
.send({nome: "Path of Exile", dev: "ggg", producer: undefined, release: "2013-10-23", price: 0 })
.expect(400)
.expect((res: any) => {
expect(res.body).to.be.an("object");
expect(res.body).to.have.property("msgP");
expect(res.body.msgP).to.be.an("string");
expect(res.body.msgP).to.be.eql("Produtor inválido");
})
.end(done);
});
it("Falha em atualizar um jogo - release ", (done) => {
request(server)
.put("/jogo/1")
.send({nome: "Path of Exile", dev: "ggg", producer: "Tencent", release: undefined, price: 0 })
.expect(400)
.expect((res: any) => {
expect(res.body).to.be.an("object");
expect(res.body).to.have.property("msgR");
expect(res.body.msgR).to.be.an("string");
expect(res.body.msgR).to.be.eql("Data inválida");
})
.end(done);
});
it("Falha em atualizar um jogo - preço ", (done) => {
request(server)
.put("/jogo/1")
.send({nome: "Path of Exile", dev: "ggg", producer: "Tencent", release: "2013-10-23", price: undefined })
.expect(400)
.expect((res: any) => {
expect(res.body).to.be.an("object");
expect(res.body).to.have.property("msg$");
expect(res.body.msg$).to.be.an("string");
expect(res.body.msg$).to.be.eql("Preço inválido");
})
.end(done);
});
......
......@@ -141,5 +141,40 @@ app.get("/jogo/:id", (req: Request, res: express.Response) => {
res.json(req.db.readgame(id).writeinfo());
});
app.put("/jogo/:id", (req: Request, res: express.Response) => {
if (typeof req.body.nome !== "string") {
res.status(400).json({msgN: "Nome inválido"});
return;
}
if (typeof req.body.dev !== "string"){
res.status(400).json({msgD: "Desenvolvedor inválido"});
return;
}
if (typeof req.body.producer !== "string") {
res.status(400).json({msgP: "Produtor inválido"});
return;
}
if (typeof req.body.release !== "string") {
res.status(400).json({msgR: "Data inválida"});
return;
}
if (typeof req.body.price !== "number") {
res.status(400).json({msg$: "Preço inválido"});
return;
}
const id: number = Math.abs(parseInt(req.params.id, 10));
if (isNaN(id)){
res.status(400).json({msg: "Busca inapropriada"});
return;
}
const game: Jogo = new Jogo(req.body.nome, req.body.dev, req.body.producer, new Date(req.body.release), req.body.price);
req.db.updategame(id, game);
res.json({msg: "O jogo foi atulaizado com sucesso."});
});
app.listen(3000);
console.log("Server listening on port 3000");
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment