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.
@@ -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 = {}