How to use fsExtra.move method in Cypress

Best JavaScript code snippet using cypress

userController.js

Source:userController.js Github

copy

Full Screen

1'use strict';2const mongoose = require('mongoose'),3 bcrypt = require('bcryptjs'),4 Async = require('async'),5 saltRounds = 10,6 jwt = require('jsonwebtoken'),7 User = mongoose.model('User'),8 Code = mongoose.model('VerifyCode'),9 config = require("../config"),10 codecrt = require("../controllers/codeController"),11 {createWallets, DeleteOneWallet} = require("../controllers/walletsController"),12 {DeleteAllPawnForUser} = require("../controllers/pawnController"),13 passwordValidator = require('password-validator'),14 path = require('path'),15 multer = require('multer'),16 fs = require('fs'),17 fsextra = require('fs-extra'),18// Create a schema19 checkPass = new passwordValidator(),20 nodemailer = require('nodemailer'),21 rp = require('request-promise');22// Add properties to it23checkPass24 .is().min(8) // Minimum length 825 .is().max(100) // Maximum length 10026 .has().uppercase() // Must have uppercase letters27 .has().lowercase() // Must have lowercase letters28 .has().digits() // Must have digits29 .has().symbols() // Must have symbols30 .has().not().spaces(); // Should not have spaces31//.is().not().oneOf(['Passw0rd', 'Password123']); // Blacklist these values32// completely pointless, but whatever33const rn = require('random-number');34const options = {35 min: 1000,36 max: 999937 , integer: true38};39const Nexmo = require('nexmo');40const nexmo = new Nexmo({41 apiKey: config.API_KEY,42 apiSecret: config.API_SECRET,43}, {debug: true});44let Send_mail = async (mail, Verification) => {45 let transporter = await nodemailer.createTransport({46 service: 'gmail',47 auth: {48 user: 'mailfortest32018@gmail.com',49 pass: 'TrinhVM@1'50 }51 });52 await console.log("email " + mail);53 let mailOptions = await {54 from: 'mailfortest32018@gmail.com',55 to: mail,56 subject: 'Account Verification',57 text: 'Your confirmation code: ' + Verification,58 };59 transporter.sendMail(mailOptions, function (error, info) {60 if (error) {61 return false62 } else {63 return true64 }65 });66}67//delete on user68let DeleteOneUser = (obj) => {69 return new Promise((resolve, reject) => {70 User.findOneAndRemove(obj, function (err, userdl) {71 if (err) return reject(err);72 fsextra.removeSync(`public/uploads/${userdl.phone}`);73 resolve(userdl);74 });75 });76}77let UpdateUserSocketID = (obj) => {78 return new Promise((resolve, reject) => {79 User.findOneAndUpdate({socket_id: obj.socket_id}, obj, {new: true}, function (err, User) {80 if (err) return reject(err);81 resolve(User);82 });83 });84}85let UpdateUser = (condition, obj) => {86 return new Promise((resolve, reject) => {87 User.findOneAndUpdate(condition, obj, {new: true}, function (err, User) {88 if (err) return reject(err);89 resolve(User);90 });91 });92}93let comparePassword = function (password, user) {94 return bcrypt.compareSync(password, user.password);95}96let findManyUserObj = (obj) => {97 return new Promise((resolve, reject) => {98 User.find(obj, function (err, users) {99 if (err) reject(err);100 resolve(users);101 });102 });103}104let FindOneUserObj = (obj) => {105 return new Promise((resolve, reject) => {106 User.findOne(obj, function (err, users) {107 if (err) reject(err);108 resolve(users);109 });110 });111}112let FindUserSocketID = (obj) => {113 return new Promise((resolve, reject) => {114 User.findOne({socket_id: socket_id, _id: obj._id}, function (err, User) {115 if (err) return reject(err);116 resolve(User);117 });118 });119}120let findUserPhone = (phone) => {121 return new Promise((resolve, reject) => {122 User.findOne({phone: phone}, function (err, user) {123 if (err) reject(err);124 resolve(user);125 });126 });127};128let findUserId = (id) => {129 return new Promise((resolve, reject) => {130 User.findOne({_id: id}, function (err, user) {131 if (err) reject(err);132 resolve(user);133 });134 });135}136let findAllUser = () => {137 return new Promise((resolve, reject) => {138 User.find({}, function (err, user) {139 if (err) reject(err);140 resolve(user);141 });142 });143}144let findAllBusiness = () => {145 return new Promise((resolve, reject) => {146 User.find({roleType: 2}, function (err, user) {147 if (err) reject(err);148 resolve(user);149 });150 });151}152let UpdateUserID = (obj) => {153 return new Promise((resolve, reject) => {154 User.findOneAndUpdate({_id: obj._id}, obj, {new: true}, function (err, User) {155 if (err) return reject(err);156 User.password = undefined;157 resolve(User);158 });159 });160}161let UpdateUserObj = (condition, updateinfo) => {162 return new Promise((resolve, reject) => {163 User.findOneAndUpdate(condition, updateinfo, {new: true}, function (err, User) {164 if (err) return reject(err);165 resolve(User);166 });167 });168}169let SaveCoseVerify = (newCode) => {170 newCode.save(function (err, user) {171 if (err) console.log(err);172 });173};174let SingIN = (user, res) => {175 let Verification = rn(options);176 let newCode = new Code({177 accountId: user._id,178 phone: user.phone,179 code: Verification,180 });181 if (user.verifyType === 0) {182 // veify code mail183 if (Send_mail(user.email, Verification)) {184 SaveCoseVerify(newCode);185 return res.send({186 value: 6,187 message: Messages,188 code: Verification189 });190 } else {191 return res.send({192 value: 1,193 "message": Messages194 });195 }196 } else if (user.verifyType === 1) {197 //verify code sen message198 SaveCoseVerify(newCode);199 return res.send({200 value: 7,201 message: Messages,202 code: Verification203 });204 } else {205 return res.send({206 value: 8,207 message: Messages208 });209 }210}211let Messages = {212 1: "Send mail or message code vefrify fail",213 2: "Register user fail",214 3: "Register user error",215 4: "Find user fail",216 5: "User exits but not active",217 6: "Check mail code verify",218 7: "Check message code verify",219 8: "Type password to sign in",220 9: "Email exists",221 10: "phone undefined",222 11: "Error find code",223 12: "Check the phone number, send code more than 5 times will be blocked",224};225// gui lai code226exports.send_code_again = function (req, res) {227 //lưu thông tin người dùng bảng chính228 let {phone} = req.body;229 if (phone === undefined) {230 return res.send({231 message: Messages,232 value: 10,233 });234 }235 codecrt.findAllFollowPhone(Number(phone)).then(236 codes => {237 if (codes.length > 5) {238 return res.send({239 message: Messages,240 value: 12,241 });242 }243 findUserPhone(Number(phone))244 .then(245 user => {246 if (user) {247 return SingIN(user, res);248 } else {249 return res.send({250 message: Messages,251 value: 4252 });253 }254 },255 err => {256 return res.send({257 message: Messages,258 value: 4259 });260 });261 },262 err => {263 return res.send({264 message: Messages,265 value: 11,266 });267 }268 );269}270let mesVerify = {271 1: 'Authentication failed. User not found.',272 2: 'Authentication failed. code not right.',273 3: 'Authentication failed. paramas not enought.',274 4: 'Authentication failed. User not active.',275 5: 'Authentication failed. password not right.',276};277let findCode = (id) => {278 return new Promise((resolve, reject) => {279 Code.find({280 accountId: id281 }, function (err, code) {282 //console.log(code);283 if (err) reject(err);284 resolve(code[0]);285 })286 .sort({287 create_at: -1288 })289 .limit(1)290 });291}292exports.verify = function (req, res) {293 let {verifyType, code, phone, roleType} = req.body;294 if (295 verifyType === undefined || code === undefined ||296 phone === undefined || roleType === undefined297 ) {298 return res.json({299 value: 3,300 message: mesVerify301 })302 }303 FindOneUserObj({phone, roleType, verifyType})304 .then(userf => {305 if (!userf) {306 return res.json({307 value: 1,308 message: mesVerify309 })310 }311 findCode(userf._id)312 .then(313 codes => {314 if (codes) {315 if (codes.code === code) {316 //xóa code đã active317 Code.deleteMany({318 phone: userf.phone319 }, function (err, re) {320 if (err) console.log(err);321 })322 if (userf.activeType === 0) {323 User.findOneAndUpdate(324 {_id: userf._id},325 {activeType: 1}, {new: true}, function (err, useOne) {326 console.log(err);327 })328 }329 userf.password = undefined;330 return res.send({331 message: jwt.sign({332 phone: userf.phone,333 create_at: userf.create_at,334 fullName: userf.fullName,335 _id: userf._id336 }, config.secret),337 value: 0,338 id: userf._id,339 roleType: userf.roleType,340 });341 } else {342 return res.send({343 value: 2,344 message: mesVerify345 })346 }347 }348 else {349 return res.send({350 value: 2,351 message: mesVerify352 })353 }354 },355 err => {356 return res.json({357 value: 2,358 message: mesVerify359 })360 }361 )362 },363 err => {364 return res.json({365 value: 1,366 message: mesVerify367 })368 });369}370//function dung để đăng ký bằng web371//dùng để đăng nhập bằng mật khẩu372//roleType: 2, // 1 user, 2 driver, 0 admin373//verifyType: 2, // 0: mail, 1 phone, 2 password374//kiểm tra nếu email và phone tồn tại sẽ không cho đăng ký375exports.register_old = function (req, res) {376 if (req.body.phone === undefined ||377 req.body.password === undefined ||378 req.body.countryCode === undefined ||379 req.body.fullName === undefined) {380 return res.send({381 message: 'Truyền thiếu biến',382 value: 5383 });384 }385 if (!checkPass.validate(req.body.password)) {386 return res.send({387 value: 1,388 message: 'Minimum length 8, ' +389 'Maximum length 100, ' +390 'Must have uppercase letters, ' +391 'Must have lowercase letters, ' +392 'Must have digits, ' +393 'Must have symbols, ' +394 'Should not have spaces'395 });396 }397 findUserPhone(req.body.phone)398 .then(399 userphone => {400 if (!userphone) {401 let newUser = new User(req.body);402 newUser.verifyType = 1;403 newUser.roleType = 2;404 newUser.password = bcrypt.hashSync(req.body.password, saltRounds);405 newUser.save(function (err, users) {406 if (err) {407 console.log(err);408 return res.send({409 message: 'Lối đăng ký',410 value: 4411 });412 } else {413 if (users) {414 let Verification = rn(options);415 let newCode = new Code({416 accountId: users._id,417 phone: users.phone,418 code: Verification,419 });420 SaveCoseVerify(newCode);421 //tạo giỏ tiền khi đăng ký thành công422 createWallets({423 accountID: users._id,424 phone: users.phone,425 }).then(426 res => {427 console.log("create wallet success");428 },429 err => {430 console.log("create wallet fail");431 }432 );433 return res.send({434 message: 'Đăng ký thành công',435 value: 0,436 code: Verification437 });438 }439 else {440 return res.send({441 message: 'Lối đăng ký',442 value: 4,443 });444 }445 }446 });447 } else {448 return res.send({449 message: 'Số điện thoại đã tồn tại',450 value: 3451 });452 }453 },454 err => {455 return res.send({456 message: 'Số điện thoại đã tồn tại',457 value: 3458 });459 }460 );461}462exports.register_user_pass = function (req, res) {463 if (req.body.phone === undefined ||464 req.body.password === undefined ||465 req.body.countryCode === undefined ||466 req.body.fullName === undefined) {467 return res.send({468 message: 'Truyền thiếu biến',469 value: 5470 });471 }472 if (!checkPass.validate(req.body.password)) {473 return res.send({474 value: 1,475 message: 'Minimum length 8, ' +476 'Maximum length 100, ' +477 'Must have uppercase letters, ' +478 'Must have lowercase letters, ' +479 'Must have digits, ' +480 'Must have symbols, ' +481 'Should not have spaces'482 });483 }484 findUserPhone(req.body.phone)485 .then(486 userphone => {487 if (!userphone) {488 let newUser = new User(req.body);489 newUser.verifyType = 1;490 newUser.roleType = 1;491 newUser.password = bcrypt.hashSync(req.body.password, saltRounds);492 newUser.save(function (err, user) {493 if (err) {494 console.log(err);495 return res.send({496 message: 'Lối đăng ký',497 value: 4498 });499 } else {500 if (user) {501 let Verification = rn(options);502 let newCode = new Code({503 accountId: user._id,504 phone: user.phone,505 code: Verification,506 });507 SaveCoseVerify(newCode);508 //tạo giỏ tiền khi đăng ký thành công509 createWallets({510 accountID: user._id,511 phone: user.phone,512 }).then(513 res => {514 console.log("create wallet success");515 },516 err => {517 console.log("create wallet fail");518 }519 );520 return res.send({521 message: 'Đăng ký thành công',522 value: 0,523 code: Verification524 });525 }526 else {527 return res.send({528 message: 'Lối đăng ký',529 value: 4,530 });531 }532 }533 });534 } else {535 return res.send({536 message: 'Số điện thoại đã tồn tại',537 value: 3538 });539 }540 },541 err => {542 return res.send({543 message: 'Số điện thoại đã tồn tại',544 value: 3545 });546 }547 );548}549exports.update_active = function (req, res) {550 User.findOneAndUpdate({email: req.params.email}, req.body, {new: true}, function (err, User) {551 if (err)552 return res.status(400).send({553 response: 'Update fail',554 value: false555 });556 User.password = undefined;557 res.json({558 value: true,559 response: User560 });561 });562}563exports.profile = function (req, res) {564 User.findOne({_id: req.params.id}, function (err, User) {565 if (err) {566 return res.send({567 response: 'get profile fail',568 value: false569 });570 } else {571 if (User) {572 User.password = undefined;573 res.send({574 value: true,575 response: User576 });577 } else {578 return res.send({579 response: 'get profile fail',580 value: false581 });582 }583 }584 });585}586exports.update_profile = function (req, res) {587 User.findOneAndUpdate({_id: req.params.id}, req.body, {new: true}, function (err, User) {588 if (err)589 return res.send({590 response: 'Update fail',591 value: false592 });593 User.password = undefined;594 res.json({595 value: true,596 response: User597 });598 });599}600exports.update_password = function (req, res) {601 let {password, id} = req.body;602 if (password === undefined || id === undefined) {603 return res.send({604 value: 'not found params',605 response: false606 });607 }608 if (!checkPass.validate(password)) {609 return res.send({610 value: 'Minimum length 8, ' +611 'Maximum length 100, ' +612 'Must have uppercase letters, ' +613 'Must have lowercase letters, ' +614 'Must have digits, ' +615 'Must have symbols, ' +616 'Should not have spaces',617 response: false,618 });619 }620 let passwordh = bcrypt.hashSync(password, saltRounds);621 User.findOneAndUpdate({_id: id}, {622 password: passwordh623 }, {new: true}, function (err, User) {624 if (err)625 return res.send({626 value: 'Update fail',627 response: false628 });629 User.password = undefined;630 res.json({631 response: true,632 value: User633 });634 });635}636let uploadDir = config.folder_temp;637let Storage = multer.diskStorage({638 destination: uploadDir,639 filename: function (req, file, callback) {640 callback(null, file.fieldname + '-' + Date.now() + ".jpg");641 }642});643let upload = multer({644 storage: Storage,645 fileFilter: function (req, file, callback) {646 let ext = path.extname(file.originalname).toLowerCase();647 if (ext !== '.png'648 && ext !== '.jpg'649 && ext !== '.jpeg'650 ) {651 return callback(new Error('Only images are allowed'))652 }653 callback(null, true)654 },655 limits: {656 fileSize: 6000000657 }658}).single('avatar'); //Field name and max count659exports.update_avatar = function (req, res) {660 upload(req, res, function (err) {661 if (err) {662 return res.send({663 "response": false,664 "value": err,665 });666 }667 //console.log(req.file);668 if (!req.file) {669 return res.send({670 "response": false,671 "value": "not find image"672 });673 }674 let {id} = req.body;675 if (id === undefined) {676 return res.send({677 "response": false,678 "value": "not find params id user"679 });680 }681 findUserId(id)682 .then(683 userf => {684 if (userf) {685 // update and move avatar from folder tepms to folder user( phone number)686 UpdateUserID({_id: id, avatarLink: req.file.filename})687 .then(useru => {688 fsextra.moveSync(689 path.join(`${config.folder_temp}`, `${req.file.filename}`),690 path.join(`${config.folder_uploads}`, `${useru.phone}`, `${req.file.filename}`),691 {overwrite: true});692 FindAllInfoUser({_id: id})693 .then(userrp => {694 return res.send({695 value: userrp,696 response: true697 });698 },699 err => {700 return res.send({701 "response": false,702 "value": err703 });704 }705 );706 }, err => {707 return res.send({708 "response": false,709 "value": err710 });711 })712 } else {713 return res.send({714 "response": false,715 "value": "not find user"716 });717 }718 },719 err => {720 return res.send({721 "response": false,722 "value": err723 });724 }725 );726 });727};728let FindAllInfoUser = (obj) => {729 return new Promise((resolve, reject) => {730 User.findOne({_id: obj._id}, function (err, userf) {731 if (err) return reject(err);732 resolve(userf);733 });734 });735}736// dung để737// update thông tin user738exports.update_userboth = (req, res) => {739 let {id} = req.body;740 let {phone} = req.user;741 console.log(req.body);742 if (id === undefined || phone === undefined) {743 return res.send({744 "response": false,745 "value": "not found id",746 });747 }748 UpdateUserObj({_id: id, phone}, req.body)749 .then(750 useru => {751 if (useru) {752 res.send({753 "response": true,754 "value": useru,755 });756 } else {757 res.send({758 "response": false,759 "value": "update fail",760 });761 }762 },763 err => {764 return res.send({765 "response": false,766 "value": err767 });768 }769 );770}771exports.update_identityCardFront = function (req, res) {772 upload(req, res, function (err) {773 if (err) {774 return res.send({775 "response": false,776 "value": err777 });778 }779 //console.log(req.file);780 if (!req.file) {781 return res.send({782 "response": false,783 "value": "not find image"784 });785 }786 if (req.body.id === undefined || req.body.expression === undefined || req.user.phone === undefined) {787 return res.send({788 "response": false,789 "value": "not find params id user"790 });791 }792 FindOneUserObj({_id: req.body.id, phone: req.user.phone})793 .then(794 userf => {795 if (!userf) {796 return res.json({797 "response": false,798 "value": "not find user"799 });800 }801 switch (req.body.expression) {802 case 'identityCardFront':803 // update and move avatar from folder tepms to folder user( phone number)804 UpdateUserObj({_id: req.body.id}, {identityCardFront: req.file.filename})805 .then(useru => {806 fsextra.moveSync(807 path.join(`${config.folder_temp}`, `${req.file.filename}`),808 path.join(`${config.folder_uploads}`, `${userf.phone}`, `${req.file.filename}`),809 {overwrite: true});810 return res.send({811 value: useru,812 response: true813 });814 }, err => {815 return res.json({816 "response": false,817 "value": err818 });819 });820 break;821 case 'identityCardBehind':822 // update and move avatar from folder tepms to folder user( phone number)823 UpdateUserObj({_id: req.body.id}, {identityCardBehind: req.file.filename})824 .then(useru => {825 fsextra.moveSync(826 path.join(`${config.folder_temp}`, `${req.file.filename}`),827 path.join(`${config.folder_uploads}`, `${userf.phone}`, `${req.file.filename}`),828 {overwrite: true});829 return res.send({830 value: useru,831 response: true832 });833 }, err => {834 return res.json({835 "response": false,836 "value": err837 });838 });839 break;840 case 'licenseeImageFront':841 // update and move avatar from folder tepms to folder user( phone number)842 UpdateUserObj({_id: req.body.id}, {licenseeImageFront: req.file.filename})843 .then(useru => {844 fsextra.moveSync(845 path.join(`${config.folder_temp}`, `${req.file.filename}`),846 path.join(`${config.folder_uploads}`, `${userf.phone}`, `${req.file.filename}`),847 {overwrite: true});848 return res.send({849 value: useru,850 response: true851 });852 }, err => {853 return res.json({854 "response": false,855 "value": err856 });857 });858 break;859 case 'licenseeImageBehind':860 // update and move avatar from folder tepms to folder user( phone number)861 UpdateUserObj({_id: req.body.id}, {licenseeImageBehind: req.file.filename})862 .then(useru => {863 fsextra.moveSync(864 path.join(`${config.folder_temp}`, `${req.file.filename}`),865 path.join(`${config.folder_uploads}`, `${userf.phone}`, `${req.file.filename}`),866 {overwrite: true});867 return res.send({868 value: useru,869 response: true870 });871 }, err => {872 return res.json({873 "response": false,874 "value": err875 });876 });877 break;878 default:879 return res.json({880 "response": false,881 "value": "không tim thấy"882 });883 }884 },885 err => {886 return res.json({887 "response": false,888 "value": err889 });890 }891 );892 });893}894exports.sign_in = function (req, res) {895 if (req.body.phone === undefined ||896 req.body.password === undefined) {897 return res.send({898 message: 'Truyền thiếu biến',899 value: 6900 });901 }902 User.findOne({903 phone: req.body.phone904 }, function (err, user) {905 if (err) {906 return res.send({907 message: 'Lỗi tìm user',908 value: 5,909 })910 }911 if (!user) {912 return res.send({913 message: 'Tài khoản không tồn tại',914 value: 2,915 })916 }917 if (!comparePassword(req.body.password, user)) {918 return res.json({919 message: 'Mật khẩu không đúng.',920 value: 3,921 })922 }923 if (user.activeType < 1) {924 return res.send({925 message: 'Tài khoản chưa được xác thực',926 value: 1,927 })928 }929 res.send({930 message: jwt.sign({931 phone: user.phone,932 create_at: user.create_at,933 fullName: user.fullName,934 _id: user._id935 }, config.secret),936 value: 0,937 id: user._id,938 roleType: user.roleType,939 });940 })941}942exports.sign_in_admin = function (req, res) {943 if (req.body.phone === undefined ||944 req.body.password === undefined) {945 return res.send({946 value: 'not find params',947 response: false948 });949 }950 User.findOne({951 phone: req.body.phone952 }, function (err, user) {953 if (err) {954 return res.send({955 value: err,956 response: false957 });958 }959 if (!user) {960 return res.send({961 value: "user not found",962 response: false963 });964 }965 if (!comparePassword(req.body.password, user)) {966 return res.send({967 value: "wrong password",968 response: false969 })970 }971 if (user.activeType < 1) {972 return res.send({973 value: 'account not active',974 response: false,975 })976 }977 if (user.roleType !== 0) {978 return res.send({979 value: 'account not admin',980 response: false,981 })982 }983 res.send({984 value: jwt.sign({985 phone: user.phone,986 fullName: user.fullName,987 _id: user._id988 }, config.secret),989 response: true,990 roleType: user.roleType,991 });992 })993}994//kiem tra đang nhập qua session995exports.get_info = function (req, res) {996 let {phone} = req.user;997 if (!phone) {998 return res.send({999 value: "not find info user",1000 response: false1001 })1002 }1003 findUserPhone(phone)1004 .then(userf => {1005 if (userf) {1006 userf.activeType = undefined;1007 userf.password = undefined;1008 userf.verifyType = undefined;1009 return res.send({1010 value: userf,1011 response: true1012 })1013 } else {1014 return res.send({1015 value: "not find info user",1016 response: false1017 })1018 }1019 }, err => {1020 return res.send({1021 value: err,1022 response: false1023 })1024 })1025}1026exports.loginRequired = function (req, res, next) {1027 if (req.user) {1028 next();1029 } else {1030 return res.status(401).json({message: 'Unauthorized user!'});1031 }1032};1033exports.get_all_business = function (req, res) {1034 findAllBusiness()1035 .then(users => {1036 return res.json({1037 response: true,1038 value: users,1039 })1040 }, err => {1041 return res.json({1042 response: false,1043 value: err,1044 })1045 })1046};1047//get all user not follow1048exports.get_all_user_business_follow = function (req, res) {1049 findManyUserObj({roleType: 2, accept: false})1050 .then(users => {1051 return res.json({1052 response: true,1053 value: users,1054 })1055 }, err => {1056 return res.json({1057 response: false,1058 value: err,1059 })1060 })1061};1062exports.get_all_user_business_following = function (req, res) {1063 findManyUserObj({roleType: 2, accept: true})1064 .then(users => {1065 return res.json({1066 response: true,1067 value: users,1068 })1069 }, err => {1070 return res.json({1071 response: false,1072 value: err,1073 })1074 })1075};1076//delte user and delete all table have relationship1077let DeleteUser = (obj) => {1078 return new Promise((resolve, reject) => {1079 findUserId(obj._id)1080 .then(1081 userdl => {1082 //console.log(userdl);1083 if (userdl) {1084 if (userdl.length > 0) {1085 // không tồn tại hoặc là admin không được xóa1086 reject("không xóa được, không tồn tại hoặc là admin");1087 }1088 if (userdl.roleType === 1) {1089 // = 1 là người dùng1090 // tìm tất cả các pawn của người dùng để xóa1091 DeleteAllPawnForUser(obj);1092 resolve(userdl);1093 }1094 if (userdl.roleType === 2) {1095 // = 2 là bussiness1096 resolve(userdl);1097 }1098 } else {1099 // không tồn tại hoặc là admin không được xóa1100 reject("không xóa được, không tồn tại hoặc là admin");1101 }1102 },1103 err => {1104 reject(err);1105 }1106 )1107 });1108};1109exports.delete_one_user_by_id = (req, res) => {1110 if (req.body._id === undefined) {1111 return res.json({1112 response: false,1113 value: "not find params id user"1114 })1115 }1116 DeleteUser(req.body)1117 .then(1118 userdl => {1119 if (userdl) {1120 return res.json({1121 response: true,1122 value: userdl1123 })1124 } else {1125 return res.json({1126 response: false,1127 value: "delete fail",1128 })1129 }1130 },1131 err => {1132 return res.json({1133 response: false,1134 value: err,1135 })1136 }1137 )1138}1139// inser new comments for user1140exports.insert_comment = (req, res) => {1141 let {_id, rating_star, body} = req.body;1142 let {phone} = req.user;1143 if (_id === undefined ||1144 rating_star === undefined ||1145 body === undefined ||1146 phone === undefined) {1147 return res.send({1148 "response": false,1149 "value": "not find params "1150 });1151 }1152 FindOneUserObj({phone})1153 .then(userf => {1154 if (userf) {1155 FindOneUserObj({_id})1156 .then(ownerf => {1157 if (ownerf) {1158 ownerf.comments.push({accountID: userf._id,phone:userf.phone,fullName:userf.fullName,sex:userf.sex,avatarLink:userf.avatarLink, rating_star, body});1159 ownerf.save(function (err, userud) {1160 if (err) return res.send({1161 "response": false,1162 "value": err1163 });1164 return res.send({1165 "response": true,1166 "value": userud1167 });1168 });1169 } else {1170 return res.send({1171 "response": false,1172 "value": "not find user"1173 });1174 }1175 },1176 err => {1177 return res.send({1178 "response": false,1179 "value": err1180 });1181 }1182 )1183 } else {1184 return res.send({1185 "response": false,1186 "value": "token is not master onwe"1187 });1188 }1189 },1190 err => {1191 return res.send({1192 "response": false,1193 "value": err1194 });1195 }1196 )1197}1198// get all comment1199exports.get_all_comment = (req, res) => {1200 let {phone} = req.user;1201 if (phone === undefined) {1202 return res.send({1203 "response": false,1204 "value": "not find params "1205 });1206 }1207 FindOneUserObj({phone})1208 .then(userf => {1209 if (userf) {1210 if (userf.roleType !== 0) {1211 return res.send({1212 "response": false,1213 "value": "user is not allowed to view this content"1214 });1215 }1216 findManyUserObj({"comments": {$ne: null}})1217 .then(userfcomment => {1218 let comments = [];1219 Async.forEachOf(userfcomment, function (usercm, key, callback) {1220 comments.push(...usercm.comments);1221 callback();1222 }, function (err) {1223 if (err) return res.send({1224 "response": false,1225 "value": err1226 });1227 res.send({1228 "response": true,1229 "value": comments,1230 });1231 });1232 }, err => {1233 console.log(err);1234 return res.send({1235 "response": false,1236 "value": "err find comments"1237 });1238 })1239 } else {1240 return res.send({1241 "response": false,1242 "value": "token is not master onwe"1243 });1244 }1245 },1246 err => {1247 return res.send({1248 "response": false,1249 "value": err1250 });1251 }1252 );1253}1254let FindCommentStatus = () => {1255 return new Promise((resolve, reject) => {1256 findManyUserObj({"comments": {$ne: null}})1257 .then(userfcomment => {1258 let comments = [];1259 Async.forEachOf(userfcomment, function (usercm, key, callback) {1260 comments.push(...usercm.comments);1261 callback();1262 }, function (err) {1263 if (err) return reject(err);1264 let comstatus = [];1265 Async.forEachOf(comments, function (comment, key, callback) {1266 if (comment.status === 1) {1267 comstatus.push(comment);1268 }1269 callback();1270 }, function (err) {1271 if (err) return reject(err);1272 resolve(comstatus);1273 });1274 });1275 }, err => {1276 reject(err);1277 })1278 });1279}1280// get all comment da duyet1281exports.get_all_comment_status = (req, res) => {1282 let { page, limit } = req.params;1283 if (page === undefined || limit === undefined) {1284 return res.send({1285 "response": false,1286 "value": "not find params "1287 });1288 }1289 FindCommentStatus()1290 .then(commets => {1291 if (commets.length > 0) {1292 return res.send({1293 "response": true,1294 "value": commets.slice((0 + page - 1) * limit, page * limit),1295 "pages": Math.round(commets.length/limit*1+0.5),1296 });1297 } else {1298 return res.send({1299 "response": false,1300 "value": "không tìm thấy comments"1301 });1302 }1303 }, err => {1304 console.log(err);1305 return res.send({1306 "response": false,1307 "value": "Lỗi tìm kiếm comments"1308 });1309 })1310}1311// update status comment1312exports.update_comment_status = (req, res) => {1313 let {_id} = req.body;1314 let {phone} = req.user;1315 if (phone === undefined || _id === undefined) {1316 return res.send({1317 "response": false,1318 "value": "not find params "1319 });1320 }1321 FindOneUserObj({phone})1322 .then(userf => {1323 if (userf) {1324 if (userf.roleType !== 0) {1325 return res.send({1326 "response": false,1327 "value": "user is not allowed to view this content"1328 });1329 }1330 User.findOne({"comments._id": _id}, function (err, usercomment) {1331 if (err || !usercomment) return res.send({1332 "response": false,1333 "value": "not find user comment"1334 });1335 let indexP = usercomment.comments.findIndex(comment => comment._id+"" === _id+"");1336 if (indexP < 0) {1337 return res.send({1338 "response": false,1339 "value": "not find index comment"1340 });1341 }1342 usercomment.comments[indexP].status = !usercomment.comments[indexP].status;1343 usercomment.save(function (err, usercommentupdate) {1344 if (err) return res.send({1345 "response": false,1346 "value": "errors update comment"1347 });1348 return res.send({1349 "response": true,1350 "value": usercommentupdate.comments[indexP]1351 });1352 });1353 })1354 } else {1355 return res.send({1356 "response": false,1357 "value": "token is not master onwe"1358 });1359 }1360 },1361 err => {1362 return res.send({1363 "response": false,1364 "value": "not find user"1365 });1366 }1367 );1368}1369// delete comment1370exports.delete_comments = (req, res) => {1371 let {_id} = req.body;1372 let {phone} = req.user;1373 if (phone === undefined || _id === undefined) {1374 return res.send({1375 "response": false,1376 "value": "not find params "1377 });1378 }1379 FindOneUserObj({phone})1380 .then(userf => {1381 if (userf) {1382 if (userf.roleType !== 0) {1383 return res.send({1384 "response": false,1385 "value": "user is not allowed to view this content"1386 });1387 }1388 User.findOne({"comments._id": _id}, function (err, usercomment) {1389 if (err || !usercomment) return res.send({1390 "response": false,1391 "value": "not find user comment"1392 });1393 let commentde = usercomment.comments.id(_id).remove();1394 // Equivalent to `parent.child = null`1395 usercomment.save(function (err) {1396 if (err)if (err) return res.send({1397 "response": false,1398 "value": "errors delete comment"1399 });1400 return res.send({1401 "response": true,1402 "value": commentde1403 });1404 });1405 })1406 } else {1407 return res.send({1408 "response": false,1409 "value": "token is not master onwe"1410 });1411 }1412 },1413 err => {1414 return res.send({1415 "response": false,1416 "value": "not find user"1417 });1418 }1419 );1420}1421exports.FindOneUserObj = FindOneUserObj;1422exports.findAllBusiness = findAllBusiness;1423exports.FindUserSocketID = FindUserSocketID;1424exports.findUserId = findUserId;1425// tìm kiếm người dùng qua số điện thoại1426exports.find_user_phone = findUserPhone;1427exports.findAllUser = findAllUser;...

Full Screen

Full Screen

TestimonialController.js

Source:TestimonialController.js Github

copy

Full Screen

1'use strict';2const Testimonials = require('../models/testimonialModel');3const Users = require('../controllers/userController'),4 path = require('path'),5 multer = require('multer'),6 fsextra = require('fs-extra'),7 config = require('../config');8let CreateOneTestimonialObj = (obj) => {9 return new Promise((resolve, reject) => {10 let newTestimonials = new Testimonials(obj);11 newTestimonials.save(function (err, testimonal) {12 if (err) {13 return reject(err)14 }15 resolve(testimonal);16 })17 })18}19let FindAllTestimonialObj = (obj) => {20 return new Promise((resolve, reject) => {21 Testimonials.find(obj, function (err, testimonal) {22 if (err) {23 return reject(err)24 }25 resolve(testimonal);26 })27 })28}29let UpdateTestimonial = (conditon, obj) => {30 return new Promise((resolve, reject) => {31 Testimonials.findOneAndUpdate(conditon, obj, {new: true}, function (err, tm) {32 if (err) return reject(err);33 resolve(tm);34 });35 });36}37//delete one Testimonials38let DeleteOneTestimonial = (obj) => {39 return new Promise((resolve, reject) => {40 Testimonials.findOneAndRemove(obj, function (err, tm) {41 if (err) return reject(err);42 try {43 fsextra.remove(path.join(`${config.folder_uploads}`, `testimonials`, `${tm.avatarLink}`));44 resolve(tm);45 } catch (err) {46 return reject(err);47 }48 });49 });50};51let uploadDir = config.folder_temp;52let Storage = multer.diskStorage({53 destination: uploadDir,54 filename: function (req, file, callback) {55 callback(null, file.fieldname + '-' + Date.now() + ".jpg");56 }57});58/*59* function upload ảnh kiểm tra ảnh định dạng đuôi có phải là png, jpg, hay jpeg60* dung lượng tối đa cho phép là 6 mb61* */62let upload = multer({63 storage: Storage,64 fileFilter: function (req, file, callback) {65 let ext = path.extname(file.originalname).toLowerCase();66 if (ext !== '.png'67 && ext !== '.jpg'68 && ext !== '.jpeg'69 ) {70 return callback(new Error('Only images are allowed'))71 }72 callback(null, true)73 },74 limits: {75 fileSize: 600000076 }77}).single('file'); //Field name and max count78exports.insert_testimonial = (req, res) => {79 upload(req, res, function (err) {80 if (err) {81 return res.send({82 "response": false,83 "value": "upload file fail"84 });85 }86 if (!req.file) {87 return res.send({88 "response": false,89 "value": "upload file fail"90 });91 }92 let {content, full_name} = req.body;93 let {phone} = req.user;94 if (95 content === undefined ||96 phone === undefined ||97 full_name === undefined98 ) {99 return res.send({100 "response": false,101 "value": "not find params "102 });103 }104 Users.FindOneUserObj({phone})105 .then(userf => {106 if (userf) {107 if (userf.roleType !== 0) {108 return res.send({109 "response": false,110 "value": "account not admin"111 });112 }113 CreateOneTestimonialObj({content, full_name, avatarLink: req.file.filename})114 .then(testimonial => {115 if (!testimonial) {116 return res.send({117 "response": false,118 "value": "not find user"119 });120 }121 fsextra.moveSync(122 path.join(`${config.folder_temp}`, `${req.file.filename}`),123 path.join(`${config.folder_uploads}`, `testimonials`, `${req.file.filename}`),124 {overwrite: true});125 return res.send({126 "response": true,127 "value": testimonial128 });129 },130 err => {131 return res.send({132 "response": false,133 "value": "create testimonial"134 });135 }136 )137 } else {138 return res.send({139 "response": false,140 "value": "not find account admin"141 });142 }143 },144 err => {145 return res.send({146 "response": false,147 "value": "not find account admin"148 });149 }150 )151 })152}153// get all comment154exports.get_all_testimonials = (req, res) => {155 let {phone} = req.user;156 if (phone === undefined) {157 return res.send({158 "response": false,159 "value": "not find params "160 });161 }162 Users.FindOneUserObj({phone})163 .then(userf => {164 if (userf) {165 if (userf.roleType !== 0) {166 return res.send({167 "response": false,168 "value": "user is not allowed to view this content"169 });170 }171 FindAllTestimonialObj({})172 .then(testimonals => {173 if (testimonals.length === 0) {174 return res.send({175 "response": false,176 "value": []177 });178 }179 return res.send({180 "response": true,181 "value": testimonals182 });183 }, err => {184 return res.send({185 "response": false,186 "value": "err find testimonals"187 });188 })189 } else {190 return res.send({191 "response": false,192 "value": "token is not master onwe"193 });194 }195 },196 err => {197 return res.send({198 "response": false,199 "value": err200 });201 }202 );203}204// get all comment da duyet205exports.get_all_testimonials_active = (req, res) => {206 FindAllTestimonialObj({status: 1})207 .then(testimonals => {208 if (testimonals.length > 0) {209 return res.send({210 "response": true,211 "value": testimonals212 });213 } else {214 return res.send({215 "response": false,216 "value": "không tìm thấy comments"217 });218 }219 }, err => {220 return res.send({221 "response": false,222 "value": "Lỗi tìm kiếm comments"223 });224 })225}226// update status comment227exports.update_testimonial = (req, res) => {228 let {_id} = req.body;229 let {phone} = req.user;230 if (phone === undefined || _id === undefined) {231 return res.send({232 "response": false,233 "value": "not find params "234 });235 }236 let obj = {...req.body};237 // obj._id = undefined;238 Users.FindOneUserObj({phone})239 .then(userf => {240 if (userf) {241 if (userf.roleType !== 0) {242 return res.send({243 "response": false,244 "value": "user is not allowed to view this content"245 });246 }247 UpdateTestimonial({_id}, obj)248 .then(testimonal => {249 if (!testimonal) {250 return res.send({251 "response": false,252 "value": "update fail "253 });254 }255 res.send({256 "response": true,257 "value": testimonal258 });259 }, err => {260 return res.send({261 "response": false,262 "value": "update error"263 });264 });265 } else {266 return res.send({267 "response": false,268 "value": "token is not master onwe"269 });270 }271 },272 err => {273 return res.send({274 "response": false,275 "value": "not find user"276 });277 }278 );279}280// update testimonial iamge281exports.update_testimonial_image = (req, res) => {282 upload(req, res, function (err) {283 if (err) {284 return res.send({285 "response": false,286 "value": "upload file fail"287 });288 }289 if (!req.file) {290 return res.send({291 "response": false,292 "value": "upload file fail"293 });294 }295 let {_id} = req.body;296 let {phone} = req.user;297 if (phone === undefined || _id === undefined) {298 return res.send({299 "response": false,300 "value": "not find params "301 });302 }303 let obj = {...req.body};304 obj.avatarLink = req.file.filename;305 Users.FindOneUserObj({phone})306 .then(userf => {307 if (userf) {308 if (userf.roleType !== 0) {309 return res.send({310 "response": false,311 "value": "user is not allowed to view this content"312 });313 }314 UpdateTestimonial({_id}, obj)315 .then(testimonal => {316 if (!testimonal) {317 return res.send({318 "response": false,319 "value": "not find user comment"320 });321 }322 //remove icon old323 try {324 fsextra.remove(path.join(`${config.folder_uploads}`, `testimonials`, `${req.body.avatarLink}`));325 console.log('success!')326 } catch (err) {327 console.error(err)328 }329 fsextra.moveSync(330 path.join(`${config.folder_temp}`, `${req.file.filename}`),331 path.join(`${config.folder_uploads}`, `testimonials`, `${req.file.filename}`),332 {overwrite: true});333 res.send({334 "response": true,335 "value": testimonal336 });337 }, err => {338 return res.send({339 "response": false,340 "value": "update error"341 });342 });343 } else {344 return res.send({345 "response": false,346 "value": "token is not master onwe"347 });348 }349 },350 err => {351 return res.send({352 "response": false,353 "value": "not find user"354 });355 }356 );357 })358}359// delete comment360exports.delete_testimonial = (req, res) => {361 let {_id} = req.body;362 let {phone} = req.user;363 if (phone === undefined || _id === undefined) {364 return res.send({365 "response": false,366 "value": "not find params "367 });368 }369 Users.FindOneUserObj({phone})370 .then(userf => {371 if (userf) {372 if (userf.roleType !== 0) {373 return res.send({374 "response": false,375 "value": "user is not allowed to view this content"376 });377 }378 DeleteOneTestimonial({_id})379 .then(testimonal => {380 if (!testimonal) return res.send({381 "response": false,382 "value": "not find user comment"383 });384 res.send({385 "response": true,386 "value": testimonal387 });388 }, err => {389 return res.send({390 "response": false,391 "value": "not find user comment"392 });393 });394 } else {395 return res.send({396 "response": false,397 "value": "token is not master onwe"398 });399 }400 },401 err => {402 return res.send({403 "response": false,404 "value": "not find user"405 });406 }407 );...

Full Screen

Full Screen

advertiseController.js

Source:advertiseController.js Github

copy

Full Screen

1'use strict';2const advertise = require('../models/advertiseModel'),3 user = require('../controllers/userController'),4 path = require('path'),5 multer = require('multer'),6 fsextra = require('fs-extra'),7 config = require('../config');8let FindOneAdvertise = (obj) => {9 return new Promise((resolve, reject) => {10 advertise.findOne(obj, function (err, adv) {11 if (err) return reject(err);12 resolve(adv);13 });14 });15};16let FindAllAdvertise = (obj) => {17 return new Promise((resolve, reject) => {18 advertise.find(obj, function (err, adv) {19 if (err) return reject(err);20 resolve(adv);21 }).sort({status: 1, create_at: -1});22 });23};24let UpdateAdvertise = (condition, Obj) => {25 return new Promise((resolve, reject) => {26 advertise.findOneAndUpdate(condition, Obj, {new: true}, function (err, adv) {27 if (err) reject(err);28 resolve(adv);29 });30 });31};32//delete on Advertise33let DeleteOneAdvertise = (obj) => {34 return new Promise((resolve, reject) => {35 advertise.findOneAndRemove(obj, function (err, adv) {36 if (err) return reject(err);37 //remove icon old38 try {39 fsextra.remove(path.join(`${config.folder_uploads}`, `advertises`, `${adv.url_image}`));40 resolve(adv);41 } catch (err) {42 return reject(err);43 }44 });45 });46}47let uploadDir = config.folder_temp;48let Storage = multer.diskStorage({49 destination: uploadDir,50 filename: function (req, file, callback) {51 callback(null, file.fieldname + '-' + Date.now() + ".jpg");52 }53});54/*55* function upload ảnh kiểm tra ảnh định dạng đuôi có phải là png, jpg, hay jpeg56* dung lượng tối đa cho phép là 6 mb57* */58let upload = multer({59 storage: Storage,60 fileFilter: function (req, file, callback) {61 let ext = path.extname(file.originalname).toLowerCase();62 if (ext !== '.png'63 && ext !== '.jpg'64 && ext !== '.jpeg'65 ) {66 return callback(new Error('Only images are allowed'))67 }68 callback(null, true)69 },70 limits: {71 fileSize: 600000072 }73}).single('image'); //Field name and max count74exports.insert_one = function (req, res) {75 upload(req, res, function (err) {76 if (err) {77 return res.send({78 "response": false,79 "value": "upload file fail"80 });81 }82 if (req.file) {83 if (req.user.phone === undefined) {84 return res.send({85 "response": false,86 "value": "user not found"87 });88 }89 user.find_user_phone(req.user.phone)90 .then(user => {91 if (user.roleType === 0) {92 let newAdv = new advertise(req.body);93 newAdv.url_image = req.file.filename;94 newAdv.save(function (err, adves) {95 if (err) return res.send({96 response: false,97 value: err,98 });99 fsextra.moveSync(100 path.join(`${config.folder_temp}`, `${req.file.filename}`),101 path.join(`${config.folder_uploads}`, `advertises`, `${req.file.filename}`),102 {overwrite: true});103 res.send({104 response: true,105 value: adves,106 })107 })108 } else {109 return res.send({110 "response": false,111 "value": "user isn't admin, only admin insert, update, delete Advertise"112 });113 }114 },115 err => {116 return res.send({117 "response": false,118 "value": "find user fail"119 });120 }121 )122 } else {123 return res.send({124 "response": false,125 "value": "save image fail"126 });127 }128 });129};130exports.update_advertises = function (req, res) {131 let {_id} = req.body;132 if (req.user.phone === undefined || _id === undefined) {133 return res.send({134 "response": false,135 "value": "user not found"136 });137 }138 user.find_user_phone(req.user.phone)139 .then(user => {140 if (user.roleType === 0) {141 UpdateAdvertise({_id}, req.body).then(142 catu => {143 if (catu) {144 res.send({145 response: true,146 value: catu,147 })148 } else {149 return res.send({150 "response": false,151 "value": "update false"152 });153 }154 }, err => {155 return res.send({156 "response": false,157 "value": "update advertise fail"158 });159 }160 )161 } else {162 return res.send({163 "response": false,164 "value": "user isn't admin, only admin insert, update, delete Advertise"165 });166 }167 },168 err => {169 return res.send({170 "response": false,171 "value": "loi tim user "172 });173 }174 )175};176exports.update_advertise_image = function (req, res) {177 upload(req, res, function (err) {178 if (err) {179 return res.send({180 "response": false,181 "value": "error save image"182 });183 }184 if (req.file) {185 let {_id} = req.body;186 if (req.user.phone === undefined || _id === undefined) {187 return res.send({188 "response": false,189 "value": "user not found"190 });191 }192 user.find_user_phone(req.user.phone)193 .then(user => {194 if (user.roleType === 0) {195 let obj = req.body;196 obj.url_image = req.file.filename;197 FindOneAdvertise({_id})198 .then(advf => {199 UpdateAdvertise({_id}, obj).then(200 advup => {201 if (advup) {202 //remove icon old203 try {204 fsextra.remove(path.join(`${config.folder_uploads}`, `advertises`, `${advf.icon}`));205 console.log('success!')206 } catch (err) {207 console.error(err)208 }209 fsextra.moveSync(210 path.join(`${config.folder_temp}`, `${req.file.filename}`),211 path.join(`${config.folder_uploads}`, `advertises`, `${req.file.filename}`),212 {overwrite: true});213 res.send({214 response: true,215 value: advup,216 })217 } else {218 return res.send({219 "response": false,220 "value": "update false"221 });222 }223 }, err => {224 return res.send({225 "response": false,226 "value": "update info advertises"227 });228 }229 )230 }, err => {231 return res.send({232 "response": false,233 "value": " find advertise fail"234 });235 })236 } else {237 return res.send({238 "response": false,239 "value": "user isn't admin, only admin insert, update, delete Advertise"240 });241 }242 },243 err => {244 return res.send({245 "response": false,246 "value": "find user fail"247 });248 }249 )250 } else {251 return res.send({252 "response": false,253 "value": "save image fail"254 });255 }256 });257};258exports.delete_adver = function (req, res) {259 let {_id} = req.body;260 if (req.user.phone === undefined || _id === undefined) {261 return res.send({262 "response": false,263 "value": "user not found"264 });265 }266 user.find_user_phone(req.user.phone)267 .then(user => {268 if (user.roleType === 0) {269 DeleteOneAdvertise({_id})270 .then(advdel => {271 if (advdel) {272 res.send({273 response: true,274 value: advdel,275 })276 } else {277 return res.send({278 "response": false,279 "value": "delete false"280 });281 }282 }, err => {283 return res.send({284 "response": false,285 "value": "err delete advertises"286 });287 }288 )289 } else {290 return res.send({291 "response": false,292 "value": "user isn't admin, only admin insert, update, delete Advertise"293 });294 }295 },296 err => {297 return res.send({298 "response": false,299 "value": "find user fail",300 });301 }302 )303};304exports.list_all_advertise = function (req, res) {305 FindAllAdvertise({})306 .then(advs => {307 res.send({308 response: true,309 value: advs,310 })311 }, (err) => {312 return res.send({313 response: false,314 value: err,315 })316 });317};318exports.list_advertise_active = function (req, res) {319 FindAllAdvertise({status: 1})320 .then(advs => {321 res.send({322 response: true,323 value: advs,324 })325 }, (err) => {326 return res.send({327 response: false,328 value: err,329 })330 });...

Full Screen

Full Screen

categoryController.js

Source:categoryController.js Github

copy

Full Screen

1'use strict';2const category = require('../models/categoryModel'),3 user = require('../controllers/userController'),4 path = require('path'),5 multer = require('multer'),6 fsextra = require('fs-extra'),7 config = require('../config');8let FindOneCategories = (obj) => {9 return new Promise((resolve, reject) => {10 category.findOne(obj, function (err, cate) {11 if (err) return reject(err);12 resolve(cate);13 });14 });15};16let UpdateCategory = (condition, Obj) => {17 return new Promise((resolve, reject) => {18 category.findOneAndUpdate(condition, Obj, {new: true}, function (err, cate) {19 if (err) reject(err);20 resolve(cate);21 });22 });23};24//delete on Cat25let DeleteOneCat = (obj) => {26 return new Promise((resolve, reject) => {27 category.findOneAndRemove(obj, function (err, cat) {28 if (err) return reject(err);29 //remove icon old30 try {31 fsextra.remove(path.join(`${config.folder_uploads}`, `categories`, `${cat.icon}`));32 resolve(cat);33 } catch (err) {34 return reject(err);35 }36 });37 });38}39let uploadDir = config.folder_temp;40let Storage = multer.diskStorage({41 destination: uploadDir,42 filename: function (req, file, callback) {43 callback(null, file.fieldname + '-' + Date.now() + ".jpg");44 }45});46/*47* function upload ảnh kiểm tra ảnh định dạng đuôi có phải là png, jpg, hay jpeg48* dung lượng tối đa cho phép là 6 mb49* */50let upload = multer({51 storage: Storage,52 fileFilter: function (req, file, callback) {53 let ext = path.extname(file.originalname).toLowerCase();54 if (ext !== '.png'55 && ext !== '.jpg'56 && ext !== '.jpeg'57 ) {58 return callback(new Error('Only images are allowed'))59 }60 callback(null, true)61 },62 limits: {63 fileSize: 600000064 }65}).single('icon'); //Field name and max count66exports.insert_one = function (req, res) {67 upload(req, res, function (err) {68 if (err) {69 return res.send({70 "response": false,71 "value": err72 });73 }74 if (req.file) {75 if (req.user.phone === undefined) {76 return res.send({77 "response": false,78 "value": "user not found"79 });80 }81 user.find_user_phone(req.user.phone)82 .then(user => {83 if (user.roleType === 0) {84 let newCat = new category(req.body);85 newCat.icon = req.file.filename;86 newCat.save(function (err, categories) {87 if (err) return res.send({88 response: false,89 value: err,90 });91 fsextra.moveSync(92 path.join(`${config.folder_temp}`, `${req.file.filename}`),93 path.join(`${config.folder_uploads}`, `categories`, `${req.file.filename}`),94 {overwrite: true});95 res.send({96 response: true,97 value: categories,98 })99 })100 } else {101 return res.send({102 "response": false,103 "value": "user isn't admin, only admin insert, update, delete category"104 });105 }106 },107 err => {108 return res.send({109 "response": false,110 "value": err111 });112 }113 )114 } else {115 return res.send({116 "response": false,117 "value": "save image fail"118 });119 }120 });121};122exports.update_cat = function (req, res) {123 let {_id} = req.body;124 if (req.user.phone === undefined || _id === undefined) {125 return res.send({126 "response": false,127 "value": "user not found"128 });129 }130 user.find_user_phone(req.user.phone)131 .then(user => {132 if (user.roleType === 0) {133 UpdateCategory({_id}, req.body).then(134 catu => {135 if (catu) {136 res.send({137 response: true,138 value: catu,139 })140 } else {141 return res.send({142 "response": false,143 "value": "update false"144 });145 }146 }, err => {147 return res.send({148 "response": false,149 "value": err150 });151 }152 )153 } else {154 return res.send({155 "response": false,156 "value": "user isn't admin, only admin insert, update, delete category"157 });158 }159 },160 err => {161 return res.send({162 "response": false,163 "value": "loi tim user "164 });165 }166 )167};168exports.update_cat_image = function (req, res) {169 upload(req, res, function (err) {170 if (err) {171 return res.send({172 "response": false,173 "value": err174 });175 }176 if (req.file) {177 let {_id} = req.body;178 if (req.user.phone === undefined || _id === undefined) {179 return res.send({180 "response": false,181 "value": "user not found"182 });183 }184 user.find_user_phone(req.user.phone)185 .then(user => {186 if (user.roleType === 0) {187 let obj = req.body;188 obj.icon = req.file.filename;189 FindOneCategories({_id})190 .then(catf => {191 UpdateCategory({_id}, obj).then(192 catu => {193 if (catu) {194 //remove icon old195 try {196 fsextra.remove(path.join(`${config.folder_uploads}`, `categories`, `${catf.icon}`));197 console.log('success!')198 } catch (err) {199 console.error(err)200 }201 fsextra.moveSync(202 path.join(`${config.folder_temp}`, `${req.file.filename}`),203 path.join(`${config.folder_uploads}`, `categories`, `${req.file.filename}`),204 {overwrite: true});205 res.send({206 response: true,207 value: catu,208 })209 } else {210 return res.send({211 "response": false,212 "value": "update false"213 });214 }215 }, err => {216 return res.send({217 "response": false,218 "value": err219 });220 }221 )222 }, err => {223 return res.send({224 "response": false,225 "value": err226 });227 })228 } else {229 return res.send({230 "response": false,231 "value": "user isn't admin, only admin insert, update, delete category"232 });233 }234 },235 err => {236 return res.send({237 "response": false,238 "value": err239 });240 }241 )242 } else {243 return res.send({244 "response": false,245 "value": "save image fail"246 });247 }248 });249};250exports.delete_cat = function (req, res) {251 let {_id} = req.body;252 if (req.user.phone === undefined || _id === undefined) {253 return res.send({254 "response": false,255 "value": "user not found"256 });257 }258 user.find_user_phone(req.user.phone)259 .then(user => {260 if (user.roleType === 0) {261 DeleteOneCat({_id})262 .then(catdel => {263 if (catdel) {264 res.send({265 response: true,266 value: catdel,267 })268 } else {269 return res.send({270 "response": false,271 "value": "delete false"272 });273 }274 }, err => {275 return res.send({276 "response": false,277 "value": err278 });279 }280 )281 } else {282 return res.send({283 "response": false,284 "value": "user isn't admin, only admin insert, update, delete category"285 });286 }287 },288 err => {289 return res.send({290 "response": false,291 "value": err,292 });293 }294 )295};296exports.list_categories = function (req, res) {297 category.find({}, function (err, categories) {298 if (err) return res.send({299 response: false,300 value: err,301 });302 res.send({303 response: true,304 value: categories,305 })306 }).sort({label:1})...

Full Screen

Full Screen

index.js

Source:index.js Github

copy

Full Screen

1const Generator = require('yeoman-generator');2const chalk = require('chalk');3const yosay = require('yosay');4const initJson = require('init-package-json');5const DownloadGit = require('download-git-repo');6const path = require('path');7const fsextra = require('fs-extra');8const replaceInFile = require('replace-in-file');9const formatJson = require('format-json');10const archiveDir = 'temp';11const defaultComponentName = 'react-component-template';12const defaultGlobalComponentName = 'ReactComponentTemplate';// eslint-disable-line13let defaultPackageJson = {};14let newComponentName = '';15let newGlobalComponentName = '';// eslint-disable-line16module.exports = class extends Generator {17 initializing() {18 this.log(19 yosay(`20 Welcome to the ${chalk.red('generator-react-component-magic')} generator!21 `)22 );23 }24 async executeMethod() {25 this.log('execute start');26 // 1. 下载包27 await this._downloadTemplate();// eslint-disable-line28 // 2. 复制指定的文件到工作目录下29 await this._copyTemplate();// eslint-disable-line30 // 4. merge package.json31 await this._mergePackageJson();// eslint-disable-line32 // 5. 读取package.json信息,修改模板中的占位符33 await this._handlePlaceHolder();// eslint-disable-line34 // 完毕35 }36 // 1. 下载包37 // TODO 显示下载进度38 _downloadTemplate() {39 this.log(40 'download template from https://github.com/58-magic/react-component-template'41 );42 this.log(`${chalk.red('......')}`);43 return new Promise(resolve =>44 DownloadGit(45 'https://github.com:58-magic/react-component-template',46 archiveDir,47 err => {48 // TODO 错误捕获49 err ? this.log(`${chalk.red(err)}`) : this.log('downloaded');// eslint-disable-line50 resolve();// eslint-disable-line51 }52 )53 );54 }55 // 2. 复制指定的文件到工作目录下56 _copyTemplate() {57 this.log('copy template');58 // 记录默认的package.json数据59 defaultPackageJson = fsextra.readJsonSync(60 this._getFilePath(archiveDir, 'package.json')// eslint-disable-line61 );62 // 删除无用文件63 const deleteFileArr = ['LICENSE', 'package-lock.json', 'README.md', 'package.json'];64 deleteFileArr.forEach(name => fsextra.removeSync(this._getFilePath(archiveDir, name)));// eslint-disable-line65 // 复制,自动删除了archiveDir目录66 fsextra.moveSync(this._getFilePath(archiveDir, '.'), process.cwd());// eslint-disable-line67 this.log('copy template done!');68 return Promise.resolve();69 }70 // 3. merge package.json71 _mergePackageJson() {72 this.log('init package.json');73 const initFile = path.resolve(process.env.HOME, '.npm-init');74 // the dir where we're doin stuff.75 const dir = process.cwd();76 const configData = {};77 return new Promise(resolve =>78 initJson(dir, initFile, configData, (err, data) => {79 // TODO 错误捕获80 err ? this.log(`${chalk.red(err)}`) : this.log('package.json done!');// eslint-disable-line81 const config = Object.assign({}, defaultPackageJson, {82 name: data.name,83 version: data.version,84 description: data.description,85 author: data.author,86 repository: data.repository,87 bugs: data.bugs,88 homepage: data.homepage89 });90 newComponentName = config.name;91 //92 newGlobalComponentName = newComponentName93 .split('-')94 .map(letter => letter[0].toUpperCase() + letter.slice(1))95 .join('');96 fsextra.writeFileSync(97 this._getFilePath('.', 'package.json'), // eslint-disable-line98 formatJson.plain(config)99 );100 resolve();101 })102 );103 }104 // 4. 修改模板中的占位符105 _handlePlaceHolder() {106 this.log('handle placeholder');107 // TODO 如此执行效率最高,但配置是写死了108 // 如果要拓展可以写成搜索全目录下的placeholder109 const opt1 = {110 files: [111 path.join(process.cwd(), 'webpack.config.js'),112 path.join(process.cwd(), 'rollup.config.js'),113 path.join(process.cwd(), 'examples/src/app.js')114 ],115 from: new RegExp(defaultComponentName, 'g'),116 to: newComponentName117 };118 // replaceInFile(options);119 replaceInFile.sync(opt1);120 const opt2 = {121 files: path.join(process.cwd(), 'rollup.config.js'),122 from: new RegExp(defaultGlobalComponentName, 'g'),123 to: newGlobalComponentName124 };125 replaceInFile.sync(opt2);126 this.log('finish !');127 }128 // 获取文件路径129 /* eslint-disable */130 _getFilePath(pathname, filename) {131 return path.join(process.cwd(), pathname, filename);132 }...

Full Screen

Full Screen

app.js

Source:app.js Github

copy

Full Screen

1'use strict';23// Libraries4const path = require('path');5const fs = require('fs');6const fsextra = require('fs-extra')78// IBM STT init and config9const { IamAuthenticator } = require('ibm-watson/auth');10const SpeechToTextV1 = require('ibm-watson/speech-to-text/v1');11const speechToText = new SpeechToTextV1({12 authenticator: new IamAuthenticator({13 apikey: '<your-apikey>',14 }),15 serviceUrl: '<your-serviceUrl>',16});171819// MAIN function20console.log('IBM Speech to Text using NodeJS\n');21var comProtocol = 'websockets';22var audioSources = 'audios/';23console.log(`Communication protocol: ${comProtocol}`)24console.log(`Audio sources: ${audioSources}\n`)2526var audioFiles = fs.readdirSync(audioSources);27if (audioFiles.length > 0) {28 console.log('Processing files...');29 for (const i in audioFiles) {30 let audioFile = audioFiles[i];31 let audioPathfile = path.join(audioSources, audioFile);32 if (fs.lstatSync(audioPathfile).isFile()) {33 console.log(`${audioFile} was read`); 34 let params = getParams(comProtocol, audioPathfile);35 if (comProtocol == 'recognize') { 36 sttRecognize(params, audioPathfile);37 } else {38 sttWebSockets(params, audioPathfile);39 }40 }41 }42} else {43 console.log('Error: There are not files in audios/ folder')44}454647// Get STT params according with a communication protocol48function getParams(comProtocol, audioPathfile) {49 let params = {50 contentType: 'audio/mp3',51 model: 'es-CO_NarrowbandModel',52 keywords: ['grabada y monitoreada', 'términos y condiciones'],53 keywordsThreshold: 0.5,54 inactivityTimeout: -1,55 speakerLabels: true 56 };57 if (comProtocol == 'recognize') {58 params["audio"] = fs.createReadStream(audioPathfile);59 } else if (comProtocol == 'websockets') {60 params["objectMode"] = true;61 }62 return params;63}646566// Using STT Recognize67function sttRecognize(params, audioPathfile) {68 let audioFile = path.parse(audioPathfile).base;69 speechToText.recognize(params)70 .then(response => {71 let dataJSON = JSON.stringify(response.result, null, 2);72 saveJSONFile(audioFile, dataJSON);73 moveFile('audios', 'audios/read', audioFile);74 })75 .catch(err => {76 console.log(err);77 });78}798081// Using STT WebSockets82function sttWebSockets(params, audioPathfile) {83 let audioFile = path.parse(audioPathfile).base;84 const recognizeStream = speechToText.recognizeUsingWebSocket(params);85 fs.createReadStream(audioPathfile).pipe(recognizeStream);86 recognizeStream.on('data', function(event) { onEvent('Data', event, audioFile); });87 recognizeStream.on('error', function(event) { onEvent('Error', event, audioFile); });88 recognizeStream.on('close', function(event) { onEvent('Close', event, audioFile); });89}909192// Auxiliar function for STT WebSockets93function onEvent(name, event, audioFile) {94 if (name == 'Data') {95 let dataJSON = JSON.stringify(event, null, 2);96 saveJSONFile(audioFile, dataJSON);97 moveFile('audios', 'audios/read', audioFile);98 } else {99 console.log(`${name}: ${event}, recognizing ${audioFile}`);100 }101}102103104// Save JSON file with filename of audiofile105function saveJSONFile(audioFile, dataJSON) {106 let filename = audioFile.split('.').slice(0, -1).join('.');107 let jsonFile = `${filename}.json`;108 fs.writeFileSync('json/' + jsonFile, dataJSON);109 console.log(`${jsonFile} file was saved`);110}111112113// Move file114function moveFile(source, destination, file) {115 fsextra.move(`${source}/${file}`, `${destination}/${file}`, function (err) {116 if (err) {117 return console.error(err);118 }119 console.log(`${file} was moved to ${destination}/`);120 }) ...

Full Screen

Full Screen

uploader.js

Source:uploader.js Github

copy

Full Screen

1"use strict";2const SocketIOFileUploadServer = require("socketio-file-upload/server");3const Helper = require("../helper");4const path = require("path");5const fsextra = require("fs-extra");6const fs = require("fs");7const fileType = require("file-type");8const readChunk = require("read-chunk");9const crypto = require("crypto");10const isUtf8 = require("is-utf8");11const log = require("../log");12const whitelist = [13 "application/ogg",14 "audio/midi",15 "audio/mpeg",16 "audio/ogg",17 "audio/vnd.wave",18 "image/bmp",19 "image/gif",20 "image/jpeg",21 "image/png",22 "image/webp",23 "text/plain",24 "video/mp4",25 "video/ogg",26 "video/webm",27];28class Uploader {29 constructor(socket) {30 const uploader = new SocketIOFileUploadServer();31 const folder = path.join(Helper.getFileUploadPath(), ".tmp");32 fsextra.ensureDir(folder, (err) => {33 if (err) {34 log.err(`Error ensuring ${folder} exists for uploads.`);35 } else {36 uploader.dir = folder;37 }38 });39 uploader.on("complete", (data) => {40 let randomName;41 let destPath;42 // Generate a random file name for storage on disk43 do {44 randomName = crypto.randomBytes(8).toString("hex");45 destPath = path.join(Helper.getFileUploadPath(), randomName.substring(0, 2), randomName);46 } while (fs.existsSync(destPath));47 fsextra.move(data.file.pathName, destPath).then(() => {48 const slug = encodeURIComponent(path.basename(data.file.pathName));49 const url = `uploads/${randomName}/${slug}`;50 socket.emit("upload:success", url);51 }).catch(() => {52 log.warn(`Unable to move uploaded file "${data.file.pathName}"`);53 // Emit failed upload to the client if file move fails54 socket.emit("siofu_error", {55 id: data.file.id,56 message: "Unable to move uploaded file",57 });58 });59 });60 uploader.on("error", (data) => {61 log.error(`File upload failed: ${data.error}`);62 });63 // maxFileSize is in bytes, but config option is passed in as KB64 uploader.maxFileSize = Uploader.getMaxFileSize();65 uploader.listen(socket);66 }67 static isValidType(mimeType) {68 return whitelist.includes(mimeType);69 }70 static router(express) {71 express.get("/uploads/:name/:slug*?", (req, res) => {72 const name = req.params.name;73 const nameRegex = /^[0-9a-f]{16}$/;74 if (!nameRegex.test(name)) {75 return res.status(404).send("Not found");76 }77 const folder = name.substring(0, 2);78 const uploadPath = Helper.getFileUploadPath();79 const filePath = path.join(uploadPath, folder, name);80 const type = Uploader.getFileType(filePath);81 const mimeType = type || "application/octet-stream";82 const contentDisposition = Uploader.isValidType(type) ? "inline" : "attachment";83 // doesn't exist84 if (type === undefined) {85 return res.status(404).send("Not found");86 }87 res.setHeader("Content-Disposition", contentDisposition);88 res.setHeader("Cache-Control", "max-age=86400");89 res.contentType(mimeType);90 return res.sendFile(filePath);91 });92 }93 static getMaxFileSize() {94 const configOption = Helper.config.fileUpload.maxFileSize;95 if (configOption === -1) { // no file size limit96 return null;97 }98 return configOption * 1024;99 }100 static getFileType(filePath) {101 let buffer;102 let type;103 try {104 buffer = readChunk.sync(filePath, 0, fileType.minimumBytes);105 } catch (e) {106 if (e.code === "ENOENT") { // doesn't exist107 return;108 }109 log.warn(`Failed to read ${filePath}`);110 return;111 }112 // returns {ext, mime} if found, null if not.113 const file = fileType(buffer);114 if (file) {115 type = file.mime;116 } else if (isUtf8(buffer)) {117 type = "text/plain";118 }119 return type;120 }121}...

Full Screen

Full Screen

fs-extra.js

Source:fs-extra.js Github

copy

Full Screen

1var fsextra = require('fs-extra');2//刪除有內容的目錄3fsextra.remove('./test',function(err){4 if(err){5 console.error(err);6 return;7 }8 console.log('Renamed');9});10//搬移檔案11fsextra.move('./test/test.js','./test1/demo.js',function(err){12 if(err){13 console.error(err);14 }15 console.log('Moved');16});17//搬移且覆蓋目標路徑18fsextra.move('./test/test.js','./test1/demo.js',{clobber : true},function(err){19 if(err){20 console.error(err);21 return;22 }23 console.log('Moved');24});25//複製檔案26fsextra.copy('./test/test.js','./test1/demo.js',function(err){27 if(err){28 console.error(err);29 return;30 }31 console.log('Copied');...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1const fsExtra = require('fs-extra');2const path = require('path');3const src = path.join(__dirname, 'test.txt');4const dest = path.join(__dirname, 'test', 'test.txt');5fsExtra.move(src, dest, { overwrite: true }, (err) => {6 if (err) return console.error(err);7 console.log('success!');8});9describe('test file move', () => {10 it('should move the file', () => {11 cy.exec('node test.js');12 });13});

Full Screen

Using AI Code Generation

copy

Full Screen

1const fsExtra = require('fs-extra')2fsExtra.move('cypress/integration/MyTest.spec.js', 'cypress/integration/MyTest2.spec.js', {overwrite: true}, err => {3 if (err) return console.error(err)4 console.log('success!')5})6{7}8{9 "scripts": {10 }11}12describe('My Test', () => {13 it('does something', () => {14 expect(true).to.equal(true)15 })16})17const fsExtra = require('fs-extra')18fsExtra.move('cypress/integration/MyTest.spec.js', 'cypress/integration/MyTest2.spec.js', {overwrite: true}, err => {19 if (err) return console.error(err)20 console.log('success!')21})22{23}24{25 "scripts": {26 }27}28describe('My Test', () => {29 it('does something', () => {30 expect(true).to.equal(true)31 })32})

Full Screen

Using AI Code Generation

copy

Full Screen

1const fs = require('fs-extra')2fs.move('test.txt', 'cypress/fixtures/test.txt', { overwrite: true })3 .then(() => console.log('success!'))4 .catch(err => console.error(err))5describe('My First Test', () => {6 it('Does not do much!', () => {7 cy.contains('type').click()8 cy.url().should('include', '/commands/actions')9 cy.get('.action-email')10 .type('

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('Test', function() {2 it('Test', function() {3 cy.task('moveFile', { src: 'cypress/fixtures/test.txt', dest: 'cypress/fixtures/test/test.txt' })4 })5})6const fsExtra = require('fs-extra')7module.exports = (on, config) => {8 on('task', {9 moveFile({ src, dest }) {10 return fsExtra.move(src, dest)11 }12 })13}14const fsExtra = require('fs-extra')15describe('Test', function() {16 it('Test', function() {17 fsExtra.move('cypress/fixtures/test.txt', 'cypress/fixtures/test/test.txt')18 })19})

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('Test', () => {2 it('Test', () => {3 cy.task('moveFile', {from: 'cypress/fixtures/test.txt', to: 'cypress/fixtures/test.txt'});4 });5});6const fsExtra = require('fs-extra');7module.exports = (on, config) => {8 on('task', {9 moveFile({from, to}) {10 fsExtra.move(from, to)11 .then(() => {12 return null;13 })14 .catch(err => {15 return err;16 });17 }18 });19};

Full Screen

Using AI Code Generation

copy

Full Screen

1const fsExtra = require('fs-extra');2fsExtra.move('cypress/screenshots/test.js/test.js -- should -- test -- 1.png', 'cypress/screenshots/test.js/test.js -- should -- test -- 1.png', { overwrite: true })3.then(() => {4console.log('success!')5}).catch(err => {6console.error(err)7})

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('Cypress fsExtra.move', () => {2 it('should move a file', () => {3 cy.task('moveFile', {from: 'cypress/fixtures/someFile.txt', to: 'cypress/fixtures/someFile2.txt'})4 })5})6const fsExtra = require('fs-extra')7module.exports = (on, config) => {8 on('task', {9 moveFile({from, to}) {10 return fsExtra.move(from, to)11 }12 })13}14require('cypress-plugin-snapshots/commands')15Cypress.Commands.add('getBySel', (selector, ...args) => {16 return cy.get(`[data-test=${selector}]`, ...args)17})18Cypress.Commands.add('getBySelLike', (selector, ...args) => {19 return cy.get(`[data-test*=${selector}]`, ...args)20})21Cypress.Commands.add('getBySelLike', (selector, ...args) => {22 return cy.get(`[data-test*=${selector}]`, ...args)23})24Cypress.Commands.add('getBySelLike', (selector, ...args) => {25 return cy.get(`[data-test*=${selector}]`, ...args)26})27Cypress.Commands.add('getBySelLike', (selector, ...args) => {28 return cy.get(`[data-test*=${selector}]`, ...args)29})30Cypress.Commands.add('getBySelLike', (selector, ...args) => {31 return cy.get(`[data-test*=${selector}]`, ...args)32})33Cypress.Commands.add('getBySelLike', (selector, ...args) => {34 return cy.get(`[data-test*=${selector}]`, ...args)35})36Cypress.Commands.add('getBySelLike', (selector, ...args) => {37 return cy.get(`[data-test*=${selector}]`, ...args)38})

Full Screen

Using AI Code Generation

copy

Full Screen

1import { move } from "fs-extra";2describe("test", () => {3 it("test", () => {4 cy.task("moveFile", "testFile.txt").then(() => {5 cy.readFile("cypress/fixtures/testFile.txt").then((file) => {6 expect(file).to.equal("test");7 });8 });9 });10});11const fs = require("fs-extra");12const path = require("path");13module.exports = (on, config) => {14 on("task", {15 moveFile(fileName) {16 const filePath = path.join(__dirname, `../${fileName}`);17 const destination = path.join(__dirname, `../fixtures/${fileName}`);18 return fs.move(filePath, destination);19 },20 });21};22{23}24{25 "scripts": {26 },27 "devDependencies": {28 }29}

Full Screen

Cypress Tutorial

Cypress is a renowned Javascript-based open-source, easy-to-use end-to-end testing framework primarily used for testing web applications. Cypress is a relatively new player in the automation testing space and has been gaining much traction lately, as evidenced by the number of Forks (2.7K) and Stars (42.1K) for the project. LambdaTest’s Cypress Tutorial covers step-by-step guides that will help you learn from the basics till you run automation tests on LambdaTest.

Chapters:

  1. What is Cypress? -
  2. Why Cypress? - Learn why Cypress might be a good choice for testing your web applications.
  3. Features of Cypress Testing - Learn about features that make Cypress a powerful and flexible tool for testing web applications.
  4. Cypress Drawbacks - Although Cypress has many strengths, it has a few limitations that you should be aware of.
  5. Cypress Architecture - Learn more about Cypress architecture and how it is designed to be run directly in the browser, i.e., it does not have any additional servers.
  6. Browsers Supported by Cypress - Cypress is built on top of the Electron browser, supporting all modern web browsers. Learn browsers that support Cypress.
  7. Selenium vs Cypress: A Detailed Comparison - Compare and explore some key differences in terms of their design and features.
  8. Cypress Learning: Best Practices - Take a deep dive into some of the best practices you should use to avoid anti-patterns in your automation tests.
  9. How To Run Cypress Tests on LambdaTest? - Set up a LambdaTest account, and now you are all set to learn how to run Cypress tests.

Certification

You can elevate your expertise with end-to-end testing using the Cypress automation framework and stay one step ahead in your career by earning a Cypress certification. Check out our Cypress 101 Certification.

YouTube

Watch this 3 hours of complete tutorial to learn the basics of Cypress and various Cypress commands with the Cypress testing at LambdaTest.

Run Cypress automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful