Commit 6616d4ab authored by Elena Tsoy's avatar Elena Tsoy

#84 тестирование api-rooms и изменения в тестах api-payments

parent 4cda52f6
Pipeline #343 canceled with stages
in 13 minutes and 47 seconds
......@@ -6,7 +6,7 @@ const news = require('./app/news');
const calendarEvents = require('./app/calendarEvent');
const contentlinks = require('./app/contentlinks');
const cors = require('cors');
const rooms = require('./app/room')
const rooms = require('./app/rooms')
const bigBrother = require('./app/bigBrother')
const app = express();
......
......@@ -3,6 +3,7 @@ const mongoose = require ('mongoose')
const config = require ('../config')
const {app, port} = require('../../app.js')
const Payment = require('../models/Payment')
const User = require('../models/User')
describe ('route-payments', () => {
const server = app.listen(port)
......@@ -39,10 +40,15 @@ describe ('route-payments', () => {
}
})
afterAll(async(done) => {
try {
await Payment.findByIdAndDelete(payment._id)
await mongoose.connection.close()
server.close()
done()
}catch(e){
console.log(e)
done();
}
})
test ('Get payments list', async () => {
......@@ -59,7 +65,7 @@ describe ('route-payments', () => {
const newPayment = {
user: user.body.user,
paided: false,
approved: false,
approved: true,
repeatability: false,
purpose: 'за товар',
payer: 'Froot_Middle_Asia',
......@@ -102,23 +108,6 @@ describe ('route-payments', () => {
expect(res.statusCode).toBe(200)
expect(res.body.approved).toBe(false)
})
test ('Paid payment', async () => {
const res = await request(server).get('/payments/'+ payment._id +'/paid').set({'Authorization': token})
if(payment.approved){
expect(res.statusCode).toBe(200)
expect(res.body.paided).toBe(true)
}else {
expect(res.statusCode).toBe(403)
expect(res.body.message).toBe('Требуется одобрение директора')
}
})
test ('Cancel paid payment', async () => {
const res = await request(server).get('/payments/'+ payment._id +'/paid/cancel').set({'Authorization': token})
expect(res.statusCode).toBe(200)
expect(res.body.paided).toBe(false)
})
test ('Edit payment', async () => {
const editData = {
payer: 'Froot_Бизнес',
......@@ -134,11 +123,6 @@ describe ('route-payments', () => {
const res = await request(server).get('/payments/due/today').set({'Authorization': token})
expect(res.statusCode).toBe(200)
})
test ('Get all files of payments for today', async () => {
const res = await request(server).get('/payments/files/today').set({'Authorization': token})
expect(res.statusCode).toBe(200)
expect(Array.isArray(res.body)).toBe(true)
})
test ('Stoped repeatability payment', async () => {
const res = await request(server).post('/payments/'+ payment._id +'/not-repeatability').set({'Authorization': token})
expect(res.statusCode).toBe(200)
......@@ -146,5 +130,63 @@ describe ('route-payments', () => {
expect(res.body.paided).toBe(false)
}
})
describe ('route-payments/role-payPayment', ()=> {
let accountant
let accountantToken
let accountantUser
beforeAll (async (done) => {
try {
accountantUser = await User.create ({
workEmail: 'accountant@accountant.com',
surname: 'Accountant',
name: 'Accountant',
patronymic: 'Accountant',
position: 'accountant',
telegramName: '@accountant',
role: ['viewAllPayments', 'stopRepeatabilityPayment', 'addPayment', 'editPayment', 'payPayment', 'viewToBePaid', 'viewTodayPayments', 'cancelPayedPayment', 'bookMeetingRoom', 'editBookedMeetingRoom', 'deleteBookedMeetingRoom', 'viewBookingsMeetingRoom'],
phone: '+7 777 777 77 77',
password: '12345a'
})
const accountantData = {
workEmail: 'accountant@accountant.com',
password: '12345a'
}
accountant = await request(server).post('/users/sessions').send(accountantData);
accountantToken = accountant.body.user.token[0]
done();
}catch(e){
console.log(e)
done();
}
})
afterAll (async (done) => {
try {
await User.findByIdAndDelete(accountantUser._id)
done()
}catch(e){
console.log(e)
done();
}
})
test ('Paid payment', async () => {
const res = await request(server).get('/payments/'+ payment._id +'/paid').set({'Authorization': accountantToken})
if(payment.approved){
expect(res.statusCode).toBe(200)
expect(res.body.paided).toBe(true)
}else {
expect(res.statusCode).toBe(403)
expect(res.body.message).toBe('Требуется одобрение директора')
}
})
test ('Cancel paid payment', async () => {
const res = await request(server).get('/payments/'+ payment._id +'/paid/cancel').set({'Authorization': accountantToken})
expect(res.statusCode).toBe(200)
expect(res.body.paided).toBe(false)
})
test ('Get all files of payments for today', async () => {
const res = await request(server).get('/payments/files/today').set({'Authorization': accountantToken})
expect(res.statusCode).toBe(200)
expect(Array.isArray(res.body)).toBe(true)
})
})
})
\ No newline at end of file
const request = require ('supertest')
const mongoose = require ('mongoose')
const config = require ('../config')
const {app, port} = require('../../app.js')
const Room = require ('../models/Room')
describe ('route-rooms', () => {
const server = app.listen(port)
beforeAll (async (done) => {
try {
await mongoose.connect(config.db.url + '/' + config.db.name, { useNewUrlParser: true, useUnifiedTopology: true });
done();
}catch(e){
console.log(e)
done();
}
})
afterAll(async(done) => {
try {
await mongoose.connection.close()
server.close()
done()
}catch(e){
console.log(e)
done();
}
})
test ('Create new room', async () => {
const newRoom = {
room: 'test room'
}
const res = await request(server).post('/rooms').send(newRoom)
expect(res.statusCode).toBe(200)
expect(res.body.room).toBe('test room')
await Room.findByIdAndDelete(res.body._id)
})
test ('Get rooms list', async () => {
const res = await request(server).get('/rooms')
expect(res.statusCode).toBe(200)
})
test ('Delete room by id', async () => {
const deleteRoom = await Room.create ({
room: 'room to be deleted'
})
const res = await request(server).delete('/rooms/'+ deleteRoom._id)
expect(res.statusCode).toBe(200)
expect(res.body.message).toBe('Success')
})
})
\ No newline at end of file
......@@ -10,7 +10,6 @@ let host = process.env.MONGO_HOST
let dbMongo = process.env.MONGO_DB
let port = process.env.MONGO_PORT
let initDb = process.env.MONGO_INITDB;
module.exports = {
rootPath,
uploadPath: path.join(rootPath, '../public/uploads'),
......@@ -19,6 +18,7 @@ module.exports = {
// name: 'test',
// name:`${dbMongo}?authSource=${initDb}`, //docker
name: process.env.MONGO_DB ? `${dbMongo}?authSource=${initDb}` : 'froot',
// url: 'mongodb://localhost',
// url: 'mongodb+srv://QWE123:QWE123@cluster0.rrd3k.mongodb.net', // Pasha's mongo address !!
// url:`mongodb://${user}:${password}@${host}:${port}`, //docker
......
......@@ -2,7 +2,6 @@ const User = require("../models/User");
const auth = async (req,res,next) => {
const token = req.get('Authorization');
// console.log('AUTH TOKEN*************** ', token)
if(!token) {
// console.log('AUTH TOKEN FIRST IF TOKEN ERROR*************** ', token)
return res.status(401).send({error: 'No token present'});
......
const permit = (...roles) => {
return (req, res, next) => {
return (req, res, next) => {
if (!req.user) {
return res.status(401).send({ 'message': 'Unauthenticated' })
}
......
......@@ -22,7 +22,6 @@ schedule.scheduleJob("16 21 * * *", async function(){
console.log(e)
}
});
const createRouter = () => {
router.get('/', auth, async (req, res) => {
......@@ -176,6 +175,7 @@ const createRouter = () => {
};
try {
const payments = await Payment.find(filter).populate('user', 'surname name workEmail');
await helpers.checkRepeatability(payments)
await helpers.buildExcelFile(payments)
res.send(payments);
......@@ -193,8 +193,9 @@ const createRouter = () => {
};
try {
const payments = await Payment.find(filter).populate('user', 'surname name workEmail');
let files = []
payments.map(p=>{
payments && payments.map(p=>{
if(p.image){
files.push(p.image)
}
......
......@@ -5,6 +5,7 @@ const router = express.Router();
const User = require('./models/User');
const createRouter = () => {
router.get('/',
[auth, permit('viewUsers')],
async (req, res) => {
......
......@@ -4,7 +4,6 @@ const User = require('./app/models/User');
const { app, port } = require('./app');
const run = async () => {
if (process.env.NODE_ENV !== 'test') { ///// !!!чтобы отрабатывала тестовая среда - перенес сюда коннект к монго и слежение порта
await mongoose.connect(config.db.url + '/' + config.db.name, { useNewUrlParser: true, useUnifiedTopology: true });
......
......@@ -8,7 +8,7 @@
"seed": "node fixtures.js",
"test": "mocha",
"start": "node index.js",
"test:jest": "NODE_ENV=test jest --detectOpenHandles --maxWorkers=1 --forceExit"
"test:jest": "NODE_ENV=test jest --detectOpenHandles --watch --maxWorkers=1 --forceExit"
},
"jest": {
"bail": true,
......
......@@ -21,7 +21,7 @@ const Header = ({ user }) => {
},[]);
useEffect(()=>{
if(windowWidth>1500){
if(windowWidth>1200){
setState({menuShow:true,accauntShow:true});
}
},[windowWidth])
......@@ -62,7 +62,7 @@ const Header = ({ user }) => {
<NavLink to="/">
<img src={logo} alt="logo" />
</NavLink>
<button className={windowWidth>1500? 'Header__menu--none':"UserMenu__btn Header__burger"} onClick={menuClick}>Menu</button>
<button className={windowWidth>1200? 'Header__menu--none':"UserMenu__btn Header__burger"} onClick={menuClick}>Menu</button>
<menu className={classNameOfMenu}>
{user && user.role.includes("viewAllPayments") && (
<Fragment>
......@@ -95,7 +95,6 @@ const Header = ({ user }) => {
</NavLink>
</MenuItem>
)}
{console.log(user.role)}
{user.role.includes("viewAllPayments") && (
<MenuItem>
......@@ -154,7 +153,7 @@ const Header = ({ user }) => {
)}
</menu>
<button className={windowWidth>1500? 'Header__menu--none':"UserMenu__btn Header__burger"} onClick={accauntClick}>Профиль</button>
<button className={windowWidth>1200? 'Header__menu--none':"UserMenu__btn Header__burger"} onClick={accauntClick}>Профиль</button>
<div className={classNameOfAccaunt}>{user ? <UserMenu user={user} /> : <AnonymousMenu />}</div>
</div>
);
......
// export const apiURL = "http://localhost:8000";
export const apiURL = "http://162.55.54.115:8000";
export const apiURL = "http://localhost:8000";
// export const apiURL = "http://162.55.54.115:8000";
const allDayLocalizationMessages = {
"ru-RU": {
......
......@@ -169,7 +169,7 @@ const Payments = () => {
return (
<Fragment>
{user && payments.length? <div className="Payments">
{user && <div className="Payments">
{user.role.includes('viewAllPayments') ? (
<Fragment>
<div className="Payments__content">
......@@ -188,7 +188,7 @@ const Payments = () => {
</Fragment>
): <UsersPermission/>}
</div> : <RedirectToAuth/>}
</div> }
</Fragment>
);
};
......
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