source: branches/features/purchaseOrders/src/groovy/com/henyo/BaseUnitTestCase.groovy @ 902

Last change on this file since 902 was 898, checked in by gav, 14 years ago

Add savePurchaseOrderNumber() and savePurchaseOrderNumberRange() to PurchaseOrderService.

File size: 1.1 KB
RevLine 
[898]1package com.henyo
2
3import grails.test.GrailsUnitTestCase
4import org.springframework.transaction.TransactionStatus
5
6/**
7 * Base unit test class with mock extensions.
8 * http://blog.henyo.com/2009/04/mocking-transactions-for-unit-testing.html
9 */ 
10class BaseUnitTestCase extends GrailsUnitTestCase {
11
12    def statusControls
13
14    protected void setUp() {
15        super.setUp()
16        statusControls = []
17    }
18
19    protected void tearDown(){
20        statusControls.each{
21            it.verify()
22        }
23        statusControls.clear()
24        super.tearDown()
25    }
26
27    def mockForTransaction(Class clazz,boolean expectRollback = false){
28        registerMetaClass(clazz)
29        def statusControl = mockFor(TransactionStatus)
30        statusControls << statusControl
31        if(expectRollback)
32            statusControl.demand.setRollbackOnly(1..1) { println 'setRollbackOnly called'}
33        def status = statusControl.createMock()
34        clazz.metaClass.'static'.withTransaction = {
35            Closure callable ->  callable.call(status)
36        }
37        return statusControl
38    }
39}
Note: See TracBrowser for help on using the repository browser.