GRAILS-1019: Allowing expressions to be used with the 'disabled' attribute for g...
[grails.git] / test / groovy / org / codehaus / groovy / grails / web / taglib / LinkRenderingTagLibTests.groovy
blob63b430c209db76a23ed5f54595c077848f08c43f
1 package org.codehaus.groovy.grails.web.taglib;
3 import org.codehaus.groovy.runtime.InvokerHelper
4 import org.codehaus.groovy.grails.commons.*
6 class LinkRenderingTagLibTests extends AbstractGrailsTagTests {
8 void onInit() {
9 def mappingClass = gcl.parseClass('''
10 class TestUrlMappings {
11 static mappings = {
12 "/$controller/$action?/$id?"{
13 constraints {
14 // apply constraints here
18 "/products/$id" {
19 controller = "test"
20 action = "index"
22 "/surveys/$action?" {
23 controller = "survey"
25 "/searchable" {
26 controller = "searchable"
27 action = "index"
29 "/searchable/$action?" {
30 controller = "searchable"
34 ''')
36 grailsApplication.addArtefact(UrlMappingsArtefactHandler.TYPE, mappingClass)
39 void testOverlappingReverseMappings() {
40 def template = '<g:link controller="searchable" action="index" >Search</g:link>'
42 assertOutputEquals('<a href="/searchable">Search</a>', template)
44 template = '<g:link controller="searchable" >Search</g:link>'
46 assertOutputEquals('<a href="/searchable">Search</a>', template)
49 template = '<g:link controller="searchable" action="other" >Search</g:link>'
51 assertOutputEquals('<a href="/searchable/other">Search</a>', template)
54 template = '<g:form controller="searchable" action="index" >Search</g:form>'
56 assertOutputEquals('<form action="/searchable" method="post" >Search</form>', template)
58 template = '<g:form controller="searchable" >Search</g:form>'
60 assertOutputEquals('<form action="/searchable" method="post" >Search</form>', template)
65 void testLinkWithControllerAndId() {
66 def template = '<g:link controller="book" id="10">${name}</g:link>'
68 assertOutputEquals('<a href="/book?id=10">Groovy in Action</a>', template, [name:"Groovy in Action"])
72 void testRenderLinkWithReverseMapping() {
73 def template = '<g:link controller="survey">${name}</g:link>'
75 assertOutputEquals('<a href="/surveys">Food I Like</a>', template, [name:"Food I Like"])
77 template = '<g:link controller="test" action="index" id="MacBook">${name}</g:link>'
79 assertOutputEquals('<a href="/products/MacBook">MacBook</a>', template, [name:"MacBook"])
83 void testUrlMapper() {
84 assert appCtx.grailsUrlMappingsHolder
85 assert appCtx.grailsUrlMappingsHolder.urlMappings.length > 0
89 void testRenderLink() {
90 def template = '<g:link controller="foo" action="list">${name}</g:link>'
92 assertOutputEquals('<a href="/foo/list">bar</a>', template, [name:"bar"])
95 void testRenderForm() {
96 def template = '<g:form controller="foo" action="list">${name}</g:form>'
98 assertOutputEquals('<form action="/foo/list" method="post" >bar</form>', template, [name:"bar"])
100 template = '<g:form controller="foo">${name}</g:form>'
102 assertOutputEquals('<form action="/foo" method="post" >bar</form>', template, [name:"bar"])
106 void testRenderFormWithUrlAttribute() {
107 def template = '<g:form url="[controller:\'stuff\',action:\'list\']">${name}</g:form>'
109 assertOutputEquals('<form action="/stuff/list" method="post" >bar</form>', template, [name:"bar"])
111 template = '<g:form url="[controller:\'stuff\',action:\'show\', id:11]" id="myForm">${name}</g:form>'
113 assertOutputEquals('<form action="/stuff/show/11" method="post" id="myForm" >bar</form>', template, [name:"bar"])
118 void testRenderFormWithUrlAttributeAndReverseMapping() {
119 def template = '<g:form url="[controller:\'test\',action:\'index\', id:\'MacBook\']">${name}</g:form>'
121 assertOutputEquals('<form action="/products/MacBook" method="post" >MacBook</form>', template, [name:"MacBook"])