mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 06:37:23 +01:00
tests(api): Add sync method to api objects
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
/* eslint-disable no-use-before-define */
|
||||
|
||||
import { requester } from './requester';
|
||||
import { updateDocument as updateDocumentInMongo } from './mongo';
|
||||
import {
|
||||
getDocument as getDocumentFromMongo,
|
||||
updateDocument as updateDocumentInMongo,
|
||||
} from './mongo';
|
||||
import {
|
||||
assign,
|
||||
each,
|
||||
@@ -25,6 +28,14 @@ class ApiObject {
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
async sync () {
|
||||
let updatedDoc = await getDocumentFromMongo(this._docType, this);
|
||||
|
||||
assign(this, updatedDoc);
|
||||
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
export class ApiUser extends ApiObject {
|
||||
|
||||
@@ -66,6 +66,20 @@ export async function updateDocument (collectionName, doc, update) {
|
||||
});
|
||||
}
|
||||
|
||||
export async function getDocument (collectionName, doc) {
|
||||
let db = await connectToMongo();
|
||||
|
||||
let collection = db.collection(collectionName);
|
||||
|
||||
return new Promise((resolve) => {
|
||||
collection.findOne({ _id: doc._id }, (lookupErr, found) => {
|
||||
if (lookupErr) throw new Error(`Error looking up ${collectionName}: ${lookupErr}`);
|
||||
db.close();
|
||||
resolve(found);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export function connectToMongo () {
|
||||
return new Promise((resolve, reject) => {
|
||||
mongo.connect(DB_URI, (err, db) => {
|
||||
|
||||
Reference in New Issue
Block a user