001 package com.mockrunner.connector; 002 003 import java.util.List; 004 005 import javax.resource.cci.RecordFactory; 006 007 import com.mockrunner.base.NestedApplicationException; 008 import com.mockrunner.base.VerifyFailedException; 009 import com.mockrunner.mock.connector.cci.ConnectorMockObjectFactory; 010 import com.mockrunner.mock.connector.cci.MockInteraction; 011 import com.mockrunner.mock.connector.cci.MockLocalTransaction; 012 import com.mockrunner.mock.connector.cci.MockRecordFactory; 013 014 /** 015 * Module for JCA tests. 016 */ 017 public class ConnectorTestModule 018 { 019 private ConnectorMockObjectFactory mockFactory; 020 021 public ConnectorTestModule(ConnectorMockObjectFactory mockFactory) 022 { 023 this.mockFactory = mockFactory; 024 } 025 026 /** 027 * Returns the {@link InteractionHandler}. 028 * @return the {@link InteractionHandler} 029 */ 030 public InteractionHandler getInteractionHandler() 031 { 032 return mockFactory.getInteractionHandler(); 033 } 034 035 private MockRecordFactory getMockRecordFactory() 036 { 037 try 038 { 039 RecordFactory factory = mockFactory.getMockConnectionFactory().getRecordFactory(); 040 if(factory instanceof MockRecordFactory) 041 { 042 return (MockRecordFactory)factory; 043 } 044 return null; 045 } 046 catch(Exception exc) 047 { 048 throw new NestedApplicationException(exc); 049 } 050 } 051 052 /** 053 * Returns a list of all created <code>Interaction</code> objects 054 * by delegating to {@link com.mockrunner.mock.connector.cci.MockConnection#getInteractionList()}. 055 * @return the <code>List</code> of all created <code>Interaction</code> objects 056 */ 057 public List getInteractionList() 058 { 059 return mockFactory.getMockConnection().getInteractionList(); 060 } 061 062 /** 063 * Returns a list of all created indexed records 064 * by delegating to {@link com.mockrunner.mock.connector.cci.MockRecordFactory#getCreatedIndexedRecords()}. 065 * @return the <code>List</code> of all created indexed records 066 */ 067 public List getCreatedIndexedRecords() 068 { 069 return getMockRecordFactory().getCreatedIndexedRecords(); 070 } 071 072 /** 073 * Returns a list of created indexed records that match the specified name 074 * by delegating to {@link com.mockrunner.mock.connector.cci.MockRecordFactory#getCreatedIndexedRecords(String)}. 075 * @param recordName the name of the record 076 * @return the <code>List</code> of matching indexed records 077 */ 078 public List getCreatedIndexedRecords(String recordName) 079 { 080 return getMockRecordFactory().getCreatedIndexedRecords(recordName); 081 } 082 083 /** 084 * Returns a list of all created mapped records 085 * by delegating to {@link com.mockrunner.mock.connector.cci.MockRecordFactory#getCreatedMappedRecords()}. 086 * @return the <code>List</code> of all created mapped records 087 */ 088 public List getCreatedMappedRecords() 089 { 090 return getMockRecordFactory().getCreatedMappedRecords(); 091 } 092 093 /** 094 * Returns a list of created mapped records that match the specified name 095 * by delegating to {@link com.mockrunner.mock.connector.cci.MockRecordFactory#getCreatedMappedRecords(String)}. 096 * @param recordName the name of the record 097 * @return the <code>List</code> of matching mapped records 098 */ 099 public List getCreatedMappedRecords(String recordName) 100 { 101 return getMockRecordFactory().getCreatedMappedRecords(recordName); 102 } 103 104 /** 105 * Verifies that the connection is closed. 106 * @throws VerifyFailedException if verification fails 107 */ 108 public void verifyConnectionClosed() 109 { 110 if(!mockFactory.getMockConnection().isClosed()) 111 { 112 throw new VerifyFailedException("Connection is not closed."); 113 } 114 } 115 116 /** 117 * Verifies that all interactions are closed. 118 * @throws VerifyFailedException if verification fails 119 */ 120 public void verifyAllInteractionsClosed() 121 { 122 List interactions = getInteractionList(); 123 for(int ii = 0; ii < interactions.size(); ii++) 124 { 125 MockInteraction interaction = (MockInteraction)interactions.get(ii); 126 if(!interaction.isClosed()) 127 { 128 throw new VerifyFailedException("Interaction with index " + ii + " is not closed."); 129 } 130 } 131 } 132 133 /** 134 * Verifies that the specified interaction is closed. 135 * @param index the index of the <code>Interaction</code> 136 * @throws VerifyFailedException if verification fails 137 */ 138 public void verifyInteractionClosed(int index) 139 { 140 List interactions = getInteractionList(); 141 if(index >= interactions.size()) 142 { 143 throw new VerifyFailedException("Interaction with index " + index + " does not exist, only " + interactions.size() + " interactions."); 144 } 145 MockInteraction interaction = (MockInteraction)interactions.get(index); 146 if(!interaction.isClosed()) 147 { 148 throw new VerifyFailedException("Interaction with index " + index + " is not closed."); 149 } 150 } 151 152 /** 153 * Verifies that <code>expected</code> number of indexed records 154 * have been created. 155 * @param expected the expected number of indexed records 156 * @throws VerifyFailedException if verification fails 157 */ 158 public void verifyNumberCreatedIndexedRecords(int expected) 159 { 160 int actual = getMockRecordFactory().getNumberCreatedIndexedRecords(); 161 if(actual != expected) 162 { 163 throw new VerifyFailedException("Expected " + expected + " indexed records, actual " + actual + " indexed records"); 164 } 165 } 166 167 /** 168 * Verifies that <code>expected</code> number of indexed records 169 * with the specified name have been created. 170 * @param recordName the name of the record 171 * @param expected the expected number of indexed records 172 * @throws VerifyFailedException if verification fails 173 */ 174 public void verifyNumberCreatedIndexedRecords(String recordName, int expected) 175 { 176 List list = getCreatedIndexedRecords(recordName); 177 if(list.size() != expected) 178 { 179 throw new VerifyFailedException("Expected " + expected + " indexed records with the name " + recordName + ", actual " + list.size() + " indexed records"); 180 } 181 } 182 183 /** 184 * Verifies that <code>expected</code> number of mapped records 185 * have been created. 186 * @param expected the expected number of mapped records 187 * @throws VerifyFailedException if verification fails 188 */ 189 public void verifyNumberCreatedMappedRecords(int expected) 190 { 191 int actual = getMockRecordFactory().getNumberCreatedMappedRecords(); 192 if(actual != expected) 193 { 194 throw new VerifyFailedException("Expected " + expected + " mapped records, actual " + actual + " mapped records"); 195 } 196 } 197 198 /** 199 * Verifies that <code>expected</code> number of mapped records 200 * with the specified name have been created. 201 * @param recordName the name of the record 202 * @param expected the expected number of mapped records 203 * @throws VerifyFailedException if verification fails 204 */ 205 public void verifyNumberCreatedMappedRecords(String recordName, int expected) 206 { 207 List list = getCreatedMappedRecords(recordName); 208 if(list.size() != expected) 209 { 210 throw new VerifyFailedException("Expected " + expected + " mapped records with the name " + recordName + ", actual " + list.size() + " mapped records"); 211 } 212 } 213 214 /** 215 * Verifies that the current local transaction was committed. 216 * @throws VerifyFailedException if verification fails 217 */ 218 public void verifyLocalTransactionCommitted() 219 { 220 MockLocalTransaction transaction = mockFactory.getMockConnection().getMockLocalTransaction(); 221 if(!transaction.wasCommitCalled()) 222 { 223 throw new VerifyFailedException("Local transaction not committed"); 224 } 225 } 226 227 /** 228 * Verifies that the current local transaction was not committed. 229 * @throws VerifyFailedException if verification fails 230 */ 231 public void verifyLocalTransactionNotCommitted() 232 { 233 MockLocalTransaction transaction = mockFactory.getMockConnection().getMockLocalTransaction(); 234 if(transaction.wasCommitCalled()) 235 { 236 throw new VerifyFailedException("Local transaction was committed"); 237 } 238 } 239 240 /** 241 * Verifies that the current local transaction was rolled back. 242 * @throws VerifyFailedException if verification fails 243 */ 244 public void verifyLocalTransactionRolledBack() 245 { 246 MockLocalTransaction transaction = mockFactory.getMockConnection().getMockLocalTransaction(); 247 if(!transaction.wasRollbackCalled()) 248 { 249 throw new VerifyFailedException("Local transaction not rolled back"); 250 } 251 } 252 253 /** 254 * Verifies that the current local transaction was not rolled back. 255 * @throws VerifyFailedException if verification fails 256 */ 257 public void verifyLocalTransactionNotRolledBack() 258 { 259 MockLocalTransaction transaction = mockFactory.getMockConnection().getMockLocalTransaction(); 260 if(transaction.wasRollbackCalled()) 261 { 262 throw new VerifyFailedException("Local transaction was rolled back"); 263 } 264 } 265 }