Skip to content

Commit

Permalink
Ref #5 Criar CRUD de Plano
Browse files Browse the repository at this point in the history
  • Loading branch information
HenriqueMariano25 committed Nov 29, 2021
1 parent ebd8068 commit 28de35b
Show file tree
Hide file tree
Showing 7 changed files with 196 additions and 3 deletions.
74 changes: 74 additions & 0 deletions __tests__/integration/plano.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
const request = require("supertest")
const app = require("../../src/app")
const truncate = require("../utils/truncate")
const factory = require("../utils/factories")
const faker = require("faker")

faker.locale = "pt_BR"

describe("CRUD", () => {
beforeEach(async () => {
await truncate()
})

it("deve cadastrar um novo plano", async () => {

const resposta = await request(app)
.post("/plano")
.send({
descricao: faker.company.bs(),
valor: faker.finance.amount()
})

expect(resposta.status).toBe(200)
})

it("não deve cadastrar com dados obrigatorios faltando", async () => {
const resposta = await request(app)
.post("/plano")
.send({})

expect(resposta.status).toBe(400)
})

it("deve editar um plano já criado", async () => {
const plano = await factory.create("Plano")

const resposta = await request(app)
.put(`/plano/${plano.id}`)
.send({
descricao: faker.company.bs(),
valor: faker.finance.amount()
})

expect(resposta.status).toBe(200)
})

it("deve deletar um plano já criado", async () => {
const plano = await factory.create("Plano")

const resposta = await request(app)
.delete(`/plano/${plano.id}`)

expect(resposta.status).toBe(200)
})

it("deve buscar todos os planos", async()=> {
await factory.create("Plano")
await factory.create("Plano")

const resposta = await request(app)
.get("/planos")

expect(resposta.status).toBe(200)
})

it("deve buscar os dados de um plano", async()=> {
const plano = await factory.create("Plano")

const resposta = await request(app)
.get(`/plano/${plano.id}`)

expect(resposta.status).toBe(200)
})
})
13 changes: 10 additions & 3 deletions __tests__/utils/factories.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
const {factory} = require("factory-girl")
const { Cliente, Usuario, Perito } = require("../../src/models")
const {Cliente, Usuario, Perito, Plano} = require("../../src/models")
const faker = require("faker")

faker.locale = "pt_BR"

factory.define("Cliente", Cliente, async () =>{
factory.define("Cliente", Cliente, async () => {
return {
nome: faker.name.findName(),
email: faker.internet.email(),
Expand All @@ -22,10 +22,17 @@ factory.define("Usuario", Usuario, async () => {
}
})

factory.define("Perito", Perito, async () =>{
factory.define("Perito", Perito, async () => {
return {
nome: faker.name.findName(),
}
})

factory.define("Plano", Plano, async () => {
return {
descricao: faker.company.bs(),
valor: faker.finance.amount()
}
})

module.exports = factory
1 change: 1 addition & 0 deletions src/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ class AppController{
routes(){
this.express.use(require("./routes/clienteRouter"))
this.express.use(require("./routes/peritoRouter"))
this.express.use(require("./routes/planoRouter"))
this.express.use(require("./routes/usuarioRouter"))
}
}
Expand Down
51 changes: 51 additions & 0 deletions src/controllers/PlanoController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
const {Plano} = require("../models");

class PlanoController {
async cadastrar(req, res) {
let {descricao, valor} = req.body

if (!descricao || !valor)
return res.status(400).json({message: "Dados obrigatorios faltando"})

let plano = await Plano.create({descricao, valor})

return res.status(200).json({plano: plano})
}

async editar(req, res) {
let {descricao, valor} = req.body
let {id} = req.params

let plano = await Plano.findOne({where: {id}})

await plano.update({descricao, valor})

return res.status(200).json({plano: plano})
}

async deletar(req, res) {
let {id} = req.params

let plano = await Plano.findOne({where: {id}})

await plano.destroy()

return res.status(200).json({plano: plano})
}

async buscarTodos(req, res) {
let planos = await Plano.findAll()

return res.status(200).json({planos: planos})
}

async buscar(req, res) {
let {id} = req.params

let plano = await Plano.findOne({where: {id}})

return res.status(200).json({plano: plano})
}
}

module.exports = new PlanoController()
34 changes: 34 additions & 0 deletions src/database/migrations/20211129151251-Plano.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
'use strict';

module.exports = {
up: async (queryInterface, Sequelize) => {
return queryInterface.createTable("Plano", {
id: {
type: Sequelize.INTEGER,
allowNull: false,
autoIncrement: true,
primaryKey: true
},
descricao:{
type: Sequelize.STRING,
allowNull:false,
},
valor:{
type: Sequelize.STRING,
allowNull:false,
},
created_at:{
type: Sequelize.DATE,
allowNull: false
},
updated_at:{
type: Sequelize.DATE,
allowNull: false
},
})
},

down: async (queryInterface, Sequelize) => {
return queryInterface.dropTable('Plano')
}
};
12 changes: 12 additions & 0 deletions src/models/Plano.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
module.exports = (sequelize, DataTypes) => {
const Plano = sequelize.define("Plano", {
descricao: DataTypes.STRING,
valor: DataTypes.STRING,
},
{
freezeTableName: true,
}
)

return Plano
}
14 changes: 14 additions & 0 deletions src/routes/planoRouter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
const routes = require("express").Router()
const PlanoController = require("../controllers/PlanoController")

routes.post('/plano', PlanoController.cadastrar)

routes.put("/plano/:id", PlanoController.editar)

routes.delete("/plano/:id", PlanoController.deletar)

routes.get("/planos", PlanoController.buscarTodos)

routes.get("/plano/:id", PlanoController.buscar)

module.exports = routes

0 comments on commit 28de35b

Please sign in to comment.