package netflix.adminresources.tableview;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import org.junit.Test;
import java.util.List;
import static junit.framework.Assert.assertTrue;
public class PropsTableViewTest {
public static final String ALL_COLS_SEARCH_STR = "java";
public static final String PROP_NAME_SEARCH_STR = "java";
public static final String PROP_VALUE_SEARCH_STR = "java";
@Test
public void verifyColumnNames() {
final PropsTableView ptv = new PropsTableView();
final List<String> columns = ptv.getColumns();
assertTrue(columns != null);
assertTrue(columns.size() == 2);
assertTrue(columns.get(0).equals("Key"));
assertTrue(columns.get(1).equals("Value"));
}
@Test
public void getDataTest() {
final PropsTableView ptv = new PropsTableView();
final JsonArray data = ptv.getData();
assertTrue(data != null);
assertTrue(data.size() > 0);
}
@Test
public void searchTermTest() {
final PropsTableView ptv = new PropsTableView();
ptv.setAllColumnsSearchTerm(ALL_COLS_SEARCH_STR);
final JsonArray data = ptv.getData();
assertTrue(data != null);
int totalElms = data.size();
assertTrue(totalElms > 0);
for (int i = 0; i < totalElms; i++) {
final JsonElement propElm = data.get(i);
final JsonArray propKVArray = propElm.getAsJsonArray();
assertTrue(propKVArray.size() == 2);
final String propKey = propKVArray.get(0).getAsString().toLowerCase();
final String propValue = propKVArray.get(1).getAsString().toLowerCase();
assertTrue("Property " + propKey + " does not contain " + ALL_COLS_SEARCH_STR, (propKey.contains(ALL_COLS_SEARCH_STR) || propValue.contains(ALL_COLS_SEARCH_STR)));
}
}
@Test
public void propNameSearchTest() {
final PropsTableView ptv = new PropsTableView();
ptv.setColumnSearchTerm(PropsTableView.KEY, PROP_NAME_SEARCH_STR);
final JsonArray data = ptv.getData();
assertTrue(data != null);
int totalElms = data.size();
assertTrue(totalElms > 0);
for (int i = 0; i < totalElms; i++) {
final JsonElement propElm = data.get(i);
final JsonArray propKVArray = propElm.getAsJsonArray();
assertTrue(propKVArray.size() == 2);
final String propKey = propKVArray.get(0).getAsString().toLowerCase();
assertTrue("Property " + propKey + " does not contain " + PROP_NAME_SEARCH_STR, (propKey.contains(PROP_NAME_SEARCH_STR)));
}
}
@Test
public void propValueSearchTest() {
final PropsTableView ptv = new PropsTableView();
ptv.setColumnSearchTerm(PropsTableView.VALUE, PROP_VALUE_SEARCH_STR);
final JsonArray data = ptv.getData();
assertTrue(data != null);
int totalElms = data.size();
assertTrue(totalElms > 0);
for (int i = 0; i < totalElms; i++) {
final JsonElement propElm = data.get(i);
final JsonArray propKVArray = propElm.getAsJsonArray();
assertTrue(propKVArray.size() == 2);
final String propValue = propKVArray.get(1).getAsString().toLowerCase();
assertTrue("Property " + propValue + " does not contain " + PROP_VALUE_SEARCH_STR, (propValue.contains(PROP_VALUE_SEARCH_STR)));
}
}
@Test
public void paginationTest() {
final PropsTableView ptv = new PropsTableView();
ptv.setCurrentPageInfo(0, 10);
final JsonArray data = ptv.getData();
assertTrue(data != null);
int totalElms = data.size();
assertTrue(totalElms == 10);
ptv.setCurrentPageInfo(11, 10);
final JsonArray nextPageData = ptv.getData();
assertTrue(nextPageData != null);
totalElms = nextPageData.size();
assertTrue(totalElms == 10);
}
@Test
public void sortKeyAscendingTest() {
final PropsTableView ptv = new PropsTableView();
ptv.enableColumnSort(PropsTableView.KEY, false); // ascending sort
final JsonArray data = ptv.getData();
assertTrue(data != null);
int totalElms = data.size();
assertTrue(totalElms > 0);
String prevKey = null;
for (int i = 0; i < totalElms; i++) {
final JsonElement propElm = data.get(i);
final JsonArray propKVArray = propElm.getAsJsonArray();
final String propKey = propKVArray.get(0).getAsString();
assertTrue(propKVArray.size() == 2);
if (prevKey == null) {
prevKey = propKey;
} else {
// verify sorting order
assertTrue(prevKey.compareTo(propKey) < 0);
prevKey = propKey;
}
}
}
@Test
public void sortValueDescending() {
final PropsTableView ptv = new PropsTableView();
ptv.enableColumnSort(PropsTableView.VALUE, true); // descending on value
final JsonArray data = ptv.getData();
assertTrue(data != null);
int totalElms = data.size();
assertTrue(totalElms > 0);
String prevValue = null;
for (int i = 0; i < totalElms; i++) {
final JsonElement propElm = data.get(i);
final JsonArray propKVArray = propElm.getAsJsonArray();
final String propValue = propKVArray.get(1).getAsString();
assertTrue(propKVArray.size() == 2);
if (prevValue == null) {
prevValue = propValue;
} else {
// verify sorting order
assertTrue(String.format("%s - %s sort failed", prevValue, propValue), prevValue.compareTo(propValue) >= 0);
prevValue = propValue;
}
}
}
}