Package org.springmodules.ant.task

Source Code of org.springmodules.ant.task.SpringDependencyInjectorTaskTest

package org.springmodules.ant.task;

import java.util.Map;

import junit.framework.TestCase;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springmodules.ant.util.BeanFactoryLoader;

public class SpringDependencyInjectorTaskTest extends TestCase {

  SpringDependencyInjectorTask task = new SpringDependencyInjectorTask();

  Project project = new Project();

  protected void setUp() throws Exception {
    super.setUp();
    task.setProject(project);
  }

  /**
   * Test that autowiring can be done on a DefaultListableBeanFactory.
   * @throws Exception
   */
  public void testAutowireDefaultListableBeanFactory() throws Exception {
    BeanFactory parent = BeanFactoryLoader.getBeanFactory("test.bootstrap");
    DefaultListableBeanFactory context = new DefaultListableBeanFactory();
    context.setParentBeanFactory(parent);
    context.registerSingleton("this", this);
    SpringDependencyInjectorTaskTest test = (SpringDependencyInjectorTaskTest) context.getBean("this");
    context.autowireBeanProperties(test, AutowireCapableBeanFactory.AUTOWIRE_BY_NAME, false);
    assertNotNull("Null test bean", test);
    assertNotNull("Null properties", test.properties);
  }
 
  /**
   * Test that the task executes and wires a task correctly
   * @throws Exception
   */
  public void testDefaultExecute() throws Exception {
    TestTask test = new TestTask();
    test.setProject(project);
    project.addReference("task", test);
    task.setTaskRef("task");
    task.setFactoryKey("test.bootstrap");
    task.execute();
    assertNotNull("Null properties", test.properties);
  }

  /**
   * Test that the task executes and wires a task correctly by type
   * @throws Exception
   */
  public void testAutowireByType() throws Exception {
    TestTask test = new TestTask();
    test.setProject(project);
    project.addReference("task", test);
    task.setTaskRef("task");
    task.setAutowire("byType");
    task.setFactoryKey("test.bootstrap");
    task.execute();
    assertNotNull("Null properties", test.properties);
  }

  /**
   * Test that the task throws BuildException when task ref is missing
   * @throws Exception
   */
  public void testMissingRef() throws Exception {
    task.setTaskRef("task");
    task.setFactoryKey("test.bootstrap");
    try {
      task.execute();
      fail("Expected BuildException when task ref invalid");
    } catch (BuildException e) {
      // expected
    }
  }

  /**
   * Test that the task throws BuildException when task ref is wrong type
   * @throws Exception
   */
  public void testRefWrongClass() throws Exception {
    task.setTaskRef("task");
    task.setFactoryKey("test.bootstrap");
    project.addReference("task", "foo");
    try {
      task.execute();
      fail("Expected BuildException when task ref invalid");
    } catch (BuildException e) {
      // expected
      assertTrue("Wrong message", e.getMessage().startsWith("Reference ("));
    }
  }

  private Map properties;

  /**
   * Injected during test.
   * @param properties
   */
  public void setProperties(Map properties) {
    this.properties = properties;
  }
}
TOP

Related Classes of org.springmodules.ant.task.SpringDependencyInjectorTaskTest

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.