UNPKG

@zargu/couchdb-designer

Version:

Create and testing couchdb design document form directory structure.

48 lines (44 loc) 1.86 kB
import {getTestContext} from '../../../build/testing/testEnvironment'; import { update } from '../changes/updateDocument'; import supplementRequest from '../../util/supplementRequest'; const getDocument = (database,id) => { let doc = false; if(id){ for(let document of database){ if(id === document._id){ doc = {...document}; } } } return doc; } const createTestUpdateFunction = (contextId,updateName,context) => { return (req,id) => { try{ if(typeof req === 'object'){ let {database} = getTestContext(contextId); let request = supplementRequest(req,id,contextId,`${database.name}/${context.id}/_updates/${updateName}`,true); let oldDoc = getDocument(database.data,id); let result = context.updates[updateName](oldDoc ? {...oldDoc} : undefined ,request); if(result && Array.isArray(result) && result.length === 2){ let newDoc = result[0]; if(newDoc === null){ return result[1]; }else if(typeof newDoc === 'object' && newDoc._id){ update(contextId,newDoc,request.userCtx); return result[1]; }else{ return `An update function result's first element must be null or object but this is ${newDoc}!`; } }else{ return `An update function must return a two element array! update.${updateName} result is ${result}`; } }else{ return `Missing request parameter in calling update.${updateName}!`; } }catch(error){ return error; } }; } export default createTestUpdateFunction;