/*
* Copyright 2015 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.dashbuilder.renderer.google.client;
import org.dashbuilder.dataset.filter.FilterFactory;
import org.dashbuilder.dataset.sort.SortOrder;
import org.dashbuilder.displayer.DisplayerSettings;
import org.dashbuilder.displayer.DisplayerSettingsFactory;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;
import static org.dashbuilder.dataset.ExpenseReportsData.*;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
@RunWith(MockitoJUnitRunner.class)
public class GoogleTableDisplayerTest extends GoogleDisplayerTest {
@Test
public void testTableDraw() {
DisplayerSettings allRows = DisplayerSettingsFactory.newTableSettings()
.dataset(EXPENSES)
.tableOrderDefault(COLUMN_DEPARTMENT, SortOrder.DESCENDING)
.tableOrderEnabled(true)
.tablePageSize(10)
.tableWidth(1000)
.buildSettings();
GoogleTableDisplayer table = createTableDisplayer(allRows);
GoogleTableDisplayer.View tableView = table.getView();
table.ready();
verify(tableView).setWidth(1000);
verify(tableView).setSortEnabled(true);
verify(tableView).setPageSize(10);
verify(tableView).setTotalRows(50);
verify(tableView).setTotalPages(5);
verify(tableView).setPagerEnabled(true);
verify(tableView).drawTable();
}
@Test
public void testEmptyTableDraw() {
DisplayerSettings allRows = DisplayerSettingsFactory.newTableSettings()
.dataset(EXPENSES)
.filter(COLUMN_ID, FilterFactory.isNull())
.tablePageSize(10)
.buildSettings();
GoogleTableDisplayer table = createTableDisplayer(allRows);
GoogleTableDisplayer.View tableView = table.getView();
table.ready();
verify(tableView).setPageSize(10);
verify(tableView).setTotalRows(0);
verify(tableView).setTotalPages(1);
verify(tableView).setPagerEnabled(false);
verify(tableView).nodata();
}
@Test
public void testTablePager() {
DisplayerSettings allRows = DisplayerSettingsFactory.newTableSettings()
.dataset(EXPENSES)
.tablePageSize(5)
.buildSettings();
GoogleTableDisplayer table = createTableDisplayer(allRows);
GoogleTableDisplayer.View tableView = table.getView();
table.ready();
// Initialization
verify(tableView).setPageSize(5);
verify(tableView).setTotalRows(50);
verify(tableView).setTotalPages(10);
verify(tableView).setCurrentPage(1);
verify(tableView).setPagerEnabled(true);
verify(tableView).drawTable();
// Non existent page (no effect)
reset(tableView);
table.gotoPage(-1);
assertEquals(table.getCurrentPage(), 1);
verifyZeroInteractions(tableView);
// Non existent page (no effect)
reset(tableView);
table.gotoPage(11);
assertEquals(table.getCurrentPage(), 1);
verifyZeroInteractions(tableView);
// Goto page
reset(tableView);
table.gotoPage(5);
verify(tableView).setCurrentPage(5);
assertEquals(table.getCurrentPage(), 5);
verify(tableView).drawTable();
}
@Test
public void testTableSort() {
DisplayerSettings allRows = DisplayerSettingsFactory.newTableSettings()
.dataset(EXPENSES)
.tablePageSize(5)
.tableOrderDefault(COLUMN_ID, SortOrder.DESCENDING)
.buildSettings();
// Sorted by ID descending by default
GoogleTableDisplayer table = createTableDisplayer(allRows);
GoogleTableDisplayer.View tableView = table.getView();
table.ready();
assertEquals(table.getDataSetHandler().getLastDataSet().getValueAt(0,0), 50d);
// Sort disabled (no effect)
allRows.setTableSortEnabled(false);
table = createTableDisplayer(allRows);
tableView = table.getView();
table.ready();
reset(tableView);
table.sortBy(COLUMN_ID);
verify(tableView, never()).drawTable();
assertEquals(table.getDataSetHandler().getLastDataSet().getValueAt(0, 0), 50d);
// Sort enabled
allRows.setTableSortEnabled(true);
table = createTableDisplayer(allRows);
tableView = table.getView();
table.ready();
reset(tableView);
table.sortBy(COLUMN_ID);
verify(tableView).setCurrentPage(1);
verify(tableView).drawTable();
assertEquals(table.getDataSetHandler().getLastDataSet().getValueAt(0, 0), 1d);
}
}