001    // Copyright Jul 30, 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 java.util.ArrayList;
017    import java.util.List;
018    
019    import org.apache.tapestry.BaseComponentTestCase;
020    import org.testng.annotations.Test;
021    
022    
023    /**
024     * Tests functionality of {@link DefaultAutocompleteModel}.
025     * 
026     * @author jkuhnert
027     */
028    @Test
029    public class DefaultAutocompleteModelTest extends BaseComponentTestCase
030    {
031    
032        public void test_Basic_Model()
033        {
034            List values = new ArrayList();
035            
036            SimpleBean s1 = new SimpleBean(new Integer(1), "Simple 1", 100);
037            SimpleBean s2 = new SimpleBean(new Integer(2), "Simple 2", 200);
038            SimpleBean s3 = new SimpleBean(new Integer(3), "Simple 3", 300);
039            
040            values.add(s1);
041            values.add(s2);
042            values.add(s3);
043            
044            IAutocompleteModel model = new DefaultAutocompleteModel(values, "id", "label");
045            
046            // basic checks
047            assert s2.getLabel().equals(model.getLabelFor(s2));
048            assert model.getPrimaryKey(s3).equals(3);
049            assert model.getValue(1) == s1;
050        }
051        
052        public void test_Filtering_Match()
053        {
054            List values = new ArrayList();
055            
056            SimpleBean s1 = new SimpleBean(new Integer(1), "Simple 1", 100);
057            SimpleBean s2 = new SimpleBean(new Integer(2), "Simple 2", 200);
058            SimpleBean s3 = new SimpleBean(new Integer(3), "Simple 3", 300);
059            
060            values.add(s1);
061            values.add(s2);
062            values.add(s3);
063            
064            IAutocompleteModel model = new DefaultAutocompleteModel(values, "id", "label");
065            
066            List results = model.getValues("sim");
067            
068            assert results != null;
069            assert results.size() == 3;
070            
071            assert results.contains(s2);
072            
073            results = model.getValues("simple 1");
074            
075            assert results.size() == 1;
076            assert results.get(0) == s1;
077        }
078        
079        public void test_Filtering_Null()
080        {
081            List values = new ArrayList();
082            
083            SimpleBean s1 = new SimpleBean(new Integer(1), "Simple 1", 100);
084            SimpleBean s2 = new SimpleBean(new Integer(2), "Simple 2", 200);
085            SimpleBean s3 = new SimpleBean(new Integer(3), "Simple 3", 300);
086            
087            values.add(s1);
088            values.add(s2);
089            values.add(s3);
090            
091            IAutocompleteModel model = new DefaultAutocompleteModel(values, "id", "label");
092            
093            List results = model.getValues(null);
094            
095            assert results != null;
096            assert results.size() == 0;
097        }
098    }