package org.appfuse.service;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.appfuse.model.Template;


public class TemplateManagerTest extends BaseManagerTestCase {
    //~ Static fields/initializers =============================================

    private Template template;

    //~ Instance fields ========================================================

    private TemplateManager mgr = null;
    private Log log = LogFactory.getLog(TemplateManagerTest.class);


    //~ Methods ================================================================

    protected void setUp() throws Exception {
        mgr = (TemplateManager) ctx.getBean("templateManager");
    }

    protected void tearDown() throws Exception {
        mgr = null;
    }

    public void testGetTemplate() throws Exception {
        template = (Template) mgr.getTemplate("1");

        assertTrue("template.name not null", template.getName() != null);
    }

    public void testSaveTemplate() throws Exception {
        template = (Template) mgr.getTemplate("1");
        String name = template.getName();
        template.setName("test");

        template = (Template) mgr.saveTemplate(template);
        assertTrue("name updated", template.getName().equals("test"));

        template.setName(name);
        mgr.saveTemplate(template);
    }

    public void testAddAndRemoveTemplate() throws Exception {
        template = new Template();
        template.setName("simple test");
        template.setContent("some velocity syntax");

        template = (Template) mgr.saveTemplate(template);
        assertTrue(template.getName().equals("simple test"));
        assertTrue(template.getId() != null);

        if (log.isDebugEnabled()) {
            log.debug("removing template, templateId: " +
                    template.getId());
        }

        mgr.removeTemplate(template);
    }

    public static void main(String[] args) {
        junit.textui.TestRunner.run(TemplateManagerTest.class);
    }
}