/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.gwc.web.layer;
import static org.junit.Assert.*;
import static org.mockito.Matchers.same;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.geoserver.catalog.FeatureTypeInfo;
import org.geoserver.catalog.LayerInfo;
import org.geoserver.catalog.MetadataMap;
import org.geoserver.catalog.ResourceInfo;
import org.geoserver.gwc.GWC;
import org.geoserver.gwc.config.GWCConfig;
import org.geoserver.gwc.layer.GeoServerTileLayer;
import org.geoserver.gwc.layer.GeoServerTileLayerInfo;
import org.geoserver.gwc.layer.GeoServerTileLayerInfoImpl;
import org.geoserver.gwc.layer.TileLayerInfoUtil;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class LayerEditCacheOptionsTabPanelInfoTest {
LayerEditCacheOptionsTabPanelInfo panelInfo;
GWCConfig defaults;
GWC gwc;
IModel<? extends ResourceInfo> resourceModel;
LayerInfo layer;
IModel<LayerInfo> layerModel;
@Before
public void setUpInternal() throws Exception {
panelInfo = new LayerEditCacheOptionsTabPanelInfo();
gwc = mock(GWC.class);
GWC.set(gwc);
defaults = GWCConfig.getOldDefaults();
when(gwc.getConfig()).thenReturn(defaults);
FeatureTypeInfo resource = mock(FeatureTypeInfo.class);
when(resource.getPrefixedName()).thenReturn("topp:states");
layer = mock(LayerInfo.class);
when(layer.getResource()).thenReturn(resource);
MetadataMap mdm = new MetadataMap();
when(layer.getMetadata()).thenReturn(mdm);
resourceModel = new Model<ResourceInfo>(resource);
layerModel = new Model<LayerInfo>(layer);
}
@After
public void tearDown() {
GWC.set(null);
}
@Test
public void testCreateOwnModelNew() {
final boolean isNew = true;
IModel<GeoServerTileLayerInfo> ownModel;
ownModel = panelInfo.createOwnModel(resourceModel, layerModel, isNew);
assertNotNull(ownModel);
GeoServerTileLayerInfoImpl expected = TileLayerInfoUtil.loadOrCreate(layer, defaults);
assertEquals(expected, ownModel.getObject());
}
@Test
public void testCreateOwnModelExisting() {
final boolean isNew = false;
IModel<GeoServerTileLayerInfo> ownModel;
ownModel = panelInfo.createOwnModel(resourceModel, layerModel, isNew);
assertNotNull(ownModel);
GeoServerTileLayerInfo expected = TileLayerInfoUtil.loadOrCreate(layer, defaults);
assertEquals(expected, ownModel.getObject());
GeoServerTileLayer tileLayer = mock(GeoServerTileLayer.class);
expected = new GeoServerTileLayerInfoImpl();
expected.setEnabled(true);
when(tileLayer.getInfo()).thenReturn(expected);
when(gwc.getTileLayer(same(layer))).thenReturn(tileLayer);
ownModel = panelInfo.createOwnModel(resourceModel, layerModel, isNew);
assertEquals(expected, ownModel.getObject());
}
}