/** * Copyright (C) 2015 Valkyrie RCP * * 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. */ package org.valkyriercp.binding.validation; import org.junit.Test; import org.valkyriercp.AbstractValkyrieTest; import org.valkyriercp.binding.validation.support.DefaultValidationMessage; import org.valkyriercp.binding.validation.support.DefaultValidationResults; import org.valkyriercp.core.Severity; import java.util.Set; import static org.junit.Assert.*; public class DefaultValidationResultsTests extends AbstractValkyrieTest { private DefaultValidationResults vr = new DefaultValidationResults(); @Test public void testAddAndGetMessages() { assertEquals(0, vr.getMessageCount()); assertEquals(0, vr.getMessageCount(Severity.INFO)); assertEquals(0, vr.getMessageCount("field1")); assertEquals(false, vr.getHasErrors()); assertEquals(false, vr.getHasWarnings()); assertEquals(false, vr.getHasInfo()); vr.addMessage("field1", Severity.INFO, "message"); assertEquals(1, vr.getMessageCount()); assertEquals(1, vr.getMessageCount(Severity.INFO)); assertEquals(1, vr.getMessageCount("field1")); ValidationMessage vm = (ValidationMessage)vr.getMessages().iterator().next(); assertEquals("field1", vm.getProperty()); assertEquals(Severity.INFO, vm.getSeverity()); assertEquals("message", vm.getMessage()); assertContainsMessage(vm, vr.getMessages("field1")); assertContainsMessage(vm, vr.getMessages(Severity.INFO)); assertEquals(false, vr.getHasErrors()); assertEquals(false, vr.getHasWarnings()); assertEquals(true, vr.getHasInfo()); vm = new DefaultValidationMessage("field2", Severity.WARNING, "message"); vr.addMessage(vm); assertEquals(2, vr.getMessageCount()); assertEquals(1, vr.getMessageCount(Severity.WARNING)); assertEquals(1, vr.getMessageCount("field2")); assertContainsMessage(vm, vr.getMessages()); assertContainsMessage(vm, vr.getMessages("field2")); assertContainsMessage(vm, vr.getMessages(Severity.WARNING)); assertEquals(false, vr.getHasErrors()); assertEquals(true, vr.getHasWarnings()); assertEquals(true, vr.getHasInfo()); vm = new DefaultValidationMessage(ValidationMessage.GLOBAL_PROPERTY, Severity.ERROR, "message"); vr.addMessage(vm); assertEquals(3, vr.getMessageCount()); assertEquals(1, vr.getMessageCount(Severity.ERROR)); assertEquals(1, vr.getMessageCount(ValidationMessage.GLOBAL_PROPERTY)); assertContainsMessage(vm, vr.getMessages()); assertContainsMessage(vm, vr.getMessages(ValidationMessage.GLOBAL_PROPERTY)); assertContainsMessage(vm, vr.getMessages(Severity.ERROR)); assertEquals(true, vr.getHasErrors()); assertEquals(true, vr.getHasWarnings()); assertEquals(true, vr.getHasInfo()); vm = new DefaultValidationMessage("field1", Severity.ERROR, "message"); vr.addMessage(vm); assertEquals(4, vr.getMessageCount()); assertEquals(2, vr.getMessageCount(Severity.ERROR)); assertEquals(2, vr.getMessageCount("field1")); assertContainsMessage(vm, vr.getMessages()); assertContainsMessage(vm, vr.getMessages("field1")); assertContainsMessage(vm, vr.getMessages(Severity.ERROR)); DefaultValidationResults vr2 = new DefaultValidationResults(); vm = new DefaultValidationMessage("newField", Severity.INFO, "message"); vr2.addMessage(vm); ValidationMessage vm2 = new DefaultValidationMessage("newField", Severity.ERROR, "message"); vr2.addMessage(vm2); vr.addAllMessages(vr2.getMessages()); assertEquals(6, vr.getMessageCount()); assertEquals(3, vr.getMessageCount(Severity.ERROR)); assertEquals(2, vr.getMessageCount(Severity.INFO)); assertEquals(2, vr.getMessageCount("newField")); assertContainsMessage(vm, vr.getMessages()); assertContainsMessage(vm2, vr.getMessages()); assertContainsMessage(vm, vr.getMessages("newField")); assertContainsMessage(vm2, vr.getMessages("newField")); assertContainsMessage(vm, vr.getMessages(Severity.INFO)); assertContainsMessage(vm2, vr.getMessages(Severity.ERROR)); } @Test public void testCanNotAddSameMessage() { ValidationMessage vm = new DefaultValidationMessage("field2", Severity.WARNING, "message"); vr.addMessage(vm); assertEquals(1, vr.getMessageCount()); assertEquals(1, vr.getMessageCount(Severity.WARNING)); assertEquals(1, vr.getMessageCount("field2")); vr.addMessage(vm); assertEquals(1, vr.getMessageCount()); assertEquals(1, vr.getMessageCount(Severity.WARNING)); assertEquals(1, vr.getMessageCount("field2")); vm = new DefaultValidationMessage("field2", Severity.WARNING, "message"); vr.addMessage(vm); assertEquals(1, vr.getMessageCount()); assertEquals(1, vr.getMessageCount(Severity.WARNING)); assertEquals(1, vr.getMessageCount("field2")); DefaultValidationResults vr2 = new DefaultValidationResults(); vr2.addMessage(vm); vr.addAllMessages(vr2); assertEquals(1, vr.getMessageCount()); assertEquals(1, vr.getMessageCount(Severity.WARNING)); assertEquals(1, vr.getMessageCount("field2")); } private void assertContainsMessage(ValidationMessage vm, Set messages) { assertTrue("Set of messages does not contain expected message '" + vm + "'", messages.contains(vm)); } @Test public void testReturnedListsAreNotModifiable() { vr.addMessage("field1", Severity.ERROR, "what ever!"); try { vr.getMessages().clear(); fail(); } catch (UnsupportedOperationException e) { // expected } try { vr.getMessages("field1").clear(); fail(); } catch (UnsupportedOperationException e) { // expected } try { vr.getMessages(Severity.ERROR).clear(); fail(); } catch (UnsupportedOperationException e) { // expected } } }