Commit 6ec302c8 authored by Gabriel Silva Hermida's avatar Gabriel Silva Hermida

Issue #5: Adicionada rota para ler jogo

Signed-off-by: Gabriel Silva Hermida's avatarGabriel_S <gash18@inf.ufpr.br>
parent f81737bb
Pipeline #22059 passed with stage
in 1 minute and 43 seconds
......@@ -63,7 +63,7 @@ export class DBHandler {
const nomes: string[] = [];
if (argument === "jogos" ) {
for (let i = 0; i < this.jogos.length; ++i) {
nomes.push(this.jogos[i].getname());
nomes.push(this.jogos[i].getName());
}
return nomes;
}
......@@ -75,7 +75,7 @@ export class DBHandler {
}
if (argument === "jogadores") {
for (let i = 0; i < this.jogadores.length; ++i) {
nomes.push(this.jogadores[i].getname());
nomes.push(this.jogadores[i].getName());
}
return nomes;
}
......
......@@ -14,10 +14,10 @@ export class Compra {
}
public writeinfo(): string {
if (this.buyer === this.owner) {
return "O jogador " + this.buyer.getname() + " comprou o jogo " + this.game.getname() + " para ele mesmo." + " Preço: " + this.game.getprice() + "R$" + " Data: " + this.date + ".";
return "O jogador " + this.buyer.getName() + " comprou o jogo " + this.game.getName() + " para ele mesmo." + " Preço: " + this.game.getPrice() + "R$" + " Data: " + this.date + ".";
}
else {
return "O jogador " + this.buyer.getname() + " comprou o jogo " + this.game.getname() + " para o jogador " + this.owner.getname() + " Preço: " + this.game.getprice() + "R$" + " Data: " + this.date + ".";
return "O jogador " + this.buyer.getName() + " comprou o jogo " + this.game.getName() + " para o jogador " + this.owner.getName() + " Preço: " + this.game.getPrice() + "R$" + " Data: " + this.date + ".";
}
}
}
......@@ -9,11 +9,11 @@ export class Jogador {
this.name = name;
this.jogos = [];
for (const jogo of jogos) {
this.jogos.push(jogo.getname());
this.jogos.push(jogo.getName());
}
this.amigos = [];
for (const amigo of amigos) {
this.amigos.push(amigo.getname());
this.amigos.push(amigo.getName());
}
this.carteira = carteira;
......@@ -21,26 +21,26 @@ export class Jogador {
public writeinfo(): string {
return "nome: " + this.name + " carteira: " + this.carteira + "R$" + " jogos: " + this.jogos + " amigos: " + this.amigos + ".";
}
public getname(): string{
public getName(): string{
return this.name;
}
public getmoney(): number {
return this.carteira;
}
public buy(jogo: Jogo, jogador: Jogador): number {
if (this.carteira < jogo.getprice()) {
if (this.carteira < jogo.getPrice()) {
return 2;
}
if (this.name === jogador.getname()) {
if (this.name === jogador.getName()) {
if (this.jogos.some((value: string) => {
return value === jogo.getname();
return value === jogo.getName();
})) {
return 4;
}
return 0;
} else {
if (jogador.library().some((value: string) => {
return value === jogo.getname();
return value === jogo.getName();
})) {
return 3;
}
......@@ -50,12 +50,12 @@ export class Jogador {
public addfriend(jogador: Jogador) {
if (this.amigos.some((value1: string) => {
console.log(jogador.getname());
return value1 === jogador.getname();
console.log(jogador.getName());
return value1 === jogador.getName();
})) {
return "Este jogador já foi adicionado.";
}
this.amigos.push(jogador.getname());
this.amigos.push(jogador.getName());
return "Jogador adicionado com sucesso.";
}
public library(): string[] {
......@@ -68,7 +68,7 @@ export class Jogador {
return this.carteira = this.carteira - amout;
}
public addgame(game: Jogo) {
return this.jogos.push(game.getname());
return this.jogos.push(game.getName());
}
public balance(): string {
return "Balanço da carteira de " + this.name + ": " + this.carteira + "R$";
......
interface JogoOpts {
name: string;
developer: string;
producer: string;
release: Date;
price: number;
// publisher?: string;
}
export class Jogo {
private name: string;
private developer: string;
......@@ -13,13 +22,29 @@ export class Jogo {
this.price = price;
}
public writeinfo(): string {
return "nome: " + this.name + " preço: " + this.price + " desenvolvedora: " + this.developer + " produtora: " + this.producer + " lançamento: " + this.release + ".";
public writeinfo(): JogoOpts {
return {
name: this.name
, developer: this.developer
, producer: this.producer
, release: this.release
, price: this.price
};
}
public getname(): string {
public getName(): string {
return this.name;
}
public getprice(): number {
public getDeveloper(){
return this.developer;
}
public getProducer(){
return this.producer;
}
public getRelease(){
return this.release;
}
public getPrice(): number {
return this.price;
}
}
import { expect } from "chai";
import * as request from "supertest";
import * as server from "./main";
import { Jogo } from "./jogo";
describe("Arquivo main.ts", () => {
// Testa a função que lista os jogadores, com app.get("/jogadores")
it("Deveria listar os jogadores com sucesso", (done) => {
request(server)
.get("/jogadores")
......@@ -17,7 +17,7 @@ describe("Arquivo main.ts", () => {
})
.end(done);
});
// Testa a função que lista os jogos alocados no BD com app.get("/jogos")
it("Deveria listar os jogos com sucesso", (done) => {
request(server)
.get("/jogos")
......@@ -30,6 +30,7 @@ describe("Arquivo main.ts", () => {
})
.end(done);
});
// Testa o caso de falha em inserir um jogo no BD, com app.post("/jogo")
it("Fracassa em inserir um jogo", (done) => {
request(server)
.post("/jogo")
......@@ -43,6 +44,7 @@ describe("Arquivo main.ts", () => {
})
.end(done);
});
// Testa a função de inserção de um jogo no BD, com app.post("/jogo")
it("Insere um jogo", (done) => {
request(server)
.post("/jogo")
......@@ -53,7 +55,60 @@ describe("Arquivo main.ts", () => {
expect(res.body).to.have.property("msg");
expect(res.body.msg).to.be.an("string");
expect(res.body.msg).to.be.eql("Sucesso");
})
})
.end(done);
});
// Testa o caminho de app.get("/jogo/:id") para retornar todas as infos do jogo.
it("Infos do jogo", (done) => {
request(server)
.get("/jogo/1")
.expect(200)
.expect((res: any) => {
expect(res.body).to.be.an("object");
expect(res.body).to.have.property("name");
expect(res.body.name).to.be.an("string");
expect(res.body.name).to.be.eql("Tera");
expect(res.body).to.have.property("developer");
expect(res.body.developer).to.be.an("string");
expect(res.body.developer).to.be.eql("FracassoXD");
expect(res.body).to.have.property("producer");
expect(res.body.producer).to.be.an("string");
expect(res.body.producer).to.be.eql("FracassoXD");
expect(res.body).to.have.property("release");
expect(res.body.release).to.be.an("string");
expect(res.body.release).includes("2010-01-01");
expect(res.body).to.have.property("price");
expect(res.body.price).to.be.an("number");
expect(res.body.price).to.be.eql(0);
})
.end(done);
});
// Testando erro em app.get("/jogo/:id")
it("Fracassa em dar as infos do jogo", (done) => {
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");
});
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(done);
});
});
......@@ -72,7 +72,7 @@ app.get("/compras", (req: Request, res: express.Response) => {
app.get("/comprar", (req: Request, res: express.Response) => {
if (req.db.readplayer(0).buy(req.db.readgame(0), req.db.readplayer(0)) === 0){
const compra = new Compra(req.db.readplayer(0), req.db.readgame(0), new Date("2019-01-01"), req.db.readplayer(0));
req.db.readplayer(0).newmoney(req.db.readgame(0).getprice());
req.db.readplayer(0).newmoney(req.db.readgame(0).getPrice());
req.db.readplayer(0).addgame(req.db.readgame(0));
req.db.createbuy(compra);
res.json(req.db.readbuy(0).writeinfo() + req.db.readplayer(0).balance());
......@@ -89,12 +89,12 @@ app.get("/comprar/amigo", (req: Request, res: express.Response) => {
}
if (req.db.readplayer(0).buy(req.db.readgame(0), req.db.readplayer(1)) === 1) {
const compra = new Compra(req.db.readplayer(0), req.db.readgame(0), new Date("2019-01-01"), req.db.readplayer(1));
req.db.readplayer(0).newmoney(req.db.readgame(0).getprice());
req.db.readplayer(0).newmoney(req.db.readgame(0).getPrice());
req.db.readplayer(1).addgame(req.db.readgame(0));
req.db.createbuy(compra);
res.json(req.db.readbuy(0).writeinfo() + req.db.readplayer(0).balance());
} else if (req.db.readplayer(0).buy(req.db.readgame(0), req.db.readplayer(1)) === 3) {
res.json("O jogador " + req.db.readplayer(1).getname() + " já possui este jogo.");
res.json("O jogador " + req.db.readplayer(1).getName() + " já possui este jogo.");
}
});
......@@ -114,18 +114,31 @@ app.get("/adicionar/saldo", (req: Request, res: express.Response) => {
const saldo = 200;
req.db.readplayer(0).addcredit(saldo);
console.log(req.db.readplayer(0).getmoney());
res.json("O jogador " + req.db.readplayer(0).getname() + " adicionou " + saldo + "R$");
res.json("O jogador " + req.db.readplayer(0).getName() + " adicionou " + saldo + "R$");
});
app.post("/jogo", (req: Request, res: express.Response) => {
if (!(req.body.nome && req.body.dev && req.body.producer && req.body.release && req.body.price)) {
res.status(400).json({msg: "Alguns parâmetros não foram informados"});
return;
}
// posteriormente, fazer comparação de tipos
const game: Jogo = new Jogo(req.body.nome, req.body.dev, req.body.producer, new Date(req.body.release), req.body.price);
req.db.creategame(game);
res.json({msg: "Sucesso"});
});
app.get("/jogo/:id", (req: Request, res: express.Response) => {
const id: number = Math.abs(parseInt(req.params.id, 10));
if (isNaN(id)){
res.status(400).json({msg: "Busca inapropriada"});
return;
}
if (id > req.db.list("jogos").length){
res.status(400).json({msg: "O jogo não existe no banco"});
return;
}
res.json(req.db.readgame(id).writeinfo());
});
app.listen(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