@@ -1687,6 +1687,49 @@ config.parallel('rx-storage-implementations.test.js (implementation: ' + config.
1687
1687
assert . strictEqual ( lastEvent . change . operation , 'DELETE' ) ;
1688
1688
assert . ok ( lastEvent . change . previous ) ;
1689
1689
1690
+ sub . unsubscribe ( ) ;
1691
+ storageInstance . close ( ) ;
1692
+ } ) ;
1693
+ it ( 'it should not emit an empty eventBulk when the write had only errors' , async ( ) => {
1694
+ const storageInstance = await config . storage . getStorage ( ) . createStorageInstance < TestDocType > ( {
1695
+ databaseName : randomCouchString ( 12 ) ,
1696
+ collectionName : randomCouchString ( 12 ) ,
1697
+ schema : getPseudoSchemaForVersion < TestDocType > ( 0 , 'key' ) ,
1698
+ options : { } ,
1699
+ multiInstance : false
1700
+ } ) ;
1701
+
1702
+ const emitted : EventBulk < RxStorageChangeEvent < RxDocumentData < TestDocType > > > [ ] = [ ] ;
1703
+ const sub = storageInstance . changeStream ( ) . subscribe ( x => {
1704
+ emitted . push ( x ) ;
1705
+ } ) ;
1706
+
1707
+ const writeData = {
1708
+ key : 'foobar' ,
1709
+ value : 'one' ,
1710
+ _rev : EXAMPLE_REVISION_1 ,
1711
+ _deleted : false ,
1712
+ _attachments : { } ,
1713
+ _meta : {
1714
+ lwt : now ( )
1715
+ }
1716
+ } ;
1717
+
1718
+ // insert
1719
+ const firstWriteResult = await storageInstance . bulkWrite ( [ {
1720
+ document : writeData
1721
+ } ] ) ;
1722
+ assert . deepStrictEqual ( firstWriteResult . error , { } ) ;
1723
+
1724
+ // insert again to cause conflict error
1725
+ const secondWriteResult = await storageInstance . bulkWrite ( [ {
1726
+ document : writeData
1727
+ } ] ) ;
1728
+ assert . deepStrictEqual ( secondWriteResult . success , { } ) ;
1729
+
1730
+ assert . strictEqual ( emitted . length , 1 ) ;
1731
+ assert . strictEqual ( emitted [ 0 ] . events . length , 1 ) ;
1732
+
1690
1733
sub . unsubscribe ( ) ;
1691
1734
storageInstance . close ( ) ;
1692
1735
} ) ;
0 commit comments