Skip to content

Commit 392fe41

Browse files
committed
fixed findOneAndUpdate
1 parent 7383c36 commit 392fe41

File tree

3 files changed

+48
-4
lines changed

3 files changed

+48
-4
lines changed

app/lib/__tests__/undebates-from-template-and-rows.js

+41-1
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,56 @@ const inputRowObjs = [
2525
{ Seat: 'President', Name: 'Jane Doe', Email: 'janedoe@doe.com' },
2626
]
2727

28+
let outRowObjs
29+
2830
test('create an election in the db', async () => {
2931
const { rowObjs, messages } = await undebatesFromTemplateAndRows(viewerRecorderTemplate, inputRowObjs)
30-
console.info('messages', messages)
32+
outRowObjs = rowObjs
33+
expect(rowObjs[0].viewer_url).toBe('https://cc.enciv.org/country:us/organization:cfa/office:president/2021-03-21')
34+
expect(rowObjs[0].recorder_url).toMatch(
35+
/https:\/\/cc.enciv.org\/country:us\/organization:cfa\/office:president\/2021-03-21-recorder-[a-f\d]{24}$/
36+
)
37+
const viewers = await Iota.find({ path: '/country:us/organization:cfa/office:president/2021-03-21' })
38+
expect(viewers[0]).toMatchObject(viewerRecorderTemplate.candidateViewer)
39+
const [recorder0] = await Iota.find({ 'bp_info.candidate_name': rowObjs[0].Name })
40+
expect(recorder0).toMatchObject(viewerRecorderTemplate.candidateRecorder)
41+
const [recorder1] = await Iota.find({ 'bp_info.candidate_name': rowObjs[1].Name })
42+
expect(recorder1).toMatchObject(viewerRecorderTemplate.candidateRecorder)
43+
expect(recorder0.parentId).toBe(MongoModels.ObjectID(viewers[0]._id).toString())
44+
expect(recorder1.parentId).toBe(MongoModels.ObjectID(viewers[0]._id).toString())
45+
})
46+
47+
test('update the agenda', async () => {
48+
viewerRecorderTemplate.candidateViewer.webComponent.participants.moderator.agenda = [
49+
['New Introductions', '1- Name', '2- Planet', '3- language', '4- What role are you running for?'],
50+
['How did you evolve?'],
51+
['What is your favorite pet'],
52+
['How do we get off this planet'],
53+
[
54+
'What is the one thing you want us to know about your candidacy that was not covered by the candidate questions provided?',
55+
],
56+
['Thank you!'],
57+
]
58+
viewerRecorderTemplate.candidateRecorder.component.participants.moderator.agenda = [
59+
['1- How To', '2- Record Placeholder'],
60+
['New Introductions', '1- Name', '2- Planet', '3- language', '4- What role are you running for?'],
61+
['How did you evolve?'],
62+
['What is your favorite pet'],
63+
['How do we get off this planet'],
64+
[
65+
'What is the one thing you want us to know about your candidacy that was not covered by the candidate questions provided?',
66+
],
67+
['Thank you!'],
68+
]
69+
const { rowObjs, messages } = await undebatesFromTemplateAndRows(viewerRecorderTemplate, outRowObjs)
3170
expect(rowObjs[0].viewer_url).toBe('https://cc.enciv.org/country:us/organization:cfa/office:president/2021-03-21')
3271
expect(rowObjs[0].recorder_url).toMatch(
3372
/https:\/\/cc.enciv.org\/country:us\/organization:cfa\/office:president\/2021-03-21-recorder-[a-f\d]{24}$/
3473
)
3574
const viewers = await Iota.find({ path: '/country:us/organization:cfa/office:president/2021-03-21' })
3675
expect(viewers[0]).toMatchObject(viewerRecorderTemplate.candidateViewer)
3776
const [recorder0] = await Iota.find({ 'bp_info.candidate_name': rowObjs[0].Name })
77+
3878
expect(recorder0).toMatchObject(viewerRecorderTemplate.candidateRecorder)
3979
const [recorder1] = await Iota.find({ 'bp_info.candidate_name': rowObjs[1].Name })
4080
expect(recorder1).toMatchObject(viewerRecorderTemplate.candidateRecorder)

app/lib/undebates-from-template-and-rows.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ function updateOrCreatePair(csvRowObj, template, messages) {
4545
var viewerObj = cloneDeep(viewers[0])
4646
mergeWithVerbose(viewerObj, template.getViewer(csvRowObj), messages)
4747
template.overWriteViewerInfo.call(template, viewerObj, csvRowObj)
48-
await Iota.findOneAndReplace({ _id: viewerObj._id }, viewerObj)
48+
const newViewerObj = await Iota.findOneAndReplace({ _id: viewerObj._id }, viewerObj, { returnNewDocument: true })
49+
if (!newViewerObj) ko("couldn't update viewer")
4950
var recorders = await Iota.find({ path: template.recorderPath.call(template, csvRowObj) })
5051
if (recorders.length === 0) {
5152
// it didn't exist
@@ -55,7 +56,10 @@ function updateOrCreatePair(csvRowObj, template, messages) {
5556
var newRecorder = cloneDeep(recorders[0])
5657
mergeWithVerbose(newRecorder, template.getRecorder(csvRowObj), messages)
5758
template.overWriteRecorderInfo.call(template, newRecorder, viewerObj, csvRowObj)
58-
var recorderObj = await Iota.findOneAndReplace({ _id: newRecorder._id }, newRecorder)
59+
var recorderObj = await Iota.findOneAndReplace({ _id: newRecorder._id }, newRecorder, {
60+
returnNewDocument: true,
61+
})
62+
if (!recorderObj) ko("couldn't update recorder")
5963
return ok({ viewerObj, recorderObj })
6064
}
6165
}

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "undebate",
3-
"version": "0.0.2",
3+
"version": "0.0.3",
44
"description": "Not debates, but a place where voters can get to know their candidates",
55
"main": "dist/index.js",
66
"scripts": {

0 commit comments

Comments
 (0)