All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.mockrunner.example.connector.PersonSearchDAOTest Maven / Gradle / Ivy

package com.mockrunner.example.connector;

import java.io.FileInputStream;

import com.mockrunner.connector.ConnectorTestCaseAdapter;
import com.mockrunner.connector.StreamableRecordByteArrayInteraction;
import com.mockrunner.ejb.EJBTestModule;

/**
 * Example test for {@link PersonSearchDAO}. The two files
 * personin.bin and personout.bin are snapshots
 * from a real mainframe communication. Once created, the snapshot
 * files can be used to simulate mainframe access in tests.
 * The personin.bin file represents an empty person with an id of 
 * 1, which is the request. The personout.bin contains the 
 * user data for the person with id 1. If we search for a user with id 
 * 1, the framework recognizes that the actual request matches the expected
 * request and returns the actual response (the personout.bin data).
 * If we pass 2 as the id, no response is found and findPersonById
 * returns an empty person. This example uses the
 * {@link com.mockrunner.connector.StreamableRecordByteArrayInteraction} which
 * works with byte data. {@link com.mockrunner.connector.StreamableRecordByteArrayInteraction}
 * can always be used when the involved Record classes implement
 * Streamable.
 */
public class PersonSearchDAOTest extends ConnectorTestCaseAdapter
{
    private EJBTestModule ejbModule;
    private PersonSearchDAO dao;
    
    protected void setUp() throws Exception
    {
        super.setUp();
        ejbModule = createEJBTestModule();
        ejbModule.bindToContext("java:ra/cics/ConnectionFactory", getConnectorMockObjectFactory().getMockConnectionFactory());
        dao = new PersonSearchDAO();
    }
    
    private void prepareInteraction() throws Exception
    {
        StreamableRecordByteArrayInteraction interaction = new StreamableRecordByteArrayInteraction();
        FileInputStream request = new FileInputStream("src/com/mockrunner/example/connector/personin.bin");
        FileInputStream response = new FileInputStream("src/com/mockrunner/example/connector/personout.bin");
        interaction.setExpectedRequest(request);
        interaction.setResponse(response);
        getInteractionHandler().addImplementor(interaction);
        request.close();
        response.close();
    }

    public void testFindPersonByIdFound() throws Exception
    {
        prepareInteraction();
        Person response = dao.findPersonById("1");
        assertEquals("1", response.getId());
        assertEquals("Jane", response.getFirstName());
        assertEquals("Doe", response.getLastName());
        assertEquals(30, response.getAge());
        verifyConnectionClosed();
        verifyAllInteractionsClosed();
    }
    
    public void testFindPersonByIdNotFound() throws Exception
    {
        prepareInteraction();
        Person response = dao.findPersonById("2");
        assertNull(response.getId());
        verifyConnectionClosed();
        verifyAllInteractionsClosed();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy