package com.jmh.issues.webapp.action;

import com.jmh.foundation.webapp.action.BaseStrutsTestCaseSpring;
import org.junit.Test;
import org.junit.Assert;

/**
 * User: dusty
 * Date: Mar 12, 2009
 */
public class BusinessEntityControllerTest extends BaseStrutsTestCaseSpring {

    @Test
    public void index() throws Exception{
        BusinessEntityController businessEntityController = createAction("/business-entities","index");
        String result = proxy.execute();
        Assert.assertEquals("index", result);
        Assert.assertTrue(businessEntityController.getBusinessEntities().size() > 0);
    }

    @Test
    public void show() throws Exception{
        request.setParameter("id","1");
        BusinessEntityController businessEntityController = createAction("/business-entities","show");
        String result = proxy.execute();
        Assert.assertEquals("show", result);
        Assert.assertNotNull(businessEntityController.getBusinessEntity());
        Assert.assertNotNull(businessEntityController.getBusinessEntity().getId());
    }

	@Test
    public void editNew() throws Exception{
        BusinessEntityController businessEntityController = createAction("/business-entities","index");
        String result = proxy.execute();
        Assert.assertEquals("new", result);
    }

	@Test
    public void create() throws Exception{
        request.setParameter("businessEntity.name","Mike Jones");
        BusinessEntityController businessEntityController = createAction("/business-entities","create");
        String result = proxy.execute();
        Assert.assertEquals("success", result);
        Assert.assertNotNull(businessEntityController.getBusinessEntity());
        Assert.assertNotNull(businessEntityController.getBusinessEntity().getId());
    }

	@Test
    public void createWithValidationFail() throws Exception{
        request.setParameter("businessEntity.name","");
        BusinessEntityController businessEntityController = createAction("/business-entities","create");
        String result = proxy.execute();
        Assert.assertEquals("input", result);
        Assert.assertTrue(businessEntityController.getFieldErrors().containsKey("businessEntity.name"));
    }

	@Test
    public void edit() throws Exception{
        request.setParameter("id","");
        BusinessEntityController businessEntityController = createAction("/business-entities","edit");
        String result = proxy.execute();
        Assert.assertEquals("edit", result);
        Assert.assertNotNull(businessEntityController.getBusinessEntity());
        Assert.assertNotNull(businessEntityController.getBusinessEntity().getId());
    }

	@Test
    public void update() throws Exception{
        request.setParameter("id","1");
        request.setParameter("businessEntity.id","1");
        request.setParameter("businessEntity.name", "Business Entity #1");
        BusinessEntityController businessEntityController = createAction("/business-entities","update");
        String result = proxy.execute();
        Assert.assertEquals("success", result);
        Assert.assertNotNull(businessEntityController.getBusinessEntity());
        Assert.assertNotNull(businessEntityController.getBusinessEntity().getId());
        Assert.assertEquals("Business Entity #1", businessEntityController.getBusinessEntity().getName());
    }

}