Skip to content

Commit

Permalink
Ref #11 Adicionar tipo de Usuario
Browse files Browse the repository at this point in the history
  • Loading branch information
HenriqueMariano25 committed Dec 2, 2021
1 parent d2154ef commit 2c94083
Show file tree
Hide file tree
Showing 9 changed files with 152 additions and 62 deletions.
8 changes: 6 additions & 2 deletions __tests__/integration/usuario.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ describe("CRUD", () => {

it("deve criar usuario com dados válidos", async () => {
let statuUsuario = await factory.create('StatuUsuario')
let tipoUsuario = await factory.create('TipoUsuario')

const resposta = await request(app)
.post("/usuario")
Expand All @@ -22,7 +23,8 @@ describe("CRUD", () => {
usuario: faker.internet.domainName(),
cargo: 'Gerente',
data_admissao: '10/10/2010',
statu_usuario_id: statuUsuario.id
statu_usuario_id: statuUsuario.id,
tipo_usuario_id: tipoUsuario.id
})

expect(resposta.status).toBe(200)
Expand Down Expand Up @@ -57,6 +59,7 @@ describe("CRUD", () => {
it("deve editar um usuario já criado", async () => {
const usuario = await factory.create("Usuario")
let statuUsuario = await factory.create('StatuUsuario')
let tipoUsuario = await factory.create('TipoUsuario')

const resposta = await request(app)
.put(`/usuario/${usuario.id}`)
Expand All @@ -65,7 +68,8 @@ describe("CRUD", () => {
usuario: faker.internet.domainName(),
cargo: 'Gerente',
data_admissao: '10/10/2010',
statu_usuario_id: statuUsuario.id
statu_usuario_id: statuUsuario.id,
tipo_usuario_id: tipoUsuario.id
})
.set("Authorization", `Bearer ${usuario.gerarToken()}`)

Expand Down
12 changes: 10 additions & 2 deletions __tests__/utils/factories.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const {factory} = require("factory-girl")
const {Cliente, Usuario, Perito, Plano, Veiculo, StatuUsuario, Questao, Gravidade, TipoVeiculo} = require("../../src/models")
const {Cliente, Usuario, Perito, Plano, Veiculo, StatuUsuario, Questao, Gravidade, TipoVeiculo, TipoUsuario} = require("../../src/models")
const faker = require("faker")

faker.locale = "pt_BR"
Expand Down Expand Up @@ -27,16 +27,24 @@ factory.define("StatuUsuario", StatuUsuario, async () => {
}
})

factory.define("TipoUsuario", TipoUsuario, async () => {
return {
descricao: "perito"
}
})

factory.define("Usuario", Usuario, async () => {
let statuUsuario = await factory.create('StatuUsuario')
let tipoUsuario = await factory.create('TipoUsuario')

return {
nome: faker.name.findName(),
senha: faker.internet.password(),
usuario: faker.internet.domainName(),
cargo: 'Gerente',
data_admissao: '10/10/2010',
statu_usuario_id: statuUsuario.id
statu_usuario_id: statuUsuario.id,
tipo_usuario_id: tipoUsuario.id
}
})

Expand Down
11 changes: 6 additions & 5 deletions src/controllers/UsuarioController.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ const {Op} = require("sequelize");

class UsuarioController {
async cadastrar(req, res) {
const {nome, senha, usuario: novoUsuario, cargo, data_admissao, statu_usuario_id } = req.body
const {nome, senha, usuario: novoUsuario, cargo, data_admissao, statu_usuario_id, tipo_usuario_id } = req.body

if (!nome || !senha || !novoUsuario || !cargo || !data_admissao)
if (!nome || !senha || !novoUsuario || !cargo || !data_admissao || !tipo_usuario_id)
return res.status(400).json({message: "Dados faltando para realizar o cadastro!"})

const usuarioCriado = await Usuario.findOne({where: {usuario: novoUsuario}})
Expand All @@ -19,23 +19,24 @@ class UsuarioController {
usuario: novoUsuario,
cargo,
data_admissao,
statu_usuario_id
statu_usuario_id,
tipo_usuario_id
})

return res.status(200).json({usuario})
}


async editar(req, res) {
const { nome, usuario: novoUsuario, cargo, data_admissao, statu_usuario_id} = req.body
const { nome, usuario: novoUsuario, cargo, data_admissao, statu_usuario_id, tipo_usuario_id} = req.body
const {id} = req.params

const usuario = await Usuario.findOne({where: {id}})

if (!usuario)
return res.status(400).json({message: "Usuário não encontrado"})

await usuario.update({nome, usuario: novoUsuario, cargo, data_admissao, statu_usuario_id})
await usuario.update({nome, usuario: novoUsuario, cargo, data_admissao, statu_usuario_id, tipo_usuario_id})

return res.status(200).json({usuario})
}
Expand Down
53 changes: 0 additions & 53 deletions src/database/migrations/20211130022709-Usuario.js

This file was deleted.

30 changes: 30 additions & 0 deletions src/database/migrations/20211202135039-TipoUsuario.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
'use strict';

module.exports = {
up: async (queryInterface, Sequelize) => {
return queryInterface.createTable("TipoUsuario", {
id: {
type: Sequelize.INTEGER,
allowNull: false,
autoIncrement: true,
primaryKey: true
},
descricao:{
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('TipoUsuario')
}
};
59 changes: 59 additions & 0 deletions src/database/migrations/20211202135227-Usuario.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
'use strict';

module.exports = {
up: async (queryInterface, Sequelize) => {
return queryInterface.createTable("Usuario", {
id: {
type: Sequelize.INTEGER,
allowNull: false,
autoIncrement: true,
primaryKey: true
},
nome: {
type: Sequelize.STRING,
allowNull: false,
},
usuario: {
type: Sequelize.STRING,
allowNull: false,
unique: true
},
statu_usuario_id: {
type: Sequelize.INTEGER,
references: {model: "StatuUsuario", key: "id"},
onDelete: "CASCADE",
allowNull: true
},
cargo: {
type: Sequelize.STRING,
allowNull: false,
},
data_admissao: {
type: Sequelize.STRING,
allowNull: false,
},
senha_hash: {
type: Sequelize.STRING,
allowNull: false
},
tipo_usuario_id: {
type: Sequelize.INTEGER,
references: {model: "TipoUsuario", key: "id"},
onDelete: "CASCADE",
allowNull: false
},
created_at: {
type: Sequelize.DATE,
allowNull: false
},
updated_at: {
type: Sequelize.DATE,
allowNull: false
},
})
},

down: async (queryInterface, Sequelize) => {
return queryInterface.dropTable("Usuario")
}
};
27 changes: 27 additions & 0 deletions src/database/seeders/20211202140008-TipoUsuario.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
'use strict';

module.exports = {
up: async (queryInterface, Sequelize) => {
return queryInterface.bulkInsert("TipoUsuario", [
{
descricao: "administrador",
created_at: new Date(),
updated_at: new Date()
},
{
descricao: "operador",
created_at: new Date(),
updated_at: new Date()
},
{
descricao: "digitador",
created_at: new Date(),
updated_at: new Date()
},
])
},

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

return TipoUsuario
}
3 changes: 3 additions & 0 deletions src/models/Usuario.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ module.exports = (sequelize, DataTypes) => {
Usuario.belongsTo(models.StatuUsuario, {
foreignKey: 'statu_usuario_id',
})
Usuario.belongsTo(models.TipoUsuario, {
foreignKey: 'tipo_usuario_id',
})
}


Expand Down

0 comments on commit 2c94083

Please sign in to comment.