--- /dev/null
+package de.todesbaum.jsite.application.validation;
+
+import org.junit.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.allOf;
+import static org.hamcrest.Matchers.containsString;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.not;
+
+public class IssueTest {
+
+ @Test
+ public void issueRetainsErrorKey() {
+ Issue issue = new Issue("error-key", false, "param1", "param2");
+ assertThat(issue.getErrorKey(), equalTo("error-key"));
+ }
+
+ @Test
+ public void issueRetainsFatalFalse() {
+ Issue issue = new Issue("error-key", false, "param1", "param2");
+ assertThat(issue.isFatal(), equalTo(false));
+ }
+
+ @Test
+ public void issueRetainsFatalTrue() {
+ Issue issue = new Issue("error-key", true, "param1", "param2");
+ assertThat(issue.isFatal(), equalTo(true));
+ }
+
+ @Test
+ public void issueRetainsParameters() {
+ Issue issue = new Issue("error-key", true, "param1", "param2");
+ assertThat(issue.getParameters(), equalTo(new String[] { "param1", "param2" }));
+ }
+
+ @Test
+ public void issuesAreEqualIfAllValuesAreEqual() {
+ Issue firstIssue = new Issue("error-key", true, "param1", "param2");
+ Issue secondIssue = new Issue("error-key", true, "param1", "param2");
+ assertThat(firstIssue, equalTo(secondIssue));
+ }
+
+ @Test
+ public void hashCodeIsTheSameIfObjectsAreEqual() {
+ Issue firstIssue = new Issue("error-key", true, "param1", "param2");
+ Issue secondIssue = new Issue("error-key", true, "param1", "param2");
+ assertThat(firstIssue.hashCode(), equalTo(secondIssue.hashCode()));
+ }
+
+ @Test
+ public void issuesAreEqualToThemselves() {
+ Issue issue = new Issue("error-key", true, "param1", "param2");
+ assertThat(issue, equalTo(issue));
+ }
+
+ @Test
+ public void issueIsNotEqualToNull() {
+ Issue issue = new Issue("error-key", true, "param1", "param2");
+ assertThat(issue.equals(null), equalTo(false));
+ }
+
+ @Test
+ public void issuesAreNotEqualToObjectsOfDifferentClass() {
+ Issue issue = new Issue("error-key", true, "param1", "param2");
+ assertThat(issue.equals(new Object()), equalTo(false));
+ }
+
+ @Test
+ public void issuesAreNotEqualIfErrorKeyIsDifferent() {
+ Issue firstIssue = new Issue("first-error-key", true, "param1", "param2");
+ Issue secondIssue = new Issue("second-error-key", true, "param1", "param2");
+ assertThat(firstIssue, not(equalTo(secondIssue)));
+ }
+
+ @Test
+ public void issuesAreNotEqualIfFatalIsDifferent() {
+ Issue firstIssue = new Issue("error-key", true, "param1", "param2");
+ Issue secondIssue = new Issue("error-key", false, "param1", "param2");
+ assertThat(firstIssue, not(equalTo(secondIssue)));
+ }
+
+ @Test
+ public void issuesAreNotEqualIfParametersAreDifferent() {
+ Issue firstIssue = new Issue("error-key", true, "param1", "param2");
+ Issue secondIssue = new Issue("error-key", true, "param1", "param2", "param3");
+ assertThat(firstIssue, not(equalTo(secondIssue)));
+ }
+
+ @Test
+ public void toStringContainsErrorKey() {
+ Issue issue = new Issue("error-key", true, "param1", "param2");
+ assertThat(issue.toString(), allOf(
+ containsString("errorKey"),
+ containsString("error-key")
+ ));
+ }
+
+ @Test
+ public void toStringContainsFatal() {
+ Issue issue = new Issue("error-key", true, "param1", "param2");
+ assertThat(issue.toString(), allOf(
+ containsString("fatal"),
+ containsString("true")
+ ));
+ }
+
+ @Test
+ public void toStringContainsParameters() {
+ Issue issue = new Issue("error-key", true, "param1", "param2");
+ assertThat(issue.toString(), allOf(
+ containsString("parameters"),
+ containsString("param1"),
+ containsString("param2")
+ ));
+ }
+
+}