|
C:\devel\mocks\src\com\ociweb\jnb\ex2\TestTransactionManagerImpl.java
|
1 package com.ociweb.jnb.ex2;
2
3 import junit.framework.TestCase;
4
5 import java.sql.Connection;
6 import java.sql.SQLException;
7
8 public class TestTransactionManagerImpl extends TestCase {
9 private TransactionManagerImpl manager;
10 private MockConnection mockConnection;
11 private MockConnectionFactory mockConnectionFactory;
12
13 public void setUp() {
14 mockConnection = new MockConnection();
15 mockConnectionFactory = new MockConnectionFactory();
16 mockConnectionFactory.createConnectionReturn = mockConnection;
17 }
18
19 public TestTransactionManagerImpl(String name) {
20 super(name);
21 }
22
23 public void testTransactionManagerInitialization() {
24 manager = new TransactionManagerImpl(mockConnectionFactory);
25 assertTrue(mockConnectionFactory.createConnectionCalled);
26 assertTrue(mockConnection.setAutoCommitCalled);
27 assertEquals(false, mockConnection.setAutoCommitAutoCommit);
28 }
29
30 public void testCommitSuccess() throws Exception {
31 manager = new TransactionManagerImpl(mockConnectionFactory);
32 manager.commit();
33 assertTrue(mockConnection.commitCalled);
34 }
35
36 public void testCommitFailure() throws Exception {
37 mockConnection.commitException = new SQLException("Could not commit!");
38 manager = new TransactionManagerImpl(mockConnectionFactory);
39 try {
40 manager.commit();
41 fail("The TransactionManager should wrap an SQLException in a TransactionException");
42 } catch (TransactionException e) {
43 assertTrue(mockConnection.commitCalled);
44 assertTrue(e.getCause() instanceof SQLException);
45 assertEquals("Could not commit!", e.getCause().getMessage());
46 }
47 }
48
49 public void testRollbackSuccess() throws Exception {
50 manager = new TransactionManagerImpl(mockConnectionFactory);
51 manager.rollback();
52 assertTrue(mockConnection.rollbackCalled);
53 }
54
55 public void testRollbackFailure() throws Exception {
56 mockConnection.rollbackException = new SQLException("SQL Failure!");
57 manager = new TransactionManagerImpl(mockConnectionFactory);
58 try {
59 manager.rollback();
60 fail("The TransactionManager should wrap an SQLException in a TransactionException");
61 } catch (TransactionException e) {
62 assertTrue(mockConnection.rollbackCalled);
63 assertTrue(e.getCause() instanceof SQLException);
64 assertEquals("SQL Failure!", e.getCause().getMessage());
65 }
66 }
67
68 public void testConnectionProxy() throws Exception {
69 manager = new TransactionManagerImpl(mockConnectionFactory);
70 Connection proxy = manager.getConnection();
71 assertFalse("The connection commit has not been called yet", mockConnection.commitCalled);
72 proxy.commit();
73 assertFalse("The connection commit has still not been called", mockConnection.commitCalled);
74 assertFalse("The connection rollback has not been called yet", mockConnection.rollbackCalled);
75 proxy.rollback();
76 assertFalse("The connection rollback has still not been called", mockConnection.rollbackCalled);
77 assertFalse("The connection close has not been called", mockConnection.closeCalled);
78 proxy.close();
79 assertTrue("The proxy caused the real connection.close() method to be called", mockConnection.closeCalled);
80 }
81 }
82