22
22
23
23
import com .cloudant .common .RequireRunningCouchDB ;
24
24
25
+ import java .io .IOException ;
26
+ import java .net .URISyntaxException ;
25
27
import java .util .ArrayList ;
26
28
import java .util .HashMap ;
27
29
import java .util .List ;
@@ -40,7 +42,7 @@ public void changes_dbChangesMustSuccessfullyReturn() {
40
42
Object lastSeq = "0" ;
41
43
42
44
{ // Two docs changed
43
- ChangesResult changes = client . changes (lastSeq );
45
+ ChangesResult changes = getChangesSince (lastSeq );
44
46
Map <String , List <String >> changedRevIds = findChangedRevisionIds (changes );
45
47
46
48
Assert .assertThat (changedRevIds .size (), is (equalTo (2 )));
@@ -54,7 +56,7 @@ public void changes_dbChangesMustSuccessfullyReturn() {
54
56
Response res3 = ClientTestUtils .createHelloWorldDoc (client );
55
57
56
58
{ // One doc changed
57
- ChangesResult changes = client . changes (lastSeq );
59
+ ChangesResult changes = getChangesSince (lastSeq );
58
60
Map <String , List <String >> changedRevIds = findChangedRevisionIds (changes );
59
61
60
62
Assert .assertThat (changedRevIds .size (), is (equalTo (1 )));
@@ -65,7 +67,7 @@ public void changes_dbChangesMustSuccessfullyReturn() {
65
67
}
66
68
67
69
{ // No changes
68
- ChangesResult changes = client . changes (lastSeq );
70
+ ChangesResult changes = getChangesSince (lastSeq );
69
71
Assert .assertTrue (changes .size () == 0 );
70
72
}
71
73
}
@@ -85,21 +87,52 @@ public Map<String, List<String>> findChangedRevisionIds(ChangesResult changesRes
85
87
@ Test (expected = NoResourceException .class )
86
88
public void changes_dbNotExist_exception () {
87
89
client .deleteDb ();
88
- client . changes ("1" );
90
+ getChangesSince ("1" );
89
91
}
90
92
91
93
@ Test
92
94
public void changes_docWithConflicts_conflictsShouldBeReturned () {
93
95
// Not sure how to changed conflicts yet
94
96
}
95
97
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
+
96
129
@ Test
97
130
public void changes_dbWithConflicts_changesMustSuccessfullyReturn () {
98
131
ClientTestUtils .createHelloWorldDoc (client );
99
132
Object lastSeq = "0" ;
100
133
101
134
{
102
- ChangesResult changes = client . changes (lastSeq );
135
+ ChangesResult changes = getChangesSince (lastSeq );
103
136
Assert .assertEquals (1 , changes .size ());
104
137
lastSeq = changes .getLastSeq ();
105
138
}
@@ -109,7 +142,7 @@ public void changes_dbWithConflicts_changesMustSuccessfullyReturn() {
109
142
Response res2 = ClientTestUtils .createHelloWorldDoc (client );
110
143
111
144
{
112
- ChangesResult changes = client . changes (lastSeq );
145
+ ChangesResult changes = getChangesSince (lastSeq );
113
146
Assert .assertEquals (2 , changes .size ());
114
147
115
148
List <String > doc1ChangedRevs = findChangesRevs (changes , res1 .getId ());
@@ -122,7 +155,7 @@ public void changes_dbWithConflicts_changesMustSuccessfullyReturn() {
122
155
}
123
156
}
124
157
125
- public List <String > findChangesRevs (ChangesResult changes , String id ) {
158
+ private List <String > findChangesRevs (ChangesResult changes , String id ) {
126
159
List <String > changedRevs = new ArrayList <String >();
127
160
for (ChangesResult .Row row : changes .getResults ()) {
128
161
if (row .getId ().equals (id )) {
@@ -133,4 +166,8 @@ public List<String> findChangesRevs(ChangesResult changes, String id) {
133
166
}
134
167
return changedRevs ;
135
168
}
169
+
170
+ private ChangesResult getChangesSince (Object since ) {
171
+ return client .changes (since , null );
172
+ }
136
173
}
0 commit comments