/*
* Copyright 2005-2006 the original author or authors.
*
* 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.strecks.web.form;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.strecks.form.controller.DelegatingForm;
import org.strecks.form.controller.FormTestUtils;
import org.strecks.web.form.impl.NewProjectForm;
import org.strecks.web.form.impl.Project;
import org.strecks.web.form.impl.ProjectType;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* @author Phil Zoio
*/
public class TestProjectFormBinding
{
private NewProjectForm form;
private DelegatingForm delegator;
private static final ProjectType projectType1 = new ProjectType(1, "Project type 1");
private static final ProjectType projectType2 = new ProjectType(1, "Project type 2");
@BeforeMethod
public void testProjectForm()
{
form = new NewProjectForm();
//set up form
Map<Integer, ProjectType> availableProjectTypes = new HashMap<Integer, ProjectType>();
availableProjectTypes.put(1, projectType1);
availableProjectTypes.put(1, projectType2);
form.setAvailableProjectTypes(availableProjectTypes);
Project project = new Project();
form.setProject(project);
delegator = FormTestUtils.getDelegatingForm(form);
}
@Test
public void testInwardBinding()
{
Project project = new Project();
form.setProject(project);
// now set properties
// form.setSelectedProjectStatus("1");
form.setSelectedProjectType("1");
form.setProjectName("projectName");
form.setReadyDate("19 July 2005");
delegator.bindInwards(null);
assert project.getProjectType() != null;
assert project.getReadyDate() != null;
assert project.getProjectName() != null;
}
@Test
public void testEmptyBinding()
{
Project project = new Project();
form.setProject(project);
// now set properties
form.setSelectedProjectType("");
form.setProjectName("");
form.setProjectDescription("");
form.setReadyDate("");
delegator.bindInwards(null);
assert project.getProjectType() == null;
assert project.getReadyDate() == null;
assert project.getProjectName() == null;
// this uses SafeBeanUtilsConverter.class, so results in null
assert project.getProjectDescription() == null;
}
/**
* Null inward binding with availableProjectTypes not set to null
*/
@Test
public void testNullInwardBinding1()
{
Project project = new Project();
form.setProject(project);
delegator.bindInwards(null);
assert project.getProjectType() == null;
assert project.getReadyDate() == null;
assert project.getProjectName() == null;
}
/**
* Null inward binding with availableProjectTypes set to null
*/
@Test
public void testNullInwardBinding2()
{
Project project = new Project();
form.setProject(project);
form.setAvailableProjectTypes(null);
delegator.bindInwards(null);
assert project.getProjectType() == null;
assert project.getReadyDate() == null;
assert project.getProjectName() == null;
}
@Test
public void testOutwardBinding1()
{
Project project = new Project();
form.setProject(project);
project.setProjectType(new ProjectType());
project.setProjectName("my project");
project.setReadyDate(new Date());
delegator.bindOutwards(null);
// because the ProjectType has no ID set, this will be null. A log message should be set
assert form.getSelectedProjectType() == null;
assert form.getProjectName() != null;
assert form.getReadyDate() != null;
}
@Test
public void testOutwardBinding2()
{
Project project = new Project();
form.setProject(project);
project.setProjectType(projectType1);
project.setProjectName("my project");
project.setReadyDate(new Date());
delegator.bindOutwards(null);
assert form.getSelectedProjectType() != null;
assert form.getProjectName() != null;
assert form.getReadyDate() != null;
}
@Test
public void testNullOutwardBinding()
{
Project project = new Project();
form.setProject(project);
delegator.bindOutwards(null);
assert form.getSelectedProjectType() == null;
assert form.getProjectName() == null;
assert form.getReadyDate() == null;
}
@Test
public void testOverwriteInwardBinding()
{
Project project = new Project();
form.setProject(project);
project.setProjectName("my project");
form.setProjectName(null);
delegator.bindInwards(null);
// check that these have been set to null
assert project.getProjectName() == null;
}
@Test
public void testOverwriteOutwardBinding()
{
Project project = new Project();
form.setProject(project);
form.setProjectName("project name");
project.setProjectType(new ProjectType());
project.setProjectName(null);
delegator.bindOutwards(null);
// check that these have been set to null
assert form.getProjectName() == null;
}
}