w-orm-mongodb 1.1.40 → 1.1.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -0
- package/dist/w-orm-mongodb.umd.js +2 -2
- package/dist/w-orm-mongodb.umd.js.map +1 -1
- package/docs/WOrmMongodb.html +11 -11
- package/docs/WOrmMongodb.mjs.html +157 -56
- package/docs/index.html +1 -1
- package/package.json +1 -1
- package/src/WOrmMongodb.mjs +155 -54
- package/test/api-basic.test.mjs +245 -0
- package/test/api-gfs.test.mjs +107 -0
package/test/api-gfs.test.mjs
CHANGED
|
@@ -660,6 +660,113 @@ describe('gfs autoGenPk', function() {
|
|
|
660
660
|
})
|
|
661
661
|
|
|
662
662
|
|
|
663
|
+
describe('gfs error event', function() {
|
|
664
|
+
let vans = {}
|
|
665
|
+
let vget = {}
|
|
666
|
+
|
|
667
|
+
before(async function() {
|
|
668
|
+
this.timeout(300000)
|
|
669
|
+
|
|
670
|
+
//collect, 收集事件
|
|
671
|
+
let collect = (wo) => {
|
|
672
|
+
let evs = []
|
|
673
|
+
wo.on('error', function(mode, data, err) {
|
|
674
|
+
evs.push({ mode, data, err })
|
|
675
|
+
})
|
|
676
|
+
return evs
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
//insertGfs之整批性錯誤
|
|
680
|
+
let woB = WOrm(genOptPk('everrGfs', false))
|
|
681
|
+
await woB.delAllGfs()
|
|
682
|
+
let evsB = collect(woB)
|
|
683
|
+
let msgB = null
|
|
684
|
+
await woB.insertGfs({ u8a: genU8a(100, 1) }).catch((err) => {
|
|
685
|
+
msgB = err.toString()
|
|
686
|
+
})
|
|
687
|
+
vget[1] = evsB.length
|
|
688
|
+
vget[2] = evsB[0].mode
|
|
689
|
+
vget[3] = typeof evsB[0].err === 'string' && msgB.indexOf(evsB[0].err) >= 0
|
|
690
|
+
|
|
691
|
+
//delGfs之逐筆失敗, 未帶有效id者亦須發出
|
|
692
|
+
let woD = WOrm(genOpt('everrDelGfs'))
|
|
693
|
+
await woD.delAllGfs()
|
|
694
|
+
await woD.insertGfs({ id: 'd1', u8a: genU8a(100, 2) })
|
|
695
|
+
let evsD = collect(woD)
|
|
696
|
+
let rd = await woD.delGfs([{ id: 'd1' }, { u8a: genU8a(10) }])
|
|
697
|
+
vget[4] = evsD.length
|
|
698
|
+
vget[5] = evsD[0].mode
|
|
699
|
+
vget[6] = evsD[0].err === rd[1].err
|
|
700
|
+
|
|
701
|
+
//正常結果不得發出error
|
|
702
|
+
let woN = WOrm(genOpt('everrNormalGfs'))
|
|
703
|
+
await woN.delAllGfs()
|
|
704
|
+
let evsN = collect(woN)
|
|
705
|
+
await woN.insertGfs({ id: 'n1', u8a: genU8a(100, 3) })
|
|
706
|
+
await woN.insertGfs({ id: 'n1', u8a: genU8a(100, 3) }) //已存在則跳過
|
|
707
|
+
await woN.delGfs({ id: 'n-not-existed' }) //主鍵未命中
|
|
708
|
+
await woN.delAllGfs({ filename: 'not-existed' }) //條件無命中
|
|
709
|
+
await woN.selectByPkGfs('n-not-existed') //查無數據
|
|
710
|
+
await woN.selectByPkGfs('') //主鍵值無效
|
|
711
|
+
vget[7] = evsN.length
|
|
712
|
+
|
|
713
|
+
//訂閱函數拋錯不得影響本次操作之結果
|
|
714
|
+
let woT = WOrm(genOpt('everrThrowGfs'))
|
|
715
|
+
await woT.delAllGfs()
|
|
716
|
+
woT.on('error', function() {
|
|
717
|
+
throw new Error('訂閱者拋錯')
|
|
718
|
+
})
|
|
719
|
+
await woT.insertGfs({ id: 't1', u8a: genU8a(100, 4) })
|
|
720
|
+
vget[8] = await woT.delGfs([{ id: 't1' }, { u8a: genU8a(10) }])
|
|
721
|
+
|
|
722
|
+
})
|
|
723
|
+
|
|
724
|
+
vans[1] = 1
|
|
725
|
+
it(`should get ${JSON.stringify(vans[1])} for count of error event in insertGfs batch error`, async function() {
|
|
726
|
+
assert.strict.deepStrictEqual(vget[1], vans[1])
|
|
727
|
+
})
|
|
728
|
+
|
|
729
|
+
vans[2] = 'insertGfs'
|
|
730
|
+
it(`should get ${JSON.stringify(vans[2])} for mode of error event in insertGfs batch error`, async function() {
|
|
731
|
+
assert.strict.deepStrictEqual(vget[2], vans[2])
|
|
732
|
+
})
|
|
733
|
+
|
|
734
|
+
vans[3] = true
|
|
735
|
+
it(`should get ${JSON.stringify(vans[3])} for same err between error event and reject`, async function() {
|
|
736
|
+
assert.strict.deepStrictEqual(vget[3], vans[3])
|
|
737
|
+
})
|
|
738
|
+
|
|
739
|
+
vans[4] = 1
|
|
740
|
+
it(`should get ${JSON.stringify(vans[4])} for count of error event in delGfs single failure`, async function() {
|
|
741
|
+
assert.strict.deepStrictEqual(vget[4], vans[4])
|
|
742
|
+
})
|
|
743
|
+
|
|
744
|
+
vans[5] = 'delGfs'
|
|
745
|
+
it(`should get ${JSON.stringify(vans[5])} for mode of error event in delGfs single failure`, async function() {
|
|
746
|
+
assert.strict.deepStrictEqual(vget[5], vans[5])
|
|
747
|
+
})
|
|
748
|
+
|
|
749
|
+
vans[6] = true
|
|
750
|
+
it(`should get ${JSON.stringify(vans[6])} for same err between error event and result of delGfs`, async function() {
|
|
751
|
+
assert.strict.deepStrictEqual(vget[6], vans[6])
|
|
752
|
+
})
|
|
753
|
+
|
|
754
|
+
vans[7] = 0
|
|
755
|
+
it(`should get ${JSON.stringify(vans[7])} for count of error event in normal results`, async function() {
|
|
756
|
+
assert.strict.deepStrictEqual(vget[7], vans[7])
|
|
757
|
+
})
|
|
758
|
+
|
|
759
|
+
vans[8] = [
|
|
760
|
+
{ n: 1, nDeleted: 1, ok: 1 },
|
|
761
|
+
{ n: 0, nDeleted: 0, ok: 0, err: 'invalid id[undefined]' }
|
|
762
|
+
]
|
|
763
|
+
it(`should get ${JSON.stringify(vans[8])} for result with throwing error listener`, async function() {
|
|
764
|
+
assert.strict.deepStrictEqual(vget[8], vans[8])
|
|
765
|
+
})
|
|
766
|
+
|
|
767
|
+
})
|
|
768
|
+
|
|
769
|
+
|
|
663
770
|
describe('gfs change event', function() {
|
|
664
771
|
let vans = {}
|
|
665
772
|
let vget = {}
|