Package com.cedarsolutions.client.gwt.validation

Source Code of com.cedarsolutions.client.gwt.validation.ValidationUtilsClientTest$View

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
*              C E D A R
*          S O L U T I O N S       "Software done right."
*           S O F T W A R E
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright (c) 2013 Kenneth J. Pronovici.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the Apache License, Version 2.0.
* See LICENSE for more information about the licensing terms.
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Author   : Kenneth J. Pronovici <pronovic@ieee.org>
* Language : Java 6
* Project  : Common Java Functionality
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
package com.cedarsolutions.client.gwt.validation;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.cedarsolutions.client.gwt.junit.ClientTestCase;
import com.cedarsolutions.exception.InvalidDataException;
import com.cedarsolutions.shared.domain.LocalizableMessage;
import com.cedarsolutions.shared.domain.ValidationErrors;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.UIObject;

/**
* Unit tests for ValidationUtils.
* @author Kenneth J. Pronovici <pronovic@ieee.org>
*/
public class ValidationUtilsClientTest extends ClientTestCase {

    /** Test functionality to set and clear decorations. */
    public void testDecorations() {
        View view = new View();
        assertEquals("gwt-TextBox", view.field1.getStyleName());
        assertEquals("gwt-TextBox", view.field2.getStyleName());

        LocalizableMessage message1 = new LocalizableMessage("x", "field1", "x");
        LocalizableMessage message2 = new LocalizableMessage("x", "field2", "x");
        LocalizableMessage message3 = new LocalizableMessage("x", "field3", "x");

        assertEquals("gwt-TextBox", view.field1.getStyleName());
        assertEquals("gwt-TextBox", view.field2.getStyleName());

        assertFalse(ValidationUtils.getInstance().decorateFieldWithValidationError(view, message3, "style1"));
        assertEquals("gwt-TextBox", view.field1.getStyleName());
        assertEquals("gwt-TextBox", view.field2.getStyleName());

        assertTrue(ValidationUtils.getInstance().decorateFieldWithValidationError(view, message1, "style1"));
        assertEquals("gwt-TextBox style1", view.field1.getStyleName());
        assertEquals("gwt-TextBox", view.field2.getStyleName());

        assertTrue(ValidationUtils.getInstance().decorateFieldWithValidationError(view, message2, "style2"));
        assertEquals("gwt-TextBox style1", view.field1.getStyleName());
        assertEquals("gwt-TextBox style2", view.field2.getStyleName());

        assertFalse(ValidationUtils.getInstance().decorateFieldWithValidationError(view, message3, "style1"));
        assertEquals("gwt-TextBox style1", view.field1.getStyleName());
        assertEquals("gwt-TextBox style2", view.field2.getStyleName());

        ValidationUtils.getInstance().clearValidationErrors(view, "style1");
        assertEquals("gwt-TextBox", view.field1.getStyleName());
        assertEquals("gwt-TextBox style2", view.field2.getStyleName());

        ValidationUtils.getInstance().clearValidationErrors(view, "style2");
        assertEquals("gwt-TextBox", view.field1.getStyleName());
        assertEquals("gwt-TextBox", view.field2.getStyleName());

        assertTrue(ValidationUtils.getInstance().decorateFieldWithValidationError(view, message1, "style1"));
        assertTrue(ValidationUtils.getInstance().decorateFieldWithValidationError(view, message2, "style1"));
        assertEquals("gwt-TextBox style1", view.field1.getStyleName());
        assertEquals("gwt-TextBox style1", view.field2.getStyleName());

        ValidationUtils.getInstance().clearValidationErrors(view, "style1");
        assertEquals("gwt-TextBox", view.field1.getStyleName());
        assertEquals("gwt-TextBox", view.field2.getStyleName());
    }

    /** Test showValidationError(), null error. */
    public void testShowValidationError1() {
        View view = new View();
        InvalidDataException error = null;
        ValidationUtils.getInstance().showValidationError(view, error, "style");
        assertFalse(view.validationErrorWidget.isVisible());
        assertEquals("", view.validationErrorWidget.getErrorSummary());
        assertTrue(view.validationErrorWidget.getErrorList().isEmpty());
    }

    /** Test showValidationError(), empty error. */
    public void testShowValidationError2() {
        View view = new View();
        InvalidDataException error = new InvalidDataException();
        ValidationUtils.getInstance().showValidationError(view, error, "style");
        assertTrue(view.validationErrorWidget.isVisible());
        assertEquals(ValidationUtils.INTERNAL_ERROR_MESSAGE, view.validationErrorWidget.getErrorSummary());
        assertTrue(view.validationErrorWidget.getErrorList().isEmpty());
    }

    /** Test showValidationError(), with message, no details. */
    public void testShowValidationError3() {
        View view = new View();
        InvalidDataException error = new InvalidDataException("message");
        ValidationUtils.getInstance().showValidationError(view, error, "style");
        assertTrue(view.validationErrorWidget.isVisible());
        assertEquals("message", view.validationErrorWidget.getErrorSummary());
        assertTrue(view.validationErrorWidget.getErrorList().isEmpty());

        view = new View();
        error = new InvalidDataException(new LocalizableMessage("key", "text"));
        ValidationUtils.getInstance().showValidationError(view, error, "style");
        assertTrue(view.validationErrorWidget.isVisible());
        assertEquals("__key", view.validationErrorWidget.getErrorSummary());
        assertTrue(view.validationErrorWidget.getErrorList().isEmpty());
    }

    /** Test showValidationError(), with message, empty details. */
    public void testShowValidationError4() {
        View view = new View();
        ValidationErrors details = new ValidationErrors();
        InvalidDataException error = new InvalidDataException("message", details);
        ValidationUtils.getInstance().showValidationError(view, error, "style");
        assertTrue(view.validationErrorWidget.isVisible());
        assertEquals("message", view.validationErrorWidget.getErrorSummary());
        assertTrue(view.validationErrorWidget.getErrorList().isEmpty());
    }

    /** Test showValidationError(), with message, no summary and unknown field. */
    public void testShowValidationError5() {
        View view = new View();
        ValidationErrors details = new ValidationErrors();
        details.addMessage("detailKey1", "fieldX", "detailText1");
        InvalidDataException error = new InvalidDataException("message", details);
        ValidationUtils.getInstance().showValidationError(view, error, "style");
        assertTrue(view.validationErrorWidget.isVisible());
        assertEquals(1, view.validationErrorWidget.getErrorList().size());
        assertEquals("__detailKey1", view.validationErrorWidget.getErrorList().get(0));
    }

    /** Test showValidationError(), with message, no summary but valid field. */
    public void testShowValidationError6() {
        View view = new View();
        ValidationErrors details = new ValidationErrors();
        details.addMessage("detailKey1", "field1", "detailText1");
        InvalidDataException error = new InvalidDataException("message", details);
        ValidationUtils.getInstance().showValidationError(view, error, "style");
        assertTrue(view.validationErrorWidget.isVisible());
        assertEquals("", view.validationErrorWidget.getErrorSummary());
        assertEquals(1, view.validationErrorWidget.getErrorList().size());
        assertEquals("__detailKey1", view.validationErrorWidget.getErrorList().get(0));
    }

    /** Test showValidationError(), with message, with summary but no fields. */
    public void testShowValidationError7() {
        View view = new View();
        ValidationErrors details = new ValidationErrors();
        details.setSummary(new LocalizableMessage("summaryKey1", "summaryText1"));
        InvalidDataException error = new InvalidDataException("message", details);
        ValidationUtils.getInstance().showValidationError(view, error, "style");
        assertTrue(view.validationErrorWidget.isVisible());
        assertEquals("__summaryKey1", view.validationErrorWidget.getErrorSummary());
        assertTrue(view.validationErrorWidget.getErrorList().isEmpty());

        view = new View();
        details = new ValidationErrors();
        details.setSummary(new LocalizableMessage("", "summaryText1"));
        error = new InvalidDataException("message", details);
        ValidationUtils.getInstance().showValidationError(view, error, "style");
        assertTrue(view.validationErrorWidget.isVisible());
        assertEquals("summaryText1", view.validationErrorWidget.getErrorSummary());
        assertTrue(view.validationErrorWidget.getErrorList().isEmpty());
    }

    /** Test showValidationError(), with summary but unknown field. */
    public void testShowValidationError8() {
        View view = new View();
        ValidationErrors details = new ValidationErrors();
        details.setSummary(new LocalizableMessage("summaryKey1", "summaryText1"));
        details.addMessage("detailKey1", "fieldX", "detailText1");
        InvalidDataException error = new InvalidDataException("message", details);
        ValidationUtils.getInstance().showValidationError(view, error, "style");
        assertTrue(view.validationErrorWidget.isVisible());
        assertEquals("__summaryKey1", view.validationErrorWidget.getErrorSummary());
        assertEquals(1, view.validationErrorWidget.getErrorList().size());
        assertEquals("__detailKey1", view.validationErrorWidget.getErrorList().get(0));    }

    /** Test showValidationError(), with summary and one valid field. */
    public void testShowValidationError9() {
        View view = new View();
        ValidationErrors details = new ValidationErrors();
        details.setSummary(new LocalizableMessage("summaryKey1", "summaryText1"));
        details.addMessage("detailKey1", "field1", "detailText1");
        InvalidDataException error = new InvalidDataException("message", details);
        ValidationUtils.getInstance().showValidationError(view, error, "style");
        assertTrue(view.validationErrorWidget.isVisible());
        assertEquals("__summaryKey1", view.validationErrorWidget.getErrorSummary());
        assertEquals(1, view.validationErrorWidget.getErrorList().size());
        assertEquals("__detailKey1", view.validationErrorWidget.getErrorList().get(0));
    }

    /** Test showValidationError(), with summary and multiple valid fields. */
    public void testShowValidationError10() {
        View view = new View();
        ValidationErrors details = new ValidationErrors();
        details.setSummary(new LocalizableMessage("summaryKey1", "summaryText1"));
        details.addMessage("detailKey1", "field1", "detailText1");
        details.addMessage("detailKey2", "field2", "detailText2");
        InvalidDataException error = new InvalidDataException("message", details);
        ValidationUtils.getInstance().showValidationError(view, error, "style");
        assertTrue(view.validationErrorWidget.isVisible());
        assertEquals("__summaryKey1", view.validationErrorWidget.getErrorSummary());
        assertEquals(2, view.validationErrorWidget.getErrorList().size());
        assertEquals("__detailKey1", view.validationErrorWidget.getErrorList().get(0));
        assertEquals("__detailKey2", view.validationErrorWidget.getErrorList().get(1));
    }

    /** Test showValidationError(), with summary and multiple valid and invalid fields. */
    public void testShowValidationError11() {
        View view = new View();
        ValidationErrors details = new ValidationErrors();
        details.setSummary(new LocalizableMessage("summaryKey1", "summaryText1"));
        details.addMessage("detailKey1", "field1", "detailText1");
        details.addMessage("detailKey2", "field2", "detailText2");
        details.addMessage("detailKey3", "field3", "detailText3");
        InvalidDataException error = new InvalidDataException("message", details);
        ValidationUtils.getInstance().showValidationError(view, error, "style");
        assertTrue(view.validationErrorWidget.isVisible());
        assertEquals("__summaryKey1", view.validationErrorWidget.getErrorSummary());
        assertEquals(3, view.validationErrorWidget.getErrorList().size());
        assertEquals("__detailKey1", view.validationErrorWidget.getErrorList().get(0));
        assertEquals("__detailKey2", view.validationErrorWidget.getErrorList().get(1));
        assertEquals("__detailKey3", view.validationErrorWidget.getErrorList().get(2));
    }

    /** View that we can test with. */
    private static class View implements IViewWithValidation {

        protected ValidationErrorWidget validationErrorWidget = new ValidationErrorWidget();
        protected UIObject field1 = new TextBox();
        protected UIObject field2 = new TextBox();

        @Override
        public IValidationErrorWidget getValidationErrorWidget() {
            return this.validationErrorWidget;
        }

        @Override
        public String translate(LocalizableMessage message) {
            return "__" + message.getKey()// just enough so we can tell it was called
        }

        @Override
        public Map<String, UIObject> getValidatedFieldMap() {
            Map<String, UIObject> fieldMap = new HashMap<String, UIObject>();
            fieldMap.put("field1", field1);
            fieldMap.put("field2", field2);
            return fieldMap;
        }
    }

    /** Validation error widget we can test with. */
    private static class ValidationErrorWidget implements IValidationErrorWidget {

        private boolean visible;
        private String errorSummary;
        private List<String> errorList = new ArrayList<String>();

        @Override
        public void hide() {
            this.visible = false;
        }

        @Override
        public void show() {
            this.visible = true;
        }

        @Override
        public boolean isVisible() {
            return this.visible;
        }

        @Override
        public void clearErrorSummary() {
            this.errorSummary = "";
        }

        @Override
        public void setErrorSummary(String summary) {
            this.errorSummary = summary;
        }

        @Override
        public String getErrorSummary() {
            return this.errorSummary;
        }

        @Override
        public void clearErrorList() {
            this.errorList.clear();
        }

        @Override
        public void addError(String error) {
            this.errorList.add(error);
        }

        @Override
        public List<String> getErrorList() {
            return this.errorList;
        }
    }
}
TOP

Related Classes of com.cedarsolutions.client.gwt.validation.ValidationUtilsClientTest$View

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.