@@ -1828,6 +1828,84 @@ func TestChannelView(t *testing.T) {
1828
1828
log .Printf ("View Query returned entry (%d): %v" , i , entry )
1829
1829
}
1830
1830
assert .Equal (t , 1 , len (entries ))
1831
+ require .Equal (t , "doc1" , entries [0 ].DocID )
1832
+ collection .RequireCurrentVersion (t , "doc1" , entries [0 ].SourceID , entries [0 ].Version )
1833
+ }
1834
+
1835
+ func TestChannelQuery (t * testing.T ) {
1836
+
1837
+ db , ctx := setupTestDB (t )
1838
+ defer db .Close (ctx )
1839
+ collection := GetSingleDatabaseCollectionWithUser (t , db )
1840
+ _ , err := collection .UpdateSyncFun (ctx , `function(doc, oldDoc) {
1841
+ channel(doc.channels);
1842
+ }` )
1843
+ require .NoError (t , err )
1844
+
1845
+ // Create doc
1846
+ body := Body {"key1" : "value1" , "key2" : 1234 , "channels" : "ABC" }
1847
+ rev1ID , _ , err := collection .Put (ctx , "doc1" , body )
1848
+ require .NoError (t , err , "Couldn't create doc1" )
1849
+
1850
+ // Create a doc to test removal handling. Needs three revisions so that the removal rev (2) isn't
1851
+ // the current revision
1852
+ removedDocID := "removed_doc"
1853
+ removedDocRev1 , _ , err := collection .Put (ctx , removedDocID , body )
1854
+ require .NoError (t , err , "Couldn't create removed_doc" )
1855
+ removalSource , removalVersion := collection .GetDocumentCurrentVersion (t , removedDocID )
1856
+
1857
+ updatedChannelBody := Body {"_rev" : removedDocRev1 , "key1" : "value1" , "key2" : 1234 , "channels" : "DEF" }
1858
+ removalRev , _ , err := collection .Put (ctx , removedDocID , updatedChannelBody )
1859
+ require .NoError (t , err , "Couldn't update removed_doc" )
1860
+
1861
+ updatedChannelBody = Body {"_rev" : removalRev , "key1" : "value1" , "key2" : 2345 , "channels" : "DEF" }
1862
+ removedDocRev3 , _ , err := collection .Put (ctx , removedDocID , updatedChannelBody )
1863
+ require .NoError (t , err , "Couldn't update removed_doc" )
1864
+
1865
+ var entries LogEntries
1866
+
1867
+ // Test query retrieval via star channel and named channel (queries use different indexes)
1868
+ testCases := []struct {
1869
+ testName string
1870
+ channelName string
1871
+ }{
1872
+ {
1873
+ testName : "star channel" ,
1874
+ channelName : "*" ,
1875
+ },
1876
+ {
1877
+ testName : "named channel" ,
1878
+ channelName : "ABC" ,
1879
+ },
1880
+ }
1881
+
1882
+ for _ , testCase := range testCases {
1883
+ t .Run (testCase .testName , func (t * testing.T ) {
1884
+ entries , err = collection .getChangesInChannelFromQuery (ctx , testCase .channelName , 0 , 100 , 0 , false )
1885
+ require .NoError (t , err )
1886
+
1887
+ for i , entry := range entries {
1888
+ log .Printf ("Channel Query returned entry (%d): %v" , i , entry )
1889
+ }
1890
+ require .Len (t , entries , 2 )
1891
+ require .Equal (t , "doc1" , entries [0 ].DocID )
1892
+ require .Equal (t , rev1ID , entries [0 ].RevID )
1893
+ collection .RequireCurrentVersion (t , "doc1" , entries [0 ].SourceID , entries [0 ].Version )
1894
+
1895
+ removedDocEntry := entries [1 ]
1896
+ require .Equal (t , removedDocID , removedDocEntry .DocID )
1897
+ if testCase .channelName == "*" {
1898
+ require .Equal (t , removedDocRev3 , removedDocEntry .RevID )
1899
+ collection .RequireCurrentVersion (t , removedDocID , removedDocEntry .SourceID , removedDocEntry .Version )
1900
+ } else {
1901
+ require .Equal (t , removalRev , removedDocEntry .RevID )
1902
+ // TODO: Pending channel removal rev handling, CBG-3213
1903
+ log .Printf ("removal rev check of removal cv %s@%d is pending CBG-3213" , removalSource , removalVersion )
1904
+ //require.Equal(t, removalSource, removedDocEntry.SourceID)
1905
+ //require.Equal(t, removalVersion, removedDocEntry.Version)
1906
+ }
1907
+ })
1908
+ }
1831
1909
1832
1910
}
1833
1911
@@ -2451,7 +2529,7 @@ func TestDeleteWithNoTombstoneCreationSupport(t *testing.T) {
2451
2529
assert .NoError (t , err )
2452
2530
2453
2531
var doc Body
2454
- var xattr Body
2532
+ var xattr SyncData
2455
2533
2456
2534
// Ensure document has been added
2457
2535
waitAndAssertCondition (t , func () bool {
@@ -2462,8 +2540,8 @@ func TestDeleteWithNoTombstoneCreationSupport(t *testing.T) {
2462
2540
assert .Equal (t , int64 (1 ), db .DbStats .SharedBucketImport ().ImportCount .Value ())
2463
2541
2464
2542
assert .Nil (t , doc )
2465
- assert .Equal (t , "1-2cac91faf7b3f5e5fd56ff377bdb5466" , xattr [ "rev" ] )
2466
- assert .Equal (t , float64 (2 ), xattr [ "sequence" ] )
2543
+ assert .Equal (t , "1-2cac91faf7b3f5e5fd56ff377bdb5466" , xattr . CurrentRev )
2544
+ assert .Equal (t , uint64 (2 ), xattr . Sequence )
2467
2545
}
2468
2546
2469
2547
func TestResyncUpdateAllDocChannels (t * testing.T ) {
0 commit comments