Commit 3b192880 authored by Gianfranco Harres's avatar Gianfranco Harres

Merge branch 'issue/17' into 'develop'

Issue #17: Adicionada rota para listar amigos em comum

Closes #17

See merge request !20
parents b4504a8d 7677c54b
Pipeline #22323 passed with stage
in 1 minute and 30 seconds
......@@ -39,8 +39,9 @@ export class DBHandler {
)
/** Jogador 2, 3 e 4 com seus atributos -> 0 jogos, 0 amigo e fundos específicos */
, new Jogador("Player2", [], [], 100)
, new Jogador("Player3", [], [], 400)
, new Jogador("Player3", [], [], 110)
, new Jogador("Player4", [], [], 400)
, new Jogador("Player5", [], [], 0)
];
/** Populando o banco de jogos com alguns objetos */
this.jogos = [
......
......@@ -11,8 +11,8 @@ describe("Arquivo main.ts", () => {
.expect(200)
.expect((res: any) => {
expect(res.body).to.be.an("array");
expect(res.body).to.have.length(4);
for (let i = 0; i < 4; ++i) {
expect(res.body).to.have.length(5);
for (let i = 0; i < 5; ++i) {
expect(res.body[i]).to.be.eql("Player" + (i + 1));
}
})
......@@ -723,7 +723,7 @@ describe("Arquivo main.ts", () => {
})
.end(done);
});
// Testa a listagem de amigos com sucesso
// Testa a listagem de amigos com sucesso
it("Sucesso em listar amigos", (done) => {
request(server)
.get("/amigo/0")
......@@ -777,4 +777,111 @@ describe("Arquivo main.ts", () => {
})
.end(done);
});
// Prepara amigos para verificar a função de amigos em comum
it("PREPARA", (done) => {
request(server)
.post("/jogador/4/1")
.end(done);
});
it("PREPARA", (done) => {
request(server)
.post("/jogador/3/1")
.end(done);
});
// Testa rota apra listar amigos em comum
it("Sucesso em listar amigos em comum", (done) => {
request(server)
.get("/amigo/3/4")
.expect(200)
.expect((res: any) => {
expect(res.body).to.be.an("object");
expect(res.body).to.have.property("amigos");
expect(res.body.amigos).to.be.an("array");
const esperadoAmigos = ["Diavolo"];
expect(res.body.amigos).to.have.length(esperadoAmigos.length);
for (let i = 0; i < esperadoAmigos.length; ++i) {
expect(res.body.amigos[i]).to.be.eql(esperadoAmigos[i]);
}
})
.end(done);
});
// Testa falha em ler amigos em comum
it("Falha em ler amigos em comum - primeiro jogador inválido", (done) => {
request(server)
.get("/amigo/asadelta/2")
.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("Primeiro jogador inválido");
})
.end(done);
});
it("Falha em ler amigos em comum - segundo jogador inválido", (done) => {
request(server)
.get("/amigo/0/asadelta")
.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("Segundo jogador inválido");
})
.end(done);
});
it("Falha em ler amigos em comum - primeiro jogador não existe no banco", (done) => {
request(server)
.get("/amigo/2341243124/2")
.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("Primeiro jogador não existe no banco");
})
.end(done);
});
it("Falha em ler amigos em comum - segundo jogador não existe no banco", (done) => {
request(server)
.get("/amigo/0/123432442")
.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("Segundo jogador não existe no banco");
})
.end(done);
});
// Desfaz as alterações de inserção
it("DESFAZ", (done) => {
request(server)
.delete("/amizade/3/1")
.end(done);
});
it("DESFAZ", (done) => {
request(server)
.delete("/amizade/4/1")
.end(done);
});
// Testa se não há amigos em comum
it("Testa se não há amigos em comum", (done) => {
request(server)
.get("/amigo/3/4")
.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("Não há amigos em comum");
})
.end(done);
});
});
......@@ -359,5 +359,42 @@ app.get("/amigo/:idA", (req: Request, res: express.Response) => {
res.json({friends: Player.getFriends()});
});
app.get("/amigo/:idA/:idB", (req: Request, res: express.Response) => {
const idA: number = Math.abs(parseInt(req.params.idA, 10));
const idB: number = Math.abs(parseInt(req.params.idB, 10));
if (isNaN(idA)) {
res.status(400).json({msg: "Primeiro jogador inválido"});
return;
}
if (isNaN(idB)) {
res.status(400).json({msg: "Segundo jogador inválido"});
return;
}
if (idA >= req.db.list("jogadores").length || idB > req.db.list("jogadores").length) {
res.status(400);
if (idA >= req.db.list("jogadores").length) {
res.json({msg: "Primeiro jogador não existe no banco"});
}
if (idB >= req.db.list("jogadores").length) {
res.json({msg: "Segundo jogador não existe no banco"});
}
return;
}
const PlayerA = req.db.readplayer(idA);
const PlayerB = req.db.readplayer(idB);
const Friends: string[] = PlayerA.getFriends().filter((valueA: string) => {
return PlayerB.getFriends().some((valueB: string) => {
return valueA === valueB;
});
});
if (Friends.length) {
res.json({amigos: Friends});
} else {
res.json({msg: "Não há amigos em comum"});
}
});
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