Skip to content

Commit d58930e

Browse files
committed
Add better tests for bigquery functional classes
1 parent dce1231 commit d58930e

File tree

3 files changed

+177
-1
lines changed

3 files changed

+177
-1
lines changed

gcloud-java-bigquery/src/test/java/com/google/gcloud/bigquery/DatasetTest.java

Lines changed: 107 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,12 @@
3333

3434
import org.junit.After;
3535
import org.junit.Before;
36+
import org.junit.Rule;
3637
import org.junit.Test;
38+
import org.junit.rules.ExpectedException;
3739

3840
import java.util.Iterator;
41+
import java.util.List;
3942

4043
public class DatasetTest {
4144

@@ -48,7 +51,12 @@ public class DatasetTest {
4851
ExternalTableInfo.builder(TableId.of("dataset", "table2"),
4952
ExternalDataConfiguration.of(ImmutableList.of("URI"), Schema.of(), FormatOptions.csv()))
5053
.build());
54+
private static final UserDefinedFunction FUNCTION1 = UserDefinedFunction.inline("inline");
55+
private static final UserDefinedFunction FUNCTION2 = UserDefinedFunction.inline("gs://b/f");
56+
private static final List<UserDefinedFunction> FUNCTIONS = ImmutableList.of(FUNCTION1, FUNCTION2);
5157

58+
@Rule
59+
public ExpectedException thrown = ExpectedException.none();
5260
private BigQuery bigquery;
5361
private Dataset dataset;
5462

@@ -69,6 +77,12 @@ public void testInfo() throws Exception {
6977
replay(bigquery);
7078
}
7179

80+
@Test
81+
public void testBigQuery() throws Exception {
82+
assertSame(bigquery, dataset.bigquery());
83+
replay(bigquery);
84+
}
85+
7286
@Test
7387
public void testExists_True() throws Exception {
7488
BigQuery.DatasetOption[] expectedOptions = {BigQuery.DatasetOption.fields()};
@@ -119,7 +133,28 @@ public void testUpdate() throws Exception {
119133
expect(bigquery.update(updatedInfo)).andReturn(updatedInfo);
120134
replay(bigquery);
121135
Dataset updatedDataset = dataset.update(updatedInfo);
122-
assertSame(bigquery, dataset.bigquery());
136+
assertSame(bigquery, updatedDataset.bigquery());
137+
assertEquals(updatedInfo, updatedDataset.info());
138+
}
139+
140+
@Test
141+
public void testUpdateWithDifferentId() throws Exception {
142+
DatasetInfo updatedInfo = DATASET_INFO.toBuilder()
143+
.datasetId(DatasetId.of("dataset2"))
144+
.description("Description")
145+
.build();
146+
replay(bigquery);
147+
thrown.expect(IllegalArgumentException.class);
148+
dataset.update(updatedInfo);
149+
}
150+
151+
@Test
152+
public void testUpdateWithOptions() throws Exception {
153+
DatasetInfo updatedInfo = DATASET_INFO.toBuilder().description("Description").build();
154+
expect(bigquery.update(updatedInfo, BigQuery.DatasetOption.fields())).andReturn(updatedInfo);
155+
replay(bigquery);
156+
Dataset updatedDataset = dataset.update(updatedInfo, BigQuery.DatasetOption.fields());
157+
assertSame(bigquery, updatedDataset.bigquery());
123158
assertEquals(updatedInfo, updatedDataset.info());
124159
}
125160

@@ -150,6 +185,27 @@ public void testList() throws Exception {
150185
verify(bigqueryOptions);
151186
}
152187

188+
@Test
189+
public void testListWithOptions() throws Exception {
190+
BigQueryOptions bigqueryOptions = createStrictMock(BigQueryOptions.class);
191+
PageImpl<BaseTableInfo> tableInfoPage = new PageImpl<>(null, "c", TABLE_INFO_RESULTS);
192+
expect(bigquery.listTables(DATASET_INFO.datasetId(), BigQuery.TableListOption.maxResults(10L)))
193+
.andReturn(tableInfoPage);
194+
expect(bigquery.options()).andReturn(bigqueryOptions);
195+
expect(bigqueryOptions.service()).andReturn(bigquery);
196+
replay(bigquery, bigqueryOptions);
197+
Page<Table> tablePage = dataset.list(BigQuery.TableListOption.maxResults(10L));
198+
Iterator<BaseTableInfo> tableInfoIterator = tableInfoPage.values().iterator();
199+
Iterator<Table> tableIterator = tablePage.values().iterator();
200+
while (tableInfoIterator.hasNext() && tableIterator.hasNext()) {
201+
assertEquals(tableInfoIterator.next(), tableIterator.next().info());
202+
}
203+
assertFalse(tableInfoIterator.hasNext());
204+
assertFalse(tableIterator.hasNext());
205+
assertEquals(tableInfoPage.nextPageCursor(), tablePage.nextPageCursor());
206+
verify(bigqueryOptions);
207+
}
208+
153209
@Test
154210
public void testGet() throws Exception {
155211
BaseTableInfo info = TableInfo.builder(TableId.of("dataset", "table1"), Schema.of()).build();
@@ -167,6 +223,17 @@ public void testGetNull() throws Exception {
167223
assertNull(dataset.get("table1"));
168224
}
169225

226+
@Test
227+
public void testGetWithOptions() throws Exception {
228+
BaseTableInfo info = TableInfo.builder(TableId.of("dataset", "table1"), Schema.of()).build();
229+
expect(bigquery.getTable(TableId.of("dataset", "table1"), BigQuery.TableOption.fields()))
230+
.andReturn(info);
231+
replay(bigquery);
232+
Table table = dataset.get("table1", BigQuery.TableOption.fields());
233+
assertNotNull(table);
234+
assertEquals(info, table.info());
235+
}
236+
170237
@Test
171238
public void testCreateTable() throws Exception {
172239
TableInfo info = TableInfo.builder(TableId.of("dataset", "table1"), Schema.of(FIELD)).build();
@@ -176,6 +243,15 @@ public void testCreateTable() throws Exception {
176243
assertEquals(info, table.info());
177244
}
178245

246+
@Test
247+
public void testCreateTableWithOptions() throws Exception {
248+
TableInfo info = TableInfo.builder(TableId.of("dataset", "table1"), Schema.of(FIELD)).build();
249+
expect(bigquery.create(info, BigQuery.TableOption.fields())).andReturn(info);
250+
replay(bigquery);
251+
Table table = dataset.create("table1", Schema.of(FIELD), BigQuery.TableOption.fields());
252+
assertEquals(info, table.info());
253+
}
254+
179255
@Test
180256
public void testCreateView() throws Exception {
181257
ViewInfo info = ViewInfo.builder(TableId.of("dataset", "table2"), "QUERY").build();
@@ -185,6 +261,24 @@ public void testCreateView() throws Exception {
185261
assertEquals(info, table.info());
186262
}
187263

264+
@Test
265+
public void testCreateViewWithUserDefinedFunctions() throws Exception {
266+
ViewInfo info = ViewInfo.builder(TableId.of("dataset", "table2"), "QUERY", FUNCTIONS).build();
267+
expect(bigquery.create(info)).andReturn(info);
268+
replay(bigquery);
269+
Table table = dataset.create("table2", "QUERY", FUNCTIONS);
270+
assertEquals(info, table.info());
271+
}
272+
273+
@Test
274+
public void testCreateViewWithOptions() throws Exception {
275+
ViewInfo info = ViewInfo.builder(TableId.of("dataset", "table2"), "QUERY").build();
276+
expect(bigquery.create(info, BigQuery.TableOption.fields())).andReturn(info);
277+
replay(bigquery);
278+
Table table = dataset.create("table2", "QUERY", BigQuery.TableOption.fields());
279+
assertEquals(info, table.info());
280+
}
281+
188282
@Test
189283
public void testCreateExternalTable() throws Exception {
190284
ExternalTableInfo info = ExternalTableInfo.builder(TableId.of("dataset", "table3"),
@@ -197,6 +291,18 @@ public void testCreateExternalTable() throws Exception {
197291
assertEquals(info, table.info());
198292
}
199293

294+
@Test
295+
public void testCreateExternalTableWithOptions() throws Exception {
296+
ExternalTableInfo info = ExternalTableInfo.builder(TableId.of("dataset", "table3"),
297+
ExternalDataConfiguration.of(ImmutableList.of("URI"), Schema.of(), FormatOptions.csv()))
298+
.build();
299+
expect(bigquery.create(info, BigQuery.TableOption.fields())).andReturn(info);
300+
replay(bigquery);
301+
Table table = dataset.create("table3", ExternalDataConfiguration.of(
302+
ImmutableList.of("URI"), Schema.of(), FormatOptions.csv()), BigQuery.TableOption.fields());
303+
assertEquals(info, table.info());
304+
}
305+
200306
@Test
201307
public void testLoad() throws Exception {
202308
expect(bigquery.getDataset(DATASET_INFO.datasetId().dataset())).andReturn(DATASET_INFO);

gcloud-java-bigquery/src/test/java/com/google/gcloud/bigquery/JobTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,12 @@ public void testInfo() throws Exception {
5858
replay(bigquery);
5959
}
6060

61+
@Test
62+
public void testBigQuery() throws Exception {
63+
assertSame(bigquery, job.bigquery());
64+
replay(bigquery);
65+
}
66+
6167
@Test
6268
public void testExists_True() throws Exception {
6369
BigQuery.JobOption[] expectedOptions = {BigQuery.JobOption.fields()};

gcloud-java-bigquery/src/test/java/com/google/gcloud/bigquery/TableTest.java

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@
3636

3737
import org.junit.After;
3838
import org.junit.Before;
39+
import org.junit.Rule;
3940
import org.junit.Test;
41+
import org.junit.rules.ExpectedException;
4042

4143
import java.util.Iterator;
4244
import java.util.List;
@@ -75,6 +77,8 @@ public class TableTest {
7577
private static final Iterable<List<FieldValue>> ROWS = ImmutableList.of(
7678
(List<FieldValue>) ImmutableList.of(FIELD_VALUE1), ImmutableList.of(FIELD_VALUE2));
7779

80+
@Rule
81+
public ExpectedException thrown = ExpectedException.none();
7882
private BigQuery bigquery;
7983
private Table table;
8084

@@ -95,6 +99,12 @@ public void testInfo() throws Exception {
9599
replay(bigquery);
96100
}
97101

102+
@Test
103+
public void testBigQuery() throws Exception {
104+
assertSame(bigquery, table.bigquery());
105+
replay(bigquery);
106+
}
107+
98108
@Test
99109
public void testExists_True() throws Exception {
100110
BigQuery.TableOption[] expectedOptions = {BigQuery.TableOption.fields()};
@@ -139,6 +149,48 @@ public void testReloadWithOptions() throws Exception {
139149
assertEquals(updatedInfo, updatedTable.info());
140150
}
141151

152+
@Test
153+
public void testUpdate() throws Exception {
154+
BaseTableInfo updatedInfo = TABLE_INFO.toBuilder().description("Description").build();
155+
expect(bigquery.update(updatedInfo)).andReturn(updatedInfo);
156+
replay(bigquery);
157+
Table updatedTable = table.update(updatedInfo);
158+
assertSame(bigquery, updatedTable.bigquery());
159+
assertEquals(updatedInfo, updatedTable.info());
160+
}
161+
162+
@Test
163+
public void testUpdateWithDifferentId() throws Exception {
164+
TableInfo updatedInfo = TABLE_INFO.toBuilder()
165+
.tableId(TableId.of("dataset", "table3"))
166+
.description("Description")
167+
.build();
168+
replay(bigquery);
169+
thrown.expect(IllegalArgumentException.class);
170+
table.update(updatedInfo);
171+
}
172+
173+
@Test
174+
public void testUpdateWithDifferentDatasetId() throws Exception {
175+
TableInfo updatedInfo = TABLE_INFO.toBuilder()
176+
.tableId(TableId.of("dataset1", "table1"))
177+
.description("Description")
178+
.build();
179+
replay(bigquery);
180+
thrown.expect(IllegalArgumentException.class);
181+
table.update(updatedInfo);
182+
}
183+
184+
@Test
185+
public void testUpdateWithOptions() throws Exception {
186+
BaseTableInfo updatedInfo = TABLE_INFO.toBuilder().description("Description").build();
187+
expect(bigquery.update(updatedInfo, BigQuery.TableOption.fields())).andReturn(updatedInfo);
188+
replay(bigquery);
189+
Table updatedTable = table.update(updatedInfo, BigQuery.TableOption.fields());
190+
assertSame(bigquery, updatedTable.bigquery());
191+
assertEquals(updatedInfo, updatedTable.info());
192+
}
193+
142194
@Test
143195
public void testDelete() throws Exception {
144196
expect(bigquery.delete(TABLE_INFO.tableId())).andReturn(true);
@@ -173,6 +225,18 @@ public void testList() throws Exception {
173225
assertTrue(Iterators.elementsEqual(tableDataIterator, dataIterator));
174226
}
175227

228+
@Test
229+
public void testListWithOptions() throws Exception {
230+
PageImpl<List<FieldValue>> tableDataPage = new PageImpl<>(null, "c", ROWS);
231+
expect(bigquery.listTableData(TABLE_ID1, BigQuery.TableDataListOption.maxResults(10L)))
232+
.andReturn(tableDataPage);
233+
replay(bigquery);
234+
Page<List<FieldValue>> dataPage = table.list(BigQuery.TableDataListOption.maxResults(10L));
235+
Iterator<List<FieldValue>> tableDataIterator = tableDataPage.values().iterator();
236+
Iterator<List<FieldValue>> dataIterator = dataPage.values().iterator();
237+
assertTrue(Iterators.elementsEqual(tableDataIterator, dataIterator));
238+
}
239+
176240
@Test
177241
public void testCopyFromString() throws Exception {
178242
expect(bigquery.create(COPY_JOB_INFO)).andReturn(COPY_JOB_INFO);

0 commit comments

Comments
 (0)