1 // Copyright 2004-2007 Castle Project - http://www.castleproject.org/
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
7 // http://www.apache.org/licenses/LICENSE-2.0
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
15 namespace Castle
.MonoRail
.Framework
.Views
.NVelocity
.Tests
18 using Castle
.MonoRail
.Framework
.Tests
;
19 using NUnit
.Framework
;
21 using Castle
.MonoRail
.TestSupport
;
24 public class SmartController2TestCase
: AbstractTestCase
27 public void SimpleBindArray()
29 DoPost("smart2/SimpleBindArray.rails");
30 AssertReplyEqualTo("incoming 0");
32 DoGet("smart2/SimpleBindArray.rails");
33 AssertReplyEqualTo("incoming 0");
35 DoGet("smart2/SimpleBindArray.rails", "orders[0].Name=hammett", "orders[1].Name=hamilton");
36 AssertReplyEqualTo("incoming 2");
40 public void SimpleBind()
42 DoPost("smart2/SimpleBind.rails");
43 String expected
= "incoming 0 0";
44 AssertReplyEqualTo(expected
);
46 DoPost("smart2/SimpleBind.rails", "order.name=hammett", "order.itemcount=11", "order.price=20");
47 expected
= "incoming hammett 11 20";
48 AssertReplyEqualTo(expected
);
51 DoPost("smart2/SimpleBind.rails", "order.name=hammett", "order.itemcount=11", "order.price=20");
52 expected
= "incoming hammett 11 20";
53 AssertReplyEqualTo(expected
);
55 DoGet("smart2/SimpleBind.rails", "order.name=hammett", "order.itemcount=11", "order.price=20");
56 expected
= "incoming hammett 11 20";
57 AssertReplyEqualTo(expected
);
59 DoGet("smart2/SimpleBind.rails", "order.name=hammett");
60 expected
= "incoming hammett 0 0";
61 AssertReplyEqualTo(expected
);
65 public void ComplexBind()
67 DoGet( "smart2/ComplexBind.rails", "order.name=hammett", "order.itemcount=11", "order.price=20", "person.id=1", "person.contact.email=x", "person.contact.phone=y" );
68 String expected
= "incoming hammett 11 20 1 x y";
70 AssertReplyEqualTo( expected
);
74 public void ComplexBindExcludePrice()
76 DoGet( "smart2/ComplexBindExcludePrice.rails", "order.name=hammett", "order.itemcount=11", "order.price=20", "person.id=1", "person.contact.email=x", "person.contact.phone=y" );
77 // This still includes zero in place of price due to
78 // the ToString() method of the domain object and price being of type float
79 String expected
= "incoming hammett 11 0 1 x y";
81 AssertReplyEqualTo( expected
);
85 public void ComplexBindExcludeName()
87 DoGet( "smart2/ComplexBindExcludeName.rails", "order.name=hammett", "order.itemcount=11", "order.price=20", "person.id=1", "person.contact.email=x", "person.contact.phone=y" );
88 // This includes an extra space because of the ToString()
89 // method of the domain object and the custom String.Format it contains.
90 String expected
= "incoming 11 20 1 x y";
92 AssertReplyEqualTo( expected
);
96 public void ComplexBindWithPrefix()
98 DoGet("smart2/ComplexBindWithPrefix.rails", "order.name=hammett", "order.itemcount=11", "order.price=20", "person.id=1", "person.contact.email=x", "person.contact.phone=y");
99 String expected
= "incoming hammett 11 20 1 x y";
101 AssertReplyEqualTo(expected
);
105 public void FillingBehavior1()
107 System
.Threading
.Thread
.CurrentThread
.CurrentCulture
= System
.Globalization
.CultureInfo
.InvariantCulture
;
109 DoGet("smart2/FillingBehavior.rails", "abc.name=someone", "abc.date1day=11", "abc.date1month=10", "abc.date1year=2005");
111 String expected
= "incoming someone " + new DateTime( 2005, 10, 11 ).ToShortDateString() + " " +
112 DateTime
.Now
.AddDays(1).ToShortDateString();
114 AssertReplyEqualTo(expected
);
118 public void FillingBehavior2()
120 System
.Threading
.Thread
.CurrentThread
.CurrentCulture
= System
.Globalization
.CultureInfo
.InvariantCulture
;
122 DoGet("smart2/FillingBehavior.rails");
124 String expected
= "incoming hammett " +
125 DateTime
.Now
.ToShortDateString() + " " + DateTime
.Now
.AddDays(1).ToShortDateString();
127 AssertReplyEqualTo(expected
);
131 public void NullableAndDataBind()
133 DoGet("smart2/NullableConversion2.rails", "mov.name=hammett", "mov.amount=11");
134 String expected
= "incoming hammett 11";
136 AssertReplyEqualTo(expected
);
140 public void NullableAndDataBind2()
142 DoGet("smart2/NullableConversion2.rails", "mov.name=hammett");
143 String expected
= "incoming hammett ";
145 AssertReplyEqualTo(expected
);
149 public void ArrayBinding1()
151 DoGet("smart2/ArrayBinding.rails", "user.name=hammett", "user.roles=1", "user.roles=2", "user.permissions=10", "user.permissions=11");
152 String expected
= "User hammett 2 2 1 2 10 11";
154 AssertReplyEqualTo(expected
);
158 public void BugReportedOnForum1()
160 DoGet("smart2/CalculateUtilizationByDay.rails", "tp1.Hour=1", "tp1.Minute=2", "tp1.Second=3", "tp2.Hour=10", "tp2.Minute=20", "tp2.Second=30");
161 String expected
= " 1:2:3 10:20:30 ";
163 AssertReplyEqualTo(expected
);