2222
2323import com .cloudant .common .RequireRunningCouchDB ;
2424
25+ import java .io .IOException ;
26+ import java .net .URISyntaxException ;
2527import java .util .ArrayList ;
2628import java .util .HashMap ;
2729import java .util .List ;
@@ -40,7 +42,7 @@ public void changes_dbChangesMustSuccessfullyReturn() {
4042 Object lastSeq = "0" ;
4143
4244 { // Two docs changed
43- ChangesResult changes = client . changes (lastSeq );
45+ ChangesResult changes = getChangesSince (lastSeq );
4446 Map <String , List <String >> changedRevIds = findChangedRevisionIds (changes );
4547
4648 Assert .assertThat (changedRevIds .size (), is (equalTo (2 )));
@@ -54,7 +56,7 @@ public void changes_dbChangesMustSuccessfullyReturn() {
5456 Response res3 = ClientTestUtils .createHelloWorldDoc (client );
5557
5658 { // One doc changed
57- ChangesResult changes = client . changes (lastSeq );
59+ ChangesResult changes = getChangesSince (lastSeq );
5860 Map <String , List <String >> changedRevIds = findChangedRevisionIds (changes );
5961
6062 Assert .assertThat (changedRevIds .size (), is (equalTo (1 )));
@@ -65,7 +67,7 @@ public void changes_dbChangesMustSuccessfullyReturn() {
6567 }
6668
6769 { // No changes
68- ChangesResult changes = client . changes (lastSeq );
70+ ChangesResult changes = getChangesSince (lastSeq );
6971 Assert .assertTrue (changes .size () == 0 );
7072 }
7173 }
@@ -85,21 +87,52 @@ public Map<String, List<String>> findChangedRevisionIds(ChangesResult changesRes
8587 @ Test (expected = NoResourceException .class )
8688 public void changes_dbNotExist_exception () {
8789 client .deleteDb ();
88- client . changes ("1" );
90+ getChangesSince ("1" );
8991 }
9092
9193 @ Test
9294 public void changes_docWithConflicts_conflictsShouldBeReturned () {
9395 // Not sure how to changed conflicts yet
9496 }
9597
98+ @ Test
99+ public void changes_dbChangesMustSuccessfullyReturnWithSeqInterval () throws IOException ,
100+ URISyntaxException {
101+ org .junit .Assume .assumeTrue (ClientTestUtils .isCouchDBV2 (client .getRootUri ()));
102+ Response res1 = ClientTestUtils .createHelloWorldDoc (client );
103+ Response res2 = ClientTestUtils .createHelloWorldDoc (client );
104+ ClientTestUtils .createHelloWorldDoc (client );
105+ Object lastSeq = "0" ;
106+
107+ {
108+ // Use batch interval and seq_interval of 4
109+ ChangesResult changes = client .changes (lastSeq , 4 );
110+ Map <String , List <String >> changedRevIds = findChangedRevisionIds (changes );
111+
112+ Assert .assertThat (changedRevIds .size (), is (equalTo (3 )));
113+ Assert .assertThat (changedRevIds .keySet (), hasItems (res1 .getId (), res2 .getId ()));
114+ Assert .assertThat (changedRevIds .get (res1 .getId ()), hasItem (res1 .getRev ()));
115+ Assert .assertThat (changedRevIds .get (res2 .getId ()), hasItem (res2 .getRev ()));
116+ // last two shouldn't have seq
117+ Assert .assertNull (changes .getResults ().get (1 ).getSeq ());
118+ Assert .assertNull (changes .getResults ().get (2 ).getSeq ());
119+
120+ lastSeq = changes .getLastSeq ();
121+ }
122+
123+ { // No changes
124+ ChangesResult changes = getChangesSince (lastSeq );
125+ Assert .assertTrue (changes .size () == 0 );
126+ }
127+ }
128+
96129 @ Test
97130 public void changes_dbWithConflicts_changesMustSuccessfullyReturn () {
98131 ClientTestUtils .createHelloWorldDoc (client );
99132 Object lastSeq = "0" ;
100133
101134 {
102- ChangesResult changes = client . changes (lastSeq );
135+ ChangesResult changes = getChangesSince (lastSeq );
103136 Assert .assertEquals (1 , changes .size ());
104137 lastSeq = changes .getLastSeq ();
105138 }
@@ -109,7 +142,7 @@ public void changes_dbWithConflicts_changesMustSuccessfullyReturn() {
109142 Response res2 = ClientTestUtils .createHelloWorldDoc (client );
110143
111144 {
112- ChangesResult changes = client . changes (lastSeq );
145+ ChangesResult changes = getChangesSince (lastSeq );
113146 Assert .assertEquals (2 , changes .size ());
114147
115148 List <String > doc1ChangedRevs = findChangesRevs (changes , res1 .getId ());
@@ -122,7 +155,7 @@ public void changes_dbWithConflicts_changesMustSuccessfullyReturn() {
122155 }
123156 }
124157
125- public List <String > findChangesRevs (ChangesResult changes , String id ) {
158+ private List <String > findChangesRevs (ChangesResult changes , String id ) {
126159 List <String > changedRevs = new ArrayList <String >();
127160 for (ChangesResult .Row row : changes .getResults ()) {
128161 if (row .getId ().equals (id )) {
@@ -133,4 +166,8 @@ public List<String> findChangesRevs(ChangesResult changes, String id) {
133166 }
134167 return changedRevs ;
135168 }
169+
170+ private ChangesResult getChangesSince (Object since ) {
171+ return client .changes (since , null );
172+ }
136173}
0 commit comments