Package com.alibaba.citrus.service.form

Source Code of com.alibaba.citrus.service.form.FormToolTests$MyClass

/*
* Copyright (c) 2002-2012 Alibaba Group Holding Limited.
* All rights reserved.
*
* 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 com.alibaba.citrus.service.form;

import static com.alibaba.citrus.test.TestUtil.*;
import static com.alibaba.citrus.util.CollectionUtil.*;
import static org.junit.Assert.*;

import java.util.Iterator;
import java.util.Set;

import com.alibaba.citrus.service.form.support.FormTool;
import com.alibaba.citrus.service.form.support.FormTool.FieldHelper;
import com.alibaba.citrus.service.form.support.FormTool.GroupHelper;
import com.alibaba.citrus.service.form.support.FormTool.GroupInstanceHelper;
import com.alibaba.citrus.service.pull.PullService;
import org.apache.ecs.xhtml.input;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class FormToolTests extends AbstractFormServiceTests {
    private FormTool tool;
    private FormTool tool5;

    @BeforeClass
    public static void initFactory() {
        factory = createContext("services-form.xml", true);
    }

    @Before
    public void init() throws Exception {
        getFormService("form1");
        PullService pullService = (PullService) factory.getBean("pullService");

        tool = (FormTool) pullService.getTools().get("form");
        assertNotNull(tool);

        tool5 = (FormTool) pullService.getTools().get("tool5");
        assertNotNull(tool5);

        newForm();
    }

    private void newForm() throws Exception {
        invokePost(null);
    }

    private void submitForm() throws Exception {
        invokePost(new Object[][] { { "sumbit", "提交" }, //
                                    { "_fm.g._0.f", "aa" }, // group1.default.field1
                                    { "_fm.g.1.f", "bb" }, // group1.1.field1
                                    { "_fm.gr._0.f", "cc" }, // group2.default.field1
                                    { "_fm.gr._0.fi", "dd" }, // group2.default.field2
        });
    }

    @Test
    public void tool_formServiceRef() {
        GroupInstanceHelper group1 = tool5.get("group1").getDefaultInstance();

        assertNotNull(group1.get("field1"));
        assertNotNull(group1.get("field2"));
        assertNull(group1.get("field3"));

        assertNull(tool5.get("group2").getDefaultInstance());
    }

    @Test
    public void tool_toString() {
        assertEquals("FormTool[no FormService]", new FormTool().toString());
        assertEquals("form1:FormService {\n" //
                     + "  FormConfig[groups: 3]\n" //
                     + "}", tool.toString());
    }

    @Test
    public void form_getGroup() throws Exception {
        // new form
        GroupHelper group = tool.get("group1");
        assertEquals("Group[group1]", group.toString());

        GroupInstanceHelper group_0 = group.getDefaultInstance();
        GroupInstanceHelper group_1 = group.getInstance("1");
        GroupInstanceHelper group_2 = group.getInstance("2", false);

        assertNull(group_2);
        group_2 = group.getInstance("2", true);

        assertEquals("Group[name: group1._0, fields: 2, validated: false, valid: true]", group_0.toString());
        assertEquals("Group[name: group1.1, fields: 2, validated: false, valid: true]", group_1.toString());
        assertEquals("Group[name: group1.2, fields: 2, validated: false, valid: true]", group_2.toString());

        // submit form
        submitForm();

        group = tool.get("group1");
        assertEquals("Group[group1]", group.toString());

        group_0 = group.getDefaultInstance();
        group_1 = group.getInstance("1", false);
        assertNotNull(group_1);
        group_1 = group.getInstance("1");

        assertEquals("Group[name: group1._0, fields: 2, validated: true, valid: false]", group_0.toString());
        assertEquals("Group[name: group1.1, fields: 2, validated: true, valid: false]", group_1.toString());

        // not exist group
        group = tool.get("notExist");
        assertEquals("Group[notExist]", group.toString());

        assertNull(group.getDefaultInstance());
        assertNull(group.getInstance("1"));
        assertNull(group.getInstance("2", false));
    }

    @Test
    public void form_getGroups() throws Exception {
        submitForm();

        // getGroups
        Iterator<GroupInstanceHelper> i = tool.getGroups();
        Set<String> results = createHashSet( //
                                             "Group[name: group1._0, fields: 2, validated: true, valid: false]", //
                                             "Group[name: group1.1, fields: 2, validated: true, valid: false]", //
                                             "Group[name: group2._0, fields: 2, validated: true, valid: true]");

        assertNotNull(results.remove(i.next().toString()));
        assertNotNull(results.remove(i.next().toString()));
        assertNotNull(results.remove(i.next().toString()));
        assertFalse(i.hasNext());

        // getGroups(name)
        i = tool.getGroups("group1");
        results = createHashSet( //
                                 "Group[name: group1._0, fields: 2, validated: true, valid: false]", //
                                 "Group[name: group1.1, fields: 2, validated: true, valid: false]");

        assertNotNull(results.remove(i.next().toString()));
        assertNotNull(results.remove(i.next().toString()));
        assertFalse(i.hasNext());
    }

    @Test
    public void form_isValid() throws Exception {
        // 初始状态:true
        assertEquals(true, tool.isValid());

        // 验证失败:false
        Object[][] args = new Object[][] { { "sumbit", "提交" }, //
                                           { "_fm.g._0.f", "aaa" }, // group1.field1
        };

        invokePost(args);
        assertEquals(false, tool.isValid());

        // 验证成功:true
        args = new Object[][] { { "sumbit", "提交" }, //
                                { "_fm.g._0.f", "aaa" }, // group1.field1
                                { "_fm.g._0.fi", "bbb" }, // group1.field2
        };

        invokePost(args);
        assertEquals(true, tool.isValid());
    }

    @Test
    public void group_getField() throws Exception {
        // new form
        GroupInstanceHelper group = tool.get("group1").getDefaultInstance();
        assertEquals("Field[group: group1._0, name: field1, values: [default1], valid: true]", group.get("field1")
                                                                                                    .toString());
        assertEquals("Field[group: group1._0, name: field2, values: [], valid: true]", group.get("field2").toString());
        assertEquals(null, group.get("notExist"));

        // submit form
        submitForm();

        group = tool.get("group1").getDefaultInstance();
        assertEquals("Field[group: group1._0, name: field1, values: [aa], valid: true]", group.get("field1").toString());
        assertEquals("Field[group: group1._0, name: field2, values: [], valid: false]", group.get("field2").toString());

        group = tool.get("group1").getInstance("1");
        assertEquals("Field[group: group1.1, name: field1, values: [bb], valid: true]", group.get("field1").toString());
        assertEquals("Field[group: group1.1, name: field2, values: [], valid: false]", group.get("field2").toString());

        group = tool.get("group2").getDefaultInstance();
        assertEquals("Field[group: group2._0, name: field1, values: [cc], valid: true]", group.get("field1").toString());
        assertEquals("Field[group: group2._0, name: field2, values: [dd], valid: true]", group.get("field2").toString());
    }

    @Test
    public void group_getFields() throws Exception {
        GroupInstanceHelper group = tool.get("group1").getDefaultInstance();
        Iterator<FieldHelper> i = group.getFields();
        Set<String> results = createHashSet("Field[group: group1._0, name: field1, values: [default1], valid: true]", //
                                            "Field[group: group1._0, name: field2, values: [], valid: true]");

        assertNotNull(results.remove(i.next().toString()));
        assertNotNull(results.remove(i.next().toString()));
        assertFalse(i.hasNext());
    }

    @Test
    public void group_isValid() throws Exception {
        // new form
        GroupInstanceHelper group = tool.get("group1").getDefaultInstance();
        assertEquals(true, group.isValid());

        // submit form
        submitForm();

        group = tool.get("group1").getDefaultInstance();
        assertEquals(false, group.isValid());

        group = tool.get("group2").getDefaultInstance();
        assertEquals(true, group.isValid());

        group = tool.get("group2").getInstance("2");
        assertEquals(true, group.isValid());
    }

    @Test
    public void group_isValidated() throws Exception {
        // new form
        GroupInstanceHelper group = tool.get("group1").getDefaultInstance();
        assertEquals(false, group.isValidated());

        // submit form
        submitForm();

        group = tool.get("group1").getDefaultInstance();
        assertEquals(true, group.isValidated());

        group = tool.get("group2").getDefaultInstance();
        assertEquals(true, group.isValidated());

        group = tool.get("group2").getInstance("2");
        assertEquals(false, group.isValidated());
    }

    @Test
    public void group_mapTo() throws Exception {
        MyClass obj = new MyClass();
        obj.setProperty1("aaa");
        obj.setField2(456);

        // new form
        GroupInstanceHelper group = tool.get("group1").getDefaultInstance();
        group.mapTo(obj);

        assertEquals("aaa", group.get("field1").getValue());
        assertEquals("456", group.get("field2").getValue());

        // submit form
        submitForm();

        group = tool.get("group1").getDefaultInstance();
        group.mapTo(obj); // 对validated group无效果

        assertEquals("aa", group.get("field1").getValue());
        assertEquals("", group.get("field2").getValue());
    }

    @Test
    public void field_functions() throws Exception {
        GroupInstanceHelper group = tool.get("group1").getDefaultInstance();
        FieldHelper field = group.get("field1");
        setFieldValues(field, new String[] { "<&\">", "hello" });

        assertEquals("我的字段1", field.getDisplayName());
        assertEquals("_fm.g._0.f", field.getKey());
        assertEquals("_fm.g._0.f.~html", field.getHtmlKey());
        assertEquals("_fm.g._0.f.absent", field.getAbsentKey());
        assertEquals("_fm.g._0.f.attach", field.getAttachmentKey());
        assertEquals("<&\">", field.getValue());
        assertEquals("&lt;&amp;&quot;&gt;", field.getEscapedValue());
        assertArrayEquals(new String[] { "<&\">", "hello" }, field.getValues());
        assertArrayEquals(new String[] { "&lt;&amp;&quot;&gt;", "hello" }, field.getEscapedValues());
    }

    @Test
    public void field_absent() throws Exception {
        GroupInstanceHelper group = tool.get("group1").getDefaultInstance();
        FieldHelper field = group.get("field1");

        // absent hidden field
        input hiddenTag = field.getAbsentHiddenField("defaultValue");
        assertThat(hiddenTag.toString(),
                   containsAll("<input", "name='_fm.g._0.f.absent'", "type='hidden'", "value='defaultValue'", "/>"));
    }

    @Test
    public void field_attachment() throws Exception {
        GroupInstanceHelper group = tool.get("group1").getDefaultInstance();
        FieldHelper field = group.get("field1");

        // no attachment
        assertEquals(null, field.getAttachment());
        assertEquals("", field.getAttachmentEncoded());
        assertEquals(false, field.hasAttachment());

        input attachmentTag = field.getAttachmentHiddenField();
        assertThat(attachmentTag.toString(),
                   containsAll("<input", "name='_fm.g._0.f.attach'", "type='hidden'", "value=''", "/>"));

        // with attachment
        field.setAttachment("attachedObject");

        assertEquals("attachedObject", field.getAttachment());
        assertEquals("eNpb85aBtYSBL7GkJDE5IzXFPykrNbkEAFOhB7Y%3D", field.getAttachmentEncoded());
        assertEquals(true, field.hasAttachment());

        attachmentTag = field.getAttachmentHiddenField();
        assertThat(
                attachmentTag.toString(),
                containsAll("<input", "name='_fm.g._0.f.attach'", "type='hidden'",
                            "value='eNpb85aBtYSBL7GkJDE5IzXFPykrNbkEAFOhB7Y%3D'", "/>"));

        // clear attachment
        field.clearAttachment();
        assertEquals(null, field.getAttachment());
        assertEquals("", field.getAttachmentEncoded());
        assertEquals(false, field.hasAttachment());
    }

    @Test
    public void field_isValid() throws Exception {
        // new form
        GroupInstanceHelper group = tool.get("group1").getDefaultInstance();
        FieldHelper field = group.get("field1");

        assertTrue(field.isValid());

        // submit form
        submitForm();

        group = tool.get("group1").getDefaultInstance();
        field = group.get("field2");

        assertFalse(field.isValid());
    }

    @Test
    public void field_getMessage() throws Exception {
        // new form
        GroupInstanceHelper group = tool.get("group1").getDefaultInstance();
        FieldHelper field = group.get("field1");

        assertEquals(null, field.getMessage());

        // submit form
        submitForm();

        group = tool.get("group1").getDefaultInstance();
        field = group.get("field2");

        assertEquals("required field2", field.getMessage());
    }

    private void setFieldValues(FieldHelper fieldHelper, String[] value) throws Exception {
        Field field = (Field) getAccessibleField(FieldHelper.class, "field").get(fieldHelper);
        field.setValues(value);
    }

    public static class MyClass {
        private String property1;
        private int    field2;

        public String getProperty1() {
            return property1;
        }

        public void setProperty1(String property1) {
            this.property1 = property1;
        }

        public int getField2() {
            return field2;
        }

        public void setField2(int field2) {
            this.field2 = field2;
        }
    }
}
TOP

Related Classes of com.alibaba.citrus.service.form.FormToolTests$MyClass

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.