Skip to content

Commit 35cfd61

Browse files
committed
Added test for ChangeRequest.
1 parent 273b441 commit 35cfd61

1 file changed

Lines changed: 231 additions & 0 deletions

File tree

Lines changed: 231 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,231 @@
1+
/*
2+
* Copyright 2016 Google Inc. All Rights Reserved.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.google.gcloud.dns;
18+
19+
import static org.junit.Assert.assertEquals;
20+
import static org.junit.Assert.assertFalse;
21+
import static org.junit.Assert.assertNotEquals;
22+
import static org.junit.Assert.assertNotNull;
23+
import static org.junit.Assert.assertTrue;
24+
import static org.junit.Assert.fail;
25+
26+
import com.google.common.collect.ImmutableList;
27+
28+
import org.junit.Test;
29+
30+
import java.util.List;
31+
32+
public class ChangeRequestTest {
33+
34+
private static final String ID = "cr-id-1";
35+
private static final Long START_TIME_MILLIS = 12334567890L;
36+
private static final ChangeRequest.Status STATUS = ChangeRequest.Status.PENDING;
37+
private static final String NAME1 = "dns1";
38+
private static final DnsRecord.Type TYPE1 = DnsRecord.Type.A;
39+
private static final String NAME2 = "dns2";
40+
private static final DnsRecord.Type TYPE2 = DnsRecord.Type.AAAA;
41+
private static final String NAME3 = "dns3";
42+
private static final DnsRecord.Type TYPE3 = DnsRecord.Type.MX;
43+
private static final DnsRecord RECORD1 = DnsRecord.builder(NAME1, TYPE1).build();
44+
private static final DnsRecord RECORD2 = DnsRecord.builder(NAME2, TYPE2).build();
45+
private static final DnsRecord RECORD3 = DnsRecord.builder(NAME3, TYPE3).build();
46+
private static final List<DnsRecord> ADDITIONS = ImmutableList.of(RECORD1, RECORD2);
47+
private static final List<DnsRecord> DELETIONS = ImmutableList.of(RECORD3);
48+
private static final ChangeRequest CHANGE = ChangeRequest.builder()
49+
.add(RECORD1)
50+
.add(RECORD2)
51+
.delete(RECORD3)
52+
.startTimeMillis(START_TIME_MILLIS)
53+
.status(STATUS)
54+
.id(ID)
55+
.build();
56+
57+
@Test
58+
public void testEmptyBuilder() {
59+
ChangeRequest cr = ChangeRequest.builder().build();
60+
assertNotNull(cr.deletions());
61+
assertTrue(cr.deletions().isEmpty());
62+
assertNotNull(cr.additions());
63+
assertTrue(cr.additions().isEmpty());
64+
}
65+
66+
@Test
67+
public void testBuilder() {
68+
assertEquals(ID, CHANGE.id());
69+
assertEquals(STATUS, CHANGE.status());
70+
assertEquals(START_TIME_MILLIS, CHANGE.startTimeMillis());
71+
assertEquals(ADDITIONS, CHANGE.additions());
72+
assertEquals(DELETIONS, CHANGE.deletions());
73+
List<DnsRecord> recordList = ImmutableList.of(RECORD1);
74+
ChangeRequest another = CHANGE.toBuilder().additions(recordList).build();
75+
assertEquals(recordList, another.additions());
76+
assertEquals(CHANGE.deletions(), another.deletions());
77+
another = CHANGE.toBuilder().deletions(recordList).build();
78+
assertEquals(recordList, another.deletions());
79+
assertEquals(CHANGE.additions(), another.additions());
80+
}
81+
82+
@Test
83+
public void testEqualsAndNotEquals() {
84+
ChangeRequest clone = CHANGE.toBuilder().build();
85+
assertEquals(CHANGE, clone);
86+
clone = ChangeRequest.fromPb(CHANGE.toPb());
87+
assertEquals(CHANGE, clone);
88+
clone = CHANGE.toBuilder().id("some-other-id").build();
89+
assertNotEquals(CHANGE, clone);
90+
clone = CHANGE.toBuilder().startTimeMillis(CHANGE.startTimeMillis() + 1).build();
91+
assertNotEquals(CHANGE, clone);
92+
clone = CHANGE.toBuilder().add(RECORD3).build();
93+
assertNotEquals(CHANGE, clone);
94+
clone = CHANGE.toBuilder().delete(RECORD1).build();
95+
assertNotEquals(CHANGE, clone);
96+
ChangeRequest empty = ChangeRequest.builder().build();
97+
assertNotEquals(CHANGE, empty);
98+
assertEquals(empty, ChangeRequest.builder().build());
99+
}
100+
101+
@Test
102+
public void testSameHashCodeOnEquals() {
103+
ChangeRequest clone = CHANGE.toBuilder().build();
104+
assertEquals(CHANGE, clone);
105+
assertEquals(CHANGE.hashCode(), clone.hashCode());
106+
ChangeRequest empty = ChangeRequest.builder().build();
107+
assertEquals(empty.hashCode(), ChangeRequest.builder().build().hashCode());
108+
}
109+
110+
@Test
111+
public void testToAndFromPb() {
112+
assertEquals(CHANGE, ChangeRequest.fromPb(CHANGE.toPb()));
113+
ChangeRequest partial = ChangeRequest.builder().build();
114+
assertEquals(partial, ChangeRequest.fromPb(partial.toPb()));
115+
partial = ChangeRequest.builder().id(ID).build();
116+
assertEquals(partial, ChangeRequest.fromPb(partial.toPb()));
117+
partial = ChangeRequest.builder().add(RECORD1).build();
118+
assertEquals(partial, ChangeRequest.fromPb(partial.toPb()));
119+
partial = ChangeRequest.builder().delete(RECORD1).build();
120+
assertEquals(partial, ChangeRequest.fromPb(partial.toPb()));
121+
partial = ChangeRequest.builder().additions(ADDITIONS).build();
122+
assertEquals(partial, ChangeRequest.fromPb(partial.toPb()));
123+
partial = ChangeRequest.builder().deletions(DELETIONS).build();
124+
assertEquals(partial, ChangeRequest.fromPb(partial.toPb()));
125+
partial = ChangeRequest.builder().startTimeMillis(START_TIME_MILLIS).build();
126+
assertEquals(partial, ChangeRequest.fromPb(partial.toPb()));
127+
partial = ChangeRequest.builder().status(STATUS).build();
128+
assertEquals(partial, ChangeRequest.fromPb(partial.toPb()));
129+
}
130+
131+
@Test
132+
public void testToBuilder() {
133+
assertEquals(CHANGE, CHANGE.toBuilder().build());
134+
ChangeRequest partial = ChangeRequest.builder().build();
135+
assertEquals(partial, partial.toBuilder().build());
136+
partial = ChangeRequest.builder().id(ID).build();
137+
assertEquals(partial, partial.toBuilder().build());
138+
partial = ChangeRequest.builder().add(RECORD1).build();
139+
assertEquals(partial, partial.toBuilder().build());
140+
partial = ChangeRequest.builder().delete(RECORD1).build();
141+
assertEquals(partial, partial.toBuilder().build());
142+
partial = ChangeRequest.builder().additions(ADDITIONS).build();
143+
assertEquals(partial, partial.toBuilder().build());
144+
partial = ChangeRequest.builder().deletions(DELETIONS).build();
145+
assertEquals(partial, partial.toBuilder().build());
146+
partial = ChangeRequest.builder().startTimeMillis(START_TIME_MILLIS).build();
147+
assertEquals(partial, partial.toBuilder().build());
148+
partial = ChangeRequest.builder().status(STATUS).build();
149+
assertEquals(partial, partial.toBuilder().build());
150+
}
151+
152+
@Test
153+
public void testClearAdditions() {
154+
ChangeRequest clone = CHANGE.toBuilder().clearAdditions().build();
155+
assertTrue(clone.additions().isEmpty());
156+
assertFalse(clone.deletions().isEmpty());
157+
}
158+
159+
@Test
160+
public void testAddAddition() {
161+
try {
162+
CHANGE.toBuilder().add(null).build();
163+
fail("Should not be able to add null DnsRecord.");
164+
} catch (NullPointerException e) {
165+
// expected
166+
}
167+
ChangeRequest clone = CHANGE.toBuilder().add(RECORD1).build();
168+
assertEquals(CHANGE.additions().size() + 1, clone.additions().size());
169+
}
170+
171+
@Test
172+
public void testAddDeletion() {
173+
try {
174+
ChangeRequest clone = CHANGE.toBuilder().delete(null).build();
175+
fail("Should not be able to delete null DnsRecord.");
176+
} catch (NullPointerException e) {
177+
// expected
178+
}
179+
ChangeRequest clone = CHANGE.toBuilder().delete(RECORD1).build();
180+
assertEquals(CHANGE.deletions().size() + 1, clone.deletions().size());
181+
}
182+
183+
@Test
184+
public void testClearDeletions() {
185+
ChangeRequest clone = CHANGE.toBuilder().clearDeletions().build();
186+
assertTrue(clone.deletions().isEmpty());
187+
assertFalse(clone.additions().isEmpty());
188+
}
189+
190+
@Test
191+
public void testRemoveAddition() {
192+
ChangeRequest clone = CHANGE.toBuilder().removeAddition(RECORD1).build();
193+
assertTrue(clone.additions().contains(RECORD2));
194+
assertFalse(clone.additions().contains(RECORD1));
195+
assertTrue(clone.deletions().contains(RECORD3));
196+
clone = CHANGE.toBuilder().removeAddition(RECORD2).removeAddition(RECORD1).build();
197+
assertFalse(clone.additions().contains(RECORD2));
198+
assertFalse(clone.additions().contains(RECORD1));
199+
assertTrue(clone.additions().isEmpty());
200+
assertTrue(clone.deletions().contains(RECORD3));
201+
}
202+
203+
@Test
204+
public void testRemoveDeletion() {
205+
ChangeRequest clone = CHANGE.toBuilder().removeDeletion(RECORD3).build();
206+
assertFalse(clone.deletions().contains(RECORD3));
207+
assertTrue(clone.deletions().isEmpty());
208+
}
209+
210+
@Test
211+
public void testDateParsing() {
212+
String startTime = "2016-01-26T18:33:43.512Z"; // obtained from service
213+
com.google.api.services.dns.model.Change change = CHANGE.toPb().setStartTime(startTime);
214+
ChangeRequest converted = ChangeRequest.fromPb(change);
215+
assertNotNull(converted.startTimeMillis());
216+
assertEquals(change, converted.toPb());
217+
assertEquals(change.getStartTime(), converted.toPb().getStartTime());
218+
}
219+
220+
@Test
221+
public void testStatusTranslation() {
222+
assertEquals(ChangeRequest.Status.DONE, ChangeRequest.Status.translate("done"));
223+
assertEquals(ChangeRequest.Status.PENDING, ChangeRequest.Status.translate("pending"));
224+
try {
225+
ChangeRequest.Status.translate("another");
226+
fail("Such a status does not exist.");
227+
} catch (IllegalArgumentException e) {
228+
// expected
229+
}
230+
}
231+
}

0 commit comments

Comments
 (0)