package org.appfuse.webapp.action;

import org.appfuse.Constants;
import org.appfuse.model.ResumeSkill;
import org.appfuse.service.ResumeManager;
import org.appfuse.webapp.form.ResumeSkillForm;


public class ResumeSkillActionTest extends BaseStrutsTestCase {
    //~ Constructors ===========================================================

    public ResumeSkillActionTest(String name) {
        super(name);
    }

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

    public void testSearch() throws Exception {
        setRequestPathInfo("/editResumeSkill");
        addRequestParameter("action", "Search");
        addRequestParameter("resumeId", "1");

        actionPerform();

        verifyForward("edit");
        assertTrue(request.getAttribute(Constants.RESUME_SKILLS) != null);

        ResumeSkillForm form =
            (ResumeSkillForm) request.getAttribute(Constants.RESUME_SKILL_KEY);

        assertEquals(form.getResumeId(), "1");
        verifyNoActionErrors();
    }

    public void testEdit() throws Exception {
        setRequestPathInfo("/editResumeSkill");
        addRequestParameter("action", "Edit");
        addRequestParameter("id", "1");
        addRequestParameter("resumeId", "1");
        actionPerform();
        verifyForward("edit");
        assertTrue(request.getAttribute(Constants.RESUME_SKILL_KEY) != null);
        verifyNoActionErrors();
    }

    public void testSave() throws Exception {
        ResumeManager mgr = (ResumeManager) ctx.getBean("resumeManager");
        ResumeSkill skill = (ResumeSkill) mgr.getResumeSkill("1");
        request.setAttribute(Constants.RESUME_SKILL_KEY, convert(skill));

        setRequestPathInfo("/saveResumeSkill");
        addRequestParameter("action", "Save");
        addRequestParameter("resumeId", "1");
        actionPerform();
        assertTrue(request.getAttribute(Constants.RESUME_SKILLS) != null);
        verifyForward("edit");
        verifyNoActionErrors();
    }

    public void testRemove() throws Exception {
        setRequestPathInfo("/editResumeSkill");
        addRequestParameter("action", "Delete");
        addRequestParameter("id", "2");
        addRequestParameter("resumeId", "1");
        actionPerform();
        verifyForward("edit");
        assertTrue(request.getAttribute(Constants.RESUME_SKILLS) != null);
        verifyNoActionErrors();
    }

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