GRAILS-1019: Allowing expressions to be used with the 'disabled' attribute for g...
[grails.git] / test / groovy / org / codehaus / groovy / grails / plugins / web / filters / FilterConfigTests.groovy
blobad253e9d6a9e7459c045abb90cc0d83ea4d1b1af
1 /*
2 * Copyright 2008 the original author or authors.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0 s
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.codehaus.groovy.grails.plugins.web.filters
18 /**
19 * Test case for {@link FilterConfig}.
21 * @author pledbrook
23 class FilterConfigTests extends GroovyTestCase {
24 private static final int INT_PROP_VALUE = 1000
25 private static final String STRING_PROP_VALUE = 'Test property'
27 void testPropertyMissing() {
28 def mockDefinition = new MockFiltersDefinition()
29 def testFilterConfig = new FilterConfig(name: 'Test filter', initialised: true, filtersDefinition: mockDefinition)
31 // Try property 1 to start with.
32 assert testFilterConfig.propOne == INT_PROP_VALUE
34 // Now try it a couple more times to make sure that the metaclass
35 // property has been registered correctly.
36 assert testFilterConfig.propOne == INT_PROP_VALUE
37 assert testFilterConfig.propOne == INT_PROP_VALUE
39 // Now try with number 2.
40 assert testFilterConfig.prop2 == STRING_PROP_VALUE
41 assert testFilterConfig.prop2 == STRING_PROP_VALUE
42 assert testFilterConfig.prop2 == STRING_PROP_VALUE
44 // And now make sure we can still access property 1.
45 assert testFilterConfig.propOne == INT_PROP_VALUE
47 // Any other property access should result in this exception.
48 shouldFail(MissingPropertyException) {
49 testFilterConfig.unknownProperty
53 void testMethodMissing() {
54 def mockDefinition = new MockFiltersDefinition()
55 def testFilterConfig = new FilterConfig(name: 'Test filter', initialised: true, filtersDefinition: mockDefinition)
57 // Try the 'run' method first.
58 testFilterConfig.run()
59 assert mockDefinition.runCalled
61 // Now try it a couple more times to make sure that the metaclass
62 // method has been registered correctly.
63 mockDefinition.reset()
64 testFilterConfig.run()
65 assert mockDefinition.runCalled
67 mockDefinition.reset()
68 testFilterConfig.run()
69 assert mockDefinition.runCalled
71 // Now try with the next method.
72 mockDefinition.reset()
73 mockDefinition.returnValue = 6342
74 assert testFilterConfig.generateNumber() == 6342
75 assert mockDefinition.generateNumberCalled == true
77 mockDefinition.reset()
78 mockDefinition.returnValue = '101'
79 assert testFilterConfig.generateNumber() == '101'
80 assert mockDefinition.generateNumberCalled == true
82 mockDefinition.reset()
83 mockDefinition.returnValue = 10.232
84 assert testFilterConfig.generateNumber() == 10.232
85 assert mockDefinition.generateNumberCalled == true
87 // Now for a method with arguments.
88 mockDefinition.reset()
89 mockDefinition.expectedStringArg = 'Test'
90 mockDefinition.expectedIntArg = 1000
91 testFilterConfig.checkArgs('Test', 1000)
92 assert mockDefinition.checkArgsCalled
94 mockDefinition.reset()
95 mockDefinition.expectedStringArg = 'Test two'
96 mockDefinition.expectedIntArg = 2000
97 testFilterConfig.checkArgs('Test two', 2000)
98 assert mockDefinition.checkArgsCalled
100 mockDefinition.reset()
101 mockDefinition.expectedStringArg = 'Apples'
102 mockDefinition.expectedIntArg = -3423
103 testFilterConfig.checkArgs('Apples', -3423)
104 assert mockDefinition.checkArgsCalled
106 // A method that takes a list as an argument.
107 mockDefinition.reset()
108 assert testFilterConfig.sum([1, 2, 3, 4]) == 10
109 assert mockDefinition.sumCalled
111 mockDefinition.reset()
112 assert testFilterConfig.sum([4, 5, 1, 10]) == 20
113 assert mockDefinition.sumCalled
115 mockDefinition.reset()
116 assert testFilterConfig.sum([12, 26, 3, 41]) == 82
117 assert mockDefinition.sumCalled
119 // And now make sure the 'run' method is still available.
120 mockDefinition.reset()
121 testFilterConfig.run()
122 assert mockDefinition.runCalled
124 // Any other property access should result in this exception.
125 shouldFail(MissingMethodException) {
126 testFilterConfig.unknownMethod(23)
131 class MockFiltersDefinition {
132 def propOne = 1000
133 def prop2 = 'Test property'
134 def runCalled
135 def generateNumberCalled
136 def checkArgsCalled
137 def sumCalled
138 def expectedStringArg
139 def expectedIntArg
140 def returnValue
142 MockFiltersDefinition() {
143 reset()
146 void run() {
147 runCalled = true
150 def generateNumber() {
151 generateNumberCalled = true
152 return returnValue
155 void checkArgs(String arg1, int arg2) {
156 checkArgsCalled = true
157 assert arg1 == expectedStringArg
158 assert arg2 == expectedIntArg
161 def sum(items) {
162 sumCalled = true
163 items.sum()
166 void reset() {
167 runCalled = false
168 generateNumberCalled = false
169 checkArgsCalled = false
170 sumCalled = false
171 expectedStringArg = null
172 expectedIntArg = null
173 returnValue = null