/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.wicket.resource.loader;
import org.apache.wicket.Component;
import org.apache.wicket.Page;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.repeater.RepeatingView;
import org.apache.wicket.model.StringResourceModel;
import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.util.tester.WicketTester;
import org.junit.Assert;
import org.junit.Test;
/**
* test hierarchic lookup of properties from component property files
*
* @author Peter Ertl
*
*/
public class PropertiesResolverTest extends Assert
{
/**
*
*/
@Test
public void resolveProperties()
{
WicketTester tester = new WicketTester(new App());
// all the tests are performed in page
tester.startPage(MyPage.class);
tester.assertRenderedPage(MyPage.class);
}
/**
*/
public static class App extends WebApplication
{
@Override
public Class<? extends Page> getHomePage()
{
return MyPage.class;
}
}
/**
*/
public static class MyPage extends WebPage
{
private static final long serialVersionUID = 1L;
/**
* Construct.
*/
public MyPage()
{
MyRepeatingView repeater = new MyRepeatingView("repeater");
add(repeater);
MyContainer container1 = new MyContainer(repeater.newChildId());
repeater.add(container1);
MyLabel label1 = new MyLabel("label");
container1.add(label1);
MyContainer container2 = new MyContainer(repeater.newChildId());
repeater.add(container2);
MyLabel label2 = new MyLabel("label");
container2.add(label2);
// test lookup on label properties
assertEquals("label-1", lookup("keyLabel", label1));
assertEquals("label-1", lookup("keyLabel", label2));
// test lookup on container properties
assertEquals("container-1", lookup("label.keyContainer", container1));
assertEquals("container-2", lookup("keyContainer", container1));
assertEquals("container-1", lookup("keyContainer", label1));
assertEquals("container-1", lookup("label.keyContainer", container2));
assertEquals("container-2", lookup("keyContainer", container2));
assertEquals("container-1", lookup("keyContainer", label2));
// test lookup on repeater properties
assertEquals("repeater-1", lookup("label.keyRepeater", repeater));
assertEquals("repeater-2", lookup("keyRepeater", repeater));
assertEquals("repeater-1", lookup("label.keyRepeater", container1));
assertEquals("repeater-2", lookup("keyRepeater", container1));
assertEquals("repeater-1", lookup("keyRepeater", label1));
assertEquals("repeater-1", lookup("label.keyRepeater", container2));
assertEquals("repeater-2", lookup("keyRepeater", container2));
assertEquals("repeater-1", lookup("keyRepeater", label2));
// test lookup on page properties
assertEquals("page-1", lookup("repeater.label.keyPage", MyPage.this));
assertEquals("page-2", lookup("label.keyPage", MyPage.this));
assertEquals("page-3", lookup("keyPage", MyPage.this));
assertEquals("page-1", lookup("label.keyPage", repeater));
assertEquals("page-1", lookup("label.keyPage", container1));
assertEquals("page-1", lookup("keyPage", label1));
assertEquals("page-1", lookup("label.keyPage", container2));
assertEquals("page-1", lookup("keyPage", label2));
}
private String lookup(String key, Component anchor)
{
return new StringResourceModel(key, anchor).getString();
}
}
public static class MyRepeatingView extends RepeatingView
{
public MyRepeatingView(String id)
{
super(id);
}
}
public static class MyContainer extends WebMarkupContainer
{
public MyContainer(String id)
{
super(id);
}
}
public static class MyLabel extends Label
{
public MyLabel(String id)
{
super(id);
}
}
}