From aca96360853ded1a85f8569621e5d588f2ec7288 Mon Sep 17 00:00:00 2001
From: RichardHeise <rfhf19@inf.ufpr.br>
Date: Thu, 17 Oct 2019 12:12:29 -0300
Subject: [PATCH] Issue #3: Adicionado rota para listar jogos

Signed-off-by: RichardHeise <rfhf19@inf.ufpr.br>
---
 src/DBHandler.ts |  9 +++++++++
 src/main.spec.ts | 47 +++++++++++++++++++++++++++++++++++++++++++----
 src/main.ts      | 14 +++++++++-----
 3 files changed, 61 insertions(+), 9 deletions(-)

diff --git a/src/DBHandler.ts b/src/DBHandler.ts
index 3d65fe6..c9560c8 100644
--- a/src/DBHandler.ts
+++ b/src/DBHandler.ts
@@ -12,6 +12,15 @@ export class DBHandler {
             , new Jogador("Player2", [], [], 100.0)
         ];
         this.jogos = [];
+
+        this.jogadores = [
+            new Jogador("Player1", [], [], 0.0)
+            , new Jogador("Player2", [], [], 100.0)
+        ];
+        this.jogos = [ 
+            new Jogo("Overcooked", "fracasso", "fracasso", new Date("2010-01-01"), 200),
+            new Jogo("Tera", "FracassoXD", "FracassoXD", new Date("2010-01-01"), 0)
+        ];
         this.compras = [];
     }
     public createplayer(player: Jogador) {
diff --git a/src/main.spec.ts b/src/main.spec.ts
index d849d00..d3b2699 100644
--- a/src/main.spec.ts
+++ b/src/main.spec.ts
@@ -1,9 +1,9 @@
 import { expect } from "chai";
 import * as request from "supertest";
 import * as server from "./main";
+import { Jogo } from "./jogo";
 
 describe("Arquivo main.ts", () => {
-
     it("Deveria listar os jogadores com sucesso", (done) => {
         request(server)
             .get("/jogadores")
@@ -11,11 +11,50 @@ describe("Arquivo main.ts", () => {
             .expect((res: any) => {
                 expect(res.body).to.be.an("array");
                 expect(res.body).to.have.length(2);
-                for (let i =0; i < 2; ++i) {
-                    expect(res.body[i]).to.be.eql("Player" + (i+1));
+                for (let i = 0; i < 2; ++i) {
+                    expect(res.body[i]).to.be.eql("Player" + (i + 1));
                 }
             })
-            .end(done);
+        .end(done);
     });
 
+    it("Deveria listar os jogos com sucesso", (done) => {
+        request(server)
+            .get("/jogos")
+            .expect(200)
+            .expect((res: any) => {
+                expect(res.body).to.be.an("array");
+                expect(res.body).to.have.length(2);
+                expect(res.body[0]).to.be.eql("Overcooked");
+                expect(res.body[1]).to.be.eql("Tera");
+            })
+            .end(done);
+    });
+    it("Fracassa em inserir um jogo", (done) => {
+        request(server)
+            .post("/jogo")
+            .send({nome: "Overcooked", dev: "fracasso", producer: undefined, rel: undefined, price: 20 })
+            .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("Alguns parâmetros não foram informados");
+            })
+            .end(done);
+    });
+    it("Insere um jogo", (done) =>  {
+        request(server)
+            .post("/jogo")
+            .send({nome: "Overcooked", dev: "fracasso", producer: "fracasso2", release: "2010-01-01", price: 20 })
+            .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("Sucesso");
+        })
+        .end(done);
+    });
 });
diff --git a/src/main.ts b/src/main.ts
index 52e1ab3..621d52d 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -1,6 +1,6 @@
 #!/usr/bin/env node
-import * as express from "express";
 import * as bodyParser from "body-parser";
+import * as express from "express";
 import { Compra } from "./compra";
 import { DBHandler } from "./DBHandler";
 import { Jogador } from "./jogador";
@@ -58,7 +58,7 @@ app.get("/perfil/:nome", (req: Request, res: express.Response) => {
     res.json(req.db.readplayer(ID).writeinfo());
 });
 
-app.get("/catalogo", (req: Request, res: express.Response) => {
+app.get("/jogos", (req: Request, res: express.Response) => {
     res.json(req.db.list("jogos"));
 });
 
@@ -118,11 +118,15 @@ app.get("/adicionar/saldo", (req: Request, res: express.Response) => {
     res.json("O jogador " + req.db.readplayer(0).getname() + " adicionou " + saldo + "R$");
 });
 
-app.post("/adicionar-jogos", (req: Request, res: express.Response) => {
+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"});
+    }
+    // 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);
-    console.log(req.db.readgame(0).writeinfo());
-    res.json(game.writeinfo());
+    res.json({msg: "Sucesso"});
+
 });
 
 app.listen(3000);
-- 
GitLab