content: /**
   * Copyright 2014 55 Minutes (http://www.55minutes.com)
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *    http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package fiftyfive.wicket.list;
  
  import java.util.Arrays;
  import java.util.Collections;
  import java.util.List;
  
  import fiftyfive.wicket.BaseWicketTest;
  import org.apache.wicket.markup.html.list.ListItem;
  import org.junit.Test;
  import static fiftyfive.wicket.test.WicketTestUtils.*;
  import static fiftyfive.wicket.util.Shortcuts.*;
  
  public class ConditionalListViewTest extends BaseWicketTest
  {
      public static final String HTML =
          "<wicket:enclosure child=\"c\">" +
          "<ul><li wicket:id=\"c\"><span wicket:id=\"label\"></span></li></ul>" +
          "</wicket:enclosure>";
      
      @Test
      public void testRender_null() throws Exception
      {
          doRender(null);
          assertXPath(0, this.tester, "//ul");
      }
  
      @Test
      public void testRender_empty() throws Exception
      {
          doRender(Collections.EMPTY_LIST);
          assertXPath(0, this.tester, "//ul");
      }
  
      @Test
      public void testRender_some() throws Exception
      {
          doRender(Arrays.asList("a", "b", "c"));
          assertXPath(3, this.tester, "//li");
          assertXPath(this.tester, "//ul/li/span[text()='a']");
          assertXPath(this.tester, "//ul/li/span[text()='b']");
          assertXPath(this.tester, "//ul/li/span[text()='c']");
      }
      
      private void doRender(List<String> list) throws Exception
      {
          startComponentWithXHtml(this.tester, new TestListView("c", list), HTML);
      }
      
      private static class TestListView extends ConditionalListView<String>
      {
          TestListView(String id, List<String> list)
          {
              super(id, list);
          }
          
          @Override
          protected void populateItem(ListItem<String> item)
          {
              item.add(label("label", item.getModel()));
          }
      }
  }
  