/**
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* 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.
*
* Copyright 2012-2016 the original author or authors.
*/
package org.assertj.db.output.impl;
import org.assertj.core.api.WritableAssertionInfo;
import org.assertj.db.common.AbstractTest;
import org.assertj.db.type.ChangeType;
import org.assertj.db.type.DataType;
import org.assertj.db.type.Row;
import org.junit.Test;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Locale;
import java.util.UUID;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Test on the utility class {@code HtmlRepresentation}.
*
* @author RĂ©gis Pouiller
*/
public class HtmlOutput_Test extends AbstractTest {
private static String htmlTextFromClassPathOf(String resource) throws IOException {
ClassLoader classLoader = HtmlOutput_Test.class.getClassLoader();
try (InputStream inputStream = classLoader.getResourceAsStream("output/html/" + resource)) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int byteInt = inputStream.read();
while (byteInt != -1) {
byteArrayOutputStream.write(byteInt);
byteInt = inputStream.read();
}
return byteArrayOutputStream.toString();
}
}
/**
* This method tests the {@code getTableOutput} output method.
*/
@Test
public void test_table_output() throws Exception {
WritableAssertionInfo info = new WritableAssertionInfo();
info.description("description");
Row row1 = getRow(Arrays.asList("column1", "column5"),
Arrays.asList("column1", "column2", "column3", "column4",
"column5", "column6", "column7", "column8",
"column9", "column10"),
Arrays.asList(getValue(null, null), getValue(null, true), getValue(null, new byte[] { 0, 1 }),
getValue(null, Timestamp.valueOf("2007-12-23 09:01:00")),
getValue(null, Date.valueOf("2007-12-23")), getValue(null, 8),
getValue(null, Locale.FRENCH), getValue(null, "test"),
getValue(null, Time.valueOf("09:01:00")),
getValue(null, UUID.fromString("30B443AE-C0C9-4790-9BEC-CE1380808435"))));
Row row2 = getRow(Arrays.asList("column1", "column5"),
Arrays.asList("column1", "column2", "column3", "column4",
"column5", "column6", "column7", "column8",
"column9", "column10"),
Arrays.asList(getValue(null, null), getValue(null, false), getValue(null, new byte[] { 2, 3 }),
getValue(null, Timestamp.valueOf("2002-07-25 03:30:05")),
getValue(null, Date.valueOf("2002-07-25")), getValue(null, 9),
getValue(null, Locale.ENGLISH), getValue(null, "test2"),
getValue(null, Time.valueOf("03:30:05")),
getValue(null, UUID.fromString("0E2A1269-EFF0-4233-B87B-B53E8B6F164D"))));
Row row3 = getRow(Arrays.asList("column1", "column5", "column6"),
Arrays.asList("column1", "column2", "column3", "column4",
"column5", "column6", "column7", "column8",
"column9", "column10"),
Arrays.asList(getValue(null, null), getValue(null, false), getValue(null, new byte[] { 2, 3 }),
getValue(null, Timestamp.valueOf("2002-07-25 03:30:05")),
getValue(null, Date.valueOf("2002-07-25")), getValue(null, 9),
getValue(null, Locale.ENGLISH), getValue(null, "test2"),
getValue(null, Time.valueOf("03:30:05")),
getValue(null, UUID.fromString("0E2A1269-EFF0-4233-B87B-B53E8B6F164D"))));
assertThat(HtmlOutput.INSTANCE.getTableOutput(info,
getTable(row1.getColumnsNameList(), row1.getPksNameList(),
Arrays.asList(row1, row2, row3))))
.isEqualTo(htmlTextFromClassPathOf("test_table_output1.html"));
assertThat(HtmlOutput.INSTANCE.getTableOutput(info,
getTable(row1.getColumnsNameList(), row1.getPksNameList(),
new ArrayList())))
.isEqualTo(htmlTextFromClassPathOf("test_table_output2.html"));
}
/**
* This method tests the {@code getRequestOutput} output method.
*/
@Test
public void test_request_output() throws Exception {
WritableAssertionInfo info = new WritableAssertionInfo();
info.description("description");
Row row1 = getRow(Arrays.asList("column1", "column5"),
Arrays.asList("column1", "column2", "column3", "column4",
"column5", "column6", "column7", "column8",
"column9", "column10"),
Arrays.asList(getValue(null, null), getValue(null, true), getValue(null, new byte[] { 0, 1 }),
getValue(null, Timestamp.valueOf("2007-12-23 09:01:00")),
getValue(null, Date.valueOf("2007-12-23")), getValue(null, 8),
getValue(null, Locale.FRENCH), getValue(null, "test"),
getValue(null, Time.valueOf("09:01:00")),
getValue(null, UUID.fromString("30B443AE-C0C9-4790-9BEC-CE1380808435"))));
Row row2 = getRow(Arrays.asList("column1", "column5"),
Arrays.asList("column1", "column2", "column3", "column4",
"column5", "column6", "column7", "column8",
"column9", "column10"),
Arrays.asList(getValue(null, null), getValue(null, false), getValue(null, new byte[] { 2, 3 }),
getValue(null, Timestamp.valueOf("2002-07-25 03:30:05")),
getValue(null, Date.valueOf("2002-07-25")), getValue(null, 9),
getValue(null, Locale.ENGLISH), getValue(null, "test2"),
getValue(null, Time.valueOf("03:30:05")),
getValue(null, UUID.fromString("0E2A1269-EFF0-4233-B87B-B53E8B6F164D"))));
Row row3 = getRow(Arrays.asList("column1", "column5", "column6"),
Arrays.asList("column1", "column2", "column3", "column4",
"column5", "column6", "column7", "column8",
"column9", "column10"),
Arrays.asList(getValue(null, null), getValue(null, false), getValue(null, new byte[] { 2, 3 }),
getValue(null, Timestamp.valueOf("2002-07-25 03:30:05")),
getValue(null, Date.valueOf("2002-07-25")), getValue(null, 9),
getValue(null, Locale.ENGLISH), getValue(null, "test2"),
getValue(null, Time.valueOf("03:30:05")),
getValue(null, UUID.fromString("0E2A1269-EFF0-4233-B87B-B53E8B6F164D"))));
assertThat(HtmlOutput.INSTANCE.getRequestOutput(info,
getRequest(row1.getColumnsNameList(), row1.getPksNameList(),
Arrays.asList(row1, row2, row3))))
.isEqualTo(htmlTextFromClassPathOf("test_request_output1.html"));
assertThat(HtmlOutput.INSTANCE.getRequestOutput(info,
getRequest(row1.getColumnsNameList(), row1.getPksNameList(),
new ArrayList())))
.isEqualTo(htmlTextFromClassPathOf("test_request_output2.html"));
}
/**
* This method tests the {@code getChangesOutput} output method.
*/
@Test
public void test_changes_output() throws Exception {
WritableAssertionInfo info = new WritableAssertionInfo();
info.description("description");
Row row1 = getRow(Arrays.asList("column1", "column5"),
Arrays.asList("column1", "column2", "column3", "column4",
"column5", "column6", "column7", "column8",
"column9", "column10"),
Arrays.asList(getValue(null, null), getValue(null, true), getValue(null, new byte[] { 0, 1 }),
getValue(null, Timestamp.valueOf("2007-12-23 09:01:00")),
getValue(null, Date.valueOf("2007-12-23")), getValue(null, 8),
getValue(null, Locale.FRENCH), getValue(null, "test"),
getValue(null, Time.valueOf("09:01:00")),
getValue(null, UUID.fromString("30B443AE-C0C9-4790-9BEC-CE1380808435"))));
Row row2 = getRow(Arrays.asList("column1", "column5"),
Arrays.asList("column1", "column2", "column3", "column4",
"column5", "column6", "column7", "column8",
"column9", "column10"),
Arrays.asList(getValue(null, null), getValue(null, false), getValue(null, new byte[] { 2, 3 }),
getValue(null, Timestamp.valueOf("2002-07-25 03:30:05")),
getValue(null, Date.valueOf("2002-07-25")), getValue(null, 9),
getValue(null, Locale.ENGLISH), getValue(null, "test2"),
getValue(null, Time.valueOf("03:30:05")),
getValue(null, UUID.fromString("0E2A1269-EFF0-4233-B87B-B53E8B6F164D"))));
Row row3 = getRow(Arrays.asList("column1", "column5", "column6"),
Arrays.asList("column1", "column2", "column3", "column4",
"column5", "column6", "column7", "column8",
"column9", "column10"),
Arrays.asList(getValue(null, null), getValue(null, false), getValue(null, new byte[] { 2, 3 }),
getValue(null, Timestamp.valueOf("2002-07-25 03:30:05")),
getValue(null, Date.valueOf("2002-07-25")), getValue(null, 9),
getValue(null, Locale.ENGLISH), getValue(null, "test2"),
getValue(null, Time.valueOf("03:30:05")),
getValue(null, UUID.fromString("0E2A1269-EFF0-4233-B87B-B53E8B6F164D"))));
assertThat(HtmlOutput.INSTANCE.getChangesOutput(info,
getChanges(Arrays.asList(getTableCreationChange("table", row3),
getTableModificationChange("table", row1,
row3),
getTableDeletionChange("table", row1),
getChange(DataType.REQUEST,
"select * from table",
ChangeType.MODIFICATION, row1,
row2),
getChange(DataType.REQUEST,
"select id, name, firstname, birth, actor_imdb from actor",
ChangeType.MODIFICATION, row1,
row2)))))
.isEqualTo(htmlTextFromClassPathOf("test_changes_output1.html"));
assertThat(HtmlOutput.INSTANCE.getChangesOutput(info,
getChanges(new ArrayList())))
.isEqualTo(htmlTextFromClassPathOf("test_changes_output2.html"));
}
/**
* This method tests the {@code getChangeOutput} output method.
*/
@Test
public void test_change_output() throws Exception {
WritableAssertionInfo info = new WritableAssertionInfo();
info.description("description");
Row row1 = getRow(Arrays.asList("column1", "column5"),
Arrays.asList("column1", "column2", "column3", "column4",
"column5", "column6", "column7", "column8",
"column9", "column10"),
Arrays.asList(getValue(null, null), getValue(null, true), getValue(null, new byte[] { 0, 1 }),
getValue(null, Timestamp.valueOf("2007-12-23 09:01:00")),
getValue(null, Date.valueOf("2007-12-23")), getValue(null, 8),
getValue(null, Locale.FRENCH), getValue(null, "test"),
getValue(null, Time.valueOf("09:01:00")),
getValue(null, UUID.fromString("30B443AE-C0C9-4790-9BEC-CE1380808435"))));
Row row2 = getRow(Arrays.asList("column1", "column5"),
Arrays.asList("column1", "column2", "column3", "column4",
"column5", "column6", "column7", "column8",
"column9", "column10"),
Arrays.asList(getValue(null, null), getValue(null, false), getValue(null, new byte[] { 2, 3 }),
getValue(null, Timestamp.valueOf("2002-07-25 03:30:05")),
getValue(null, Date.valueOf("2002-07-25")), getValue(null, 9),
getValue(null, Locale.ENGLISH), getValue(null, "test2"),
getValue(null, Time.valueOf("03:30:05")),
getValue(null, UUID.fromString("0E2A1269-EFF0-4233-B87B-B53E8B6F164D"))));
assertThat(HtmlOutput.INSTANCE.getChangeOutput(info, getTableCreationChange("table", row2)))
.as("output1")
.isEqualTo(htmlTextFromClassPathOf("test_change_output1.html"));
assertThat(HtmlOutput.INSTANCE.getChangeOutput(info, getTableModificationChange("table", row1, row2)))
.as("output2")
.isEqualTo(htmlTextFromClassPathOf("test_change_output2.html"));
assertThat(HtmlOutput.INSTANCE.getChangeOutput(info, getTableDeletionChange("table", row1)))
.as("output3")
.isEqualTo(htmlTextFromClassPathOf("test_change_output3.html"));
assertThat(HtmlOutput.INSTANCE.getChangeOutput(info,
getChange(DataType.REQUEST, "select * from table",
ChangeType.MODIFICATION, row1, row2)))
.as("output4")
.isEqualTo(htmlTextFromClassPathOf("test_change_output4.html"));
assertThat(HtmlOutput.INSTANCE.getChangeOutput(info,
getChange(DataType.REQUEST,
"select id, name, firstname, birth, actor_imdb from actor",
ChangeType.MODIFICATION, row1, row2)))
.as("output5")
.isEqualTo(htmlTextFromClassPathOf("test_change_output5.html"));
}
/**
* This method tests the {@code getRowOutput} output method.
*/
@Test
public void test_row_output() throws Exception {
WritableAssertionInfo info = new WritableAssertionInfo();
info.description("description");
assertThat(HtmlOutput.INSTANCE.getRowOutput(info, getRow(Arrays.asList("column1", "column5"),
Arrays.asList("column1", "column2", "column3",
"column4", "column5", "column6",
"column7", "column8", "column9",
"column10"),
Arrays.asList(getValue(null, null), getValue(
null, true),
getValue(null, new byte[] { 0, 1 }),
getValue(null, Timestamp.valueOf(
"2007-12-23 09:01:00")),
getValue(null, Date.valueOf("2007-12-23")),
getValue(null, 8),
getValue(null, Locale.FRENCH), getValue(
null, "test"),
getValue(null, Time.valueOf("09:01:00")),
getValue(null, UUID.fromString(
"30B443AE-C0C9-4790-9BEC-CE1380808435"))))))
.isEqualTo(htmlTextFromClassPathOf("test_row_output.html"));
}
/**
* This method tests the {@code getColumnOutput} output method.
*/
@Test
public void test_column_output() throws Exception {
WritableAssertionInfo info = new WritableAssertionInfo();
info.description("description");
assertThat(HtmlOutput.INSTANCE.getColumnOutput(info, getColumn("column", Arrays.asList(getValue(
null, null), getValue(null, null)))))
.isEqualTo(htmlTextFromClassPathOf("test_column_output1.html"));
assertThat(HtmlOutput.INSTANCE.getColumnOutput(info, getColumn("column", Arrays.asList(getValue(
null, true), getValue(null, false)))))
.isEqualTo(htmlTextFromClassPathOf("test_column_output2.html"));
assertThat(HtmlOutput.INSTANCE.getColumnOutput(info,
getColumn("column",
Arrays.asList(getValue(null, new byte[] { 0, 1 }),
getValue(null, null)))))
.isEqualTo(htmlTextFromClassPathOf("test_column_output3.html"));
assertThat(HtmlOutput.INSTANCE.getColumnOutput(info,
getColumn("column", Arrays.asList(getValue(null, null),
getValue(null, Timestamp.valueOf(
"2007-12-23 09:01:00")),
getValue(null, Timestamp.valueOf(
"2002-07-25 03:30:05"))))))
.isEqualTo(htmlTextFromClassPathOf("test_column_output4.html"));
assertThat(HtmlOutput.INSTANCE.getColumnOutput(info,
getColumn("column",
Arrays.asList(getValue(null, Date.valueOf("2007-12-23"))))))
.isEqualTo(htmlTextFromClassPathOf("test_column_output5.html"));
assertThat(HtmlOutput.INSTANCE.getColumnOutput(info,
getColumn("column", Arrays.asList(getValue(null, 8),
getValue(null, 1000000000L)))))
.isEqualTo(htmlTextFromClassPathOf("test_column_output6.html"));
assertThat(HtmlOutput.INSTANCE.getColumnOutput(info,
getColumn("column", Arrays.asList(getValue(null, Locale.FRENCH),
getValue(null, Locale.ENGLISH)))))
.isEqualTo(htmlTextFromClassPathOf("test_column_output7.html"));
assertThat(HtmlOutput.INSTANCE.getColumnOutput(info,
getColumn("column", Arrays.asList(getValue(null, "test"),
getValue(null, "test2")))))
.isEqualTo(htmlTextFromClassPathOf("test_column_output8.html"));
assertThat(HtmlOutput.INSTANCE.getColumnOutput(info,
getColumn("column",
Arrays.asList(getValue(null, Time.valueOf("09:01:00")),
getValue(null, Time.valueOf("03:30:05"))))))
.isEqualTo(htmlTextFromClassPathOf("test_column_output9.html"));
assertThat(HtmlOutput.INSTANCE
.getColumnOutput(info, getColumn("column",
Arrays.asList(getValue(null, UUID.fromString(
"30B443AE-C0C9-4790-9BEC-CE1380808435")),
getValue(null, UUID.fromString(
"0E2A1269-EFF0-4233-B87B-B53E8B6F164D"))))))
.isEqualTo(htmlTextFromClassPathOf("test_column_output10.html"));
assertThat(HtmlOutput.INSTANCE
.getColumnOutput(info, getColumn("column", new ArrayList())))
.isEqualTo(htmlTextFromClassPathOf("test_column_output11.html"));
}
/**
* This method tests the {@code getChangeColumnOutput} output method.
*/
@Test
public void test_change_column_output() throws Exception {
WritableAssertionInfo info = new WritableAssertionInfo();
info.description("description");
assertThat(HtmlOutput.INSTANCE.getChangeColumnOutput(info, "column2", getValue(null, true), getValue(null, false)))
.isEqualTo(htmlTextFromClassPathOf("test_change_column_output1.html"));
assertThat(HtmlOutput.INSTANCE.getChangeColumnOutput(info, "column1", getValue(null, null),
getValue(null, null)))
.isEqualTo(htmlTextFromClassPathOf("test_change_column_output2.html"));
assertThat(HtmlOutput.INSTANCE.getChangeColumnOutput(info, "column", getValue(null, UUID.fromString(
"30B443AE-C0C9-4790-9BEC-CE1380808435")),
getValue(null, UUID.fromString(
"0E2A1269-EFF0-4233-B87B-B53E8B6F164D"))))
.isEqualTo(htmlTextFromClassPathOf("test_change_column_output3.html"));
}
/**
* This method tests the {@code getValueOutput} output method.
*/
@Test
public void test_value_output() throws Exception {
WritableAssertionInfo info = new WritableAssertionInfo();
info.description("description");
assertThat(HtmlOutput.INSTANCE.getValueOutput(info, getValue("column", null)))
.isEqualTo(htmlTextFromClassPathOf("test_value_output1.html"));
assertThat(HtmlOutput.INSTANCE.getValueOutput(info, getValue("column", true)))
.isEqualTo(htmlTextFromClassPathOf("test_value_output2.html"));
assertThat(HtmlOutput.INSTANCE.getValueOutput(info, getValue("column", new byte[] { 0, 1 })))
.isEqualTo(htmlTextFromClassPathOf("test_value_output3.html"));
assertThat(HtmlOutput.INSTANCE.getValueOutput(info, getValue("column", Timestamp.valueOf("2007-12-23 09:01:00"))))
.isEqualTo(htmlTextFromClassPathOf("test_value_output4.html"));
assertThat(HtmlOutput.INSTANCE.getValueOutput(info, getValue("column", Date.valueOf("2007-12-23"))))
.isEqualTo(htmlTextFromClassPathOf("test_value_output5.html"));
assertThat(HtmlOutput.INSTANCE.getValueOutput(info, getValue("column", 8)))
.isEqualTo(htmlTextFromClassPathOf("test_value_output6.html"));
assertThat(HtmlOutput.INSTANCE.getValueOutput(info, getValue("column", Locale.FRENCH)))
.isEqualTo(htmlTextFromClassPathOf("test_value_output7.html"));
assertThat(HtmlOutput.INSTANCE.getValueOutput(info, getValue("column", "test")))
.isEqualTo(htmlTextFromClassPathOf("test_value_output8.html"));
assertThat(HtmlOutput.INSTANCE.getValueOutput(info, getValue("column", Time.valueOf("09:01:00"))))
.isEqualTo(htmlTextFromClassPathOf("test_value_output9.html"));
assertThat(HtmlOutput.INSTANCE.getValueOutput(info, getValue("column", UUID.fromString(
"30B443AE-C0C9-4790-9BEC-CE1380808435"))))
.isEqualTo(htmlTextFromClassPathOf("test_value_output10.html"));
}
}