001: package com.mockrunner.test.connector;
002:
003: import javax.resource.ResourceException;
004: import javax.resource.cci.InteractionSpec;
005: import javax.resource.cci.Record;
006:
007: import com.mockrunner.connector.InteractionHandler;
008: import com.mockrunner.connector.InteractionImplementor;
009:
010: import junit.framework.TestCase;
011:
012: public class InteractionHandlerTest extends TestCase {
013: private InteractionHandler interactionHandler;
014:
015: protected void setUp() throws Exception {
016: interactionHandler = new InteractionHandler();
017: }
018:
019: protected void tearDown() throws Exception {
020: interactionHandler = null;
021: }
022:
023: public void testExecuteReturnsBoolean() throws Exception {
024: assertFalse(interactionHandler.execute(
025: new TestInteractionSpec(), new TestRecord(),
026: new TestRecord()));
027: TestInteractionImplementor implementor1 = new TestInteractionImplementor(
028: false);
029: TestInteractionImplementor implementor2 = new TestInteractionImplementor(
030: true);
031: implementor2.setBooleanReturnValue(false);
032: TestInteractionImplementor implementor3 = new TestInteractionImplementor(
033: false);
034: interactionHandler.addImplementor(implementor1);
035: interactionHandler.addImplementor(implementor2);
036: interactionHandler.addImplementor(implementor3);
037: assertFalse(interactionHandler.execute(
038: new TestInteractionSpec(), new TestRecord(),
039: new TestRecord()));
040: assertFalse(implementor1.wasExecuteCalled());
041: assertTrue(implementor2.wasExecuteCalled());
042: assertFalse(implementor3.wasExecuteCalled());
043: interactionHandler.clearImplementors();
044: implementor1 = new TestInteractionImplementor(false);
045: implementor2 = new TestInteractionImplementor(false);
046: interactionHandler.addImplementor(implementor1);
047: interactionHandler.addImplementor(implementor2);
048: assertFalse(interactionHandler.execute(
049: new TestInteractionSpec(), new TestRecord(),
050: new TestRecord()));
051: assertFalse(implementor1.wasExecuteCalled());
052: assertFalse(implementor2.wasExecuteCalled());
053: interactionHandler.clearImplementors();
054: implementor1 = new TestInteractionImplementor(true);
055: implementor2 = new TestInteractionImplementor(false);
056: interactionHandler.addImplementor(implementor1);
057: interactionHandler.addImplementor(implementor2);
058: assertTrue(interactionHandler.execute(
059: new TestInteractionSpec(), new TestRecord(),
060: new TestRecord()));
061: assertTrue(implementor1.wasExecuteCalled());
062: assertFalse(implementor2.wasExecuteCalled());
063: }
064:
065: public void testExecuteReturnsRecord() throws Exception {
066: assertNull(interactionHandler.execute(
067: new TestInteractionSpec(), new TestRecord()));
068: TestInteractionImplementor implementor1 = new TestInteractionImplementor(
069: false);
070: TestInteractionImplementor implementor2 = new TestInteractionImplementor(
071: true);
072: TestRecord testRecord = new TestRecord();
073: implementor2.setRecordReturnValue(testRecord);
074: TestInteractionImplementor implementor3 = new TestInteractionImplementor(
075: false);
076: interactionHandler.addImplementor(implementor1);
077: interactionHandler.addImplementor(implementor2);
078: interactionHandler.addImplementor(implementor3);
079: assertSame(testRecord, interactionHandler.execute(
080: new TestInteractionSpec(), new TestRecord()));
081: assertFalse(implementor1.wasExecuteCalled());
082: assertTrue(implementor2.wasExecuteCalled());
083: assertFalse(implementor3.wasExecuteCalled());
084: interactionHandler.clearImplementors();
085: implementor1 = new TestInteractionImplementor(false);
086: implementor2 = new TestInteractionImplementor(false);
087: interactionHandler.addImplementor(implementor1);
088: interactionHandler.addImplementor(implementor2);
089: assertNull(interactionHandler.execute(
090: new TestInteractionSpec(), new TestRecord()));
091: assertFalse(implementor1.wasExecuteCalled());
092: assertFalse(implementor2.wasExecuteCalled());
093: interactionHandler.clearImplementors();
094: implementor1 = new TestInteractionImplementor(true);
095: implementor2 = new TestInteractionImplementor(false);
096: interactionHandler.addImplementor(implementor1);
097: interactionHandler.addImplementor(implementor2);
098: assertNull(interactionHandler.execute(
099: new TestInteractionSpec(), new TestRecord()));
100: assertTrue(implementor1.wasExecuteCalled());
101: assertFalse(implementor2.wasExecuteCalled());
102: }
103:
104: private class TestInteractionSpec implements InteractionSpec {
105:
106: }
107:
108: private class TestRecord implements Record {
109: public String getRecordName() {
110: return null;
111: }
112:
113: public String getRecordShortDescription() {
114: return null;
115: }
116:
117: public void setRecordName(String name) {
118:
119: }
120:
121: public void setRecordShortDescription(String description) {
122:
123: }
124:
125: public Object clone() throws CloneNotSupportedException {
126: return null;
127: }
128: }
129:
130: private class TestInteractionImplementor implements
131: InteractionImplementor {
132: private boolean doProcess = false;
133: private boolean wasExecuteCalled = false;
134: private boolean booleanReturnValue = true;
135: private Record recordReturnValue = null;
136:
137: public TestInteractionImplementor(boolean doProcess) {
138: this .doProcess = doProcess;
139: }
140:
141: public void setBooleanReturnValue(boolean booleanReturnValue) {
142: this .booleanReturnValue = booleanReturnValue;
143: }
144:
145: public void setRecordReturnValue(Record recordReturnValue) {
146: this .recordReturnValue = recordReturnValue;
147: }
148:
149: public boolean canHandle(InteractionSpec interactionSpec,
150: Record actualRequest, Record actualResponse) {
151: return doProcess;
152: }
153:
154: public Record execute(InteractionSpec interactionSpec,
155: Record actualRequest) throws ResourceException {
156: wasExecuteCalled = true;
157: return recordReturnValue;
158: }
159:
160: public boolean execute(InteractionSpec is, Record request,
161: Record response) throws ResourceException {
162: wasExecuteCalled = true;
163: return booleanReturnValue;
164: }
165:
166: public boolean wasExecuteCalled() {
167: return wasExecuteCalled;
168: }
169: }
170: }
|