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
{
9 def mappingClass
= gcl
.parseClass('''
10 class TestUrlMappings {
12 "/$controller/$action?/$id?"{
14 // apply constraints here
26 controller = "searchable"
29 "/searchable/$action?" {
30 controller = "searchable"
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"])