001    // Copyright Oct 7, 2006 The Apache Software Foundation
002    //
003    // Licensed under the Apache License, Version 2.0 (the "License");
004    // you may not use this file except in compliance with the License.
005    // You may obtain a copy of the License at
006    //
007    //     http://www.apache.org/licenses/LICENSE-2.0
008    //
009    // Unless required by applicable law or agreed to in writing, software
010    // distributed under the License is distributed on an "AS IS" BASIS,
011    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012    // See the License for the specific language governing permissions and
013    // limitations under the License.
014    package org.apache.tapestry.dojo.form;
015    
016    import org.apache.tapestry.*;
017    import org.apache.tapestry.form.BaseFormComponentTestCase;
018    import org.apache.tapestry.form.MockDelegate;
019    import org.apache.tapestry.form.ValidatableFieldSupport;
020    import org.apache.tapestry.form.translator.DateTranslator;
021    import org.apache.tapestry.json.JSONObject;
022    import org.apache.tapestry.services.ResponseBuilder;
023    import static org.easymock.EasyMock.*;
024    import org.testng.annotations.Test;
025    
026    import java.util.Date;
027    import java.util.Locale;
028    import java.util.Map;
029    
030    
031    /**
032     * Tests functionality of {@link DropdownTimePicker} component.
033     *
034     * @author jkuhnert
035     */
036    @Test
037    public class TestDropdownTimePicker extends BaseFormComponentTestCase
038    {
039    
040        public void test_Render()
041        {
042            ValidatableFieldSupport vfs = newMock(ValidatableFieldSupport.class);
043            DateTranslator translator = new DateTranslator();
044            translator.setPattern("hh:mm a");
045            ResponseBuilder resp = newMock(ResponseBuilder.class);
046    
047            IRequestCycle cycle = newMock(IRequestCycle.class);
048            IForm form = newMock(IForm.class);
049            checkOrder(form, false);
050            IPage page = newPage();
051            Locale locale = Locale.getDefault();
052    
053            MockDelegate delegate = new MockDelegate();
054    
055            IScript script = newMock(IScript.class);
056    
057            Date dtValue = new Date();
058    
059            DropdownTimePicker component = newInstance(DropdownTimePicker.class,
060                                                       "name", "fred",
061                                                       "script", script,
062                                                       "validatableFieldSupport", vfs,
063                                                       "translator", translator,
064                                                       "value", dtValue,
065                                                       "page", page,
066                                                       "templateTagName", "div");
067    
068            expect(cycle.renderStackPush(component)).andReturn(component);
069            expect(form.getName()).andReturn("testform").anyTimes();
070    
071            form.setFormFieldUpdating(true);
072    
073            IMarkupWriter writer = newBufferWriter();
074    
075            trainGetForm(cycle, form);
076            trainWasPrerendered(form, writer, component, false);
077    
078            trainGetDelegate(form, delegate);
079    
080            delegate.setFormComponent(component);
081    
082            trainGetElementId(form, component, "fred");
083            trainIsRewinding(form, false);
084            expect(cycle.isRewinding()).andReturn(false).anyTimes();
085    
086            delegate.setFormComponent(component);
087    
088            expect(cycle.getResponseBuilder()).andReturn(resp).anyTimes();
089            expect(resp.isDynamic()).andReturn(false).anyTimes();
090    
091            vfs.renderContributions(component, writer, cycle);
092    
093            expect(page.getLocale()).andReturn(locale).anyTimes();
094    
095            PageRenderSupport prs = newPageRenderSupport();
096            trainGetPageRenderSupport(cycle, prs);
097    
098            script.execute(eq(component), eq(cycle), eq(prs), isA(Map.class));
099    
100            expect(cycle.renderStackPop()).andReturn(component);
101    
102            replay();
103    
104            component.render(writer, cycle);
105    
106            verify();
107    
108            assertBuffer("<span class=\"prefix\"><div id=\"fred\" class=\"validation-delegate\"> </div></span>");
109        }
110    
111        public void test_Json_Time()
112        {
113            long time = System.currentTimeMillis();
114    
115            JSONObject json = new JSONObject();
116            json.put("time", time);
117    
118            assertEquals(json.toString(), "{\"time\":"+time+"}");
119        }
120    }