/* (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.layer; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertNull; import static org.geoserver.gwc.GWC.tileLayerName; import static org.geoserver.gwc.GWCTestHelpers.mockGroup; import static org.geoserver.gwc.GWCTestHelpers.mockLayer; import org.geoserver.catalog.PublishedType; import org.geoserver.catalog.impl.LayerGroupInfoImpl; import org.geoserver.catalog.impl.LayerInfoImpl; import org.geoserver.gwc.GWC; import org.geoserver.gwc.config.GWCConfig; import org.junit.Before; import org.junit.Test; import com.google.common.collect.ImmutableSet; public class LegacyTileLayerInfoLoaderTest { private GWCConfig defaults; private GeoServerTileLayerInfo defaultVectorInfo; @Before public void setup() { defaults = GWCConfig.getOldDefaults(); defaultVectorInfo = TileLayerInfoUtil.create(defaults); defaultVectorInfo.getMimeFormats().clear(); defaultVectorInfo.getMimeFormats().addAll(defaults.getDefaultVectorCacheFormats()); } @Test public void testLoadLayerInfo() { LayerInfoImpl layer = mockLayer("testLayer", new String[]{}, PublishedType.RASTER); assertNull(LegacyTileLayerInfoLoader.load(layer)); TileLayerInfoUtil.checkAutomaticStyles(layer, defaultVectorInfo); LegacyTileLayerInfoLoader.save(defaultVectorInfo, layer.getMetadata()); GeoServerTileLayerInfo info2 = LegacyTileLayerInfoLoader.load(layer); defaultVectorInfo.setId(layer.getId()); defaultVectorInfo.setName(tileLayerName(layer)); assertEquals(defaultVectorInfo, info2); } @Test public void testLoadLayerInfoExtraStyles() { GeoServerTileLayerInfo info = defaultVectorInfo; info.setAutoCacheStyles(false); TileLayerInfoUtil.setCachedStyles(info, "default", ImmutableSet.of("style1")); LayerInfoImpl layer = mockLayer("testLayer", new String[]{"style1", "style2"}, PublishedType.RASTER); TileLayerInfoUtil.checkAutomaticStyles(layer, info); assertNull(LegacyTileLayerInfoLoader.load(layer)); LegacyTileLayerInfoLoader.save(info, layer.getMetadata()); GeoServerTileLayerInfo actual; actual = LegacyTileLayerInfoLoader.load(layer); info.setId(layer.getId()); info.setName(tileLayerName(layer)); assertEquals(info, actual); layer.setDefaultStyle(null); TileLayerInfoUtil.setCachedStyles(info, null, ImmutableSet.of("style1")); LegacyTileLayerInfoLoader.save(info, layer.getMetadata()); actual = LegacyTileLayerInfoLoader.load(layer); assertEquals(ImmutableSet.of("style1"), actual.cachedStyles()); } @Test public void testLoadLayerInfoAutoCacheStyles() { GeoServerTileLayerInfo info = defaultVectorInfo; info.setAutoCacheStyles(true); LayerInfoImpl layer = mockLayer("testLayer", new String[]{"style1", "style2"}, PublishedType.RASTER); assertNull(LegacyTileLayerInfoLoader.load(layer)); TileLayerInfoUtil.checkAutomaticStyles(layer, defaultVectorInfo); LegacyTileLayerInfoLoader.save(info, layer.getMetadata()); GeoServerTileLayerInfo actual; actual = LegacyTileLayerInfoLoader.load(layer); TileLayerInfoUtil.setCachedStyles(info, "default", ImmutableSet.of("style1", "style2")); info.setId(layer.getId()); info.setName(tileLayerName(layer)); assertEquals(info, actual); layer.setDefaultStyle(null); TileLayerInfoUtil.setCachedStyles(info, null, ImmutableSet.of("style1", "style2")); actual = LegacyTileLayerInfoLoader.load(layer); assertEquals(ImmutableSet.of("style1", "style2"), actual.cachedStyles()); } @Test public void testLoadLayerGroup() { LayerGroupInfoImpl lg = mockGroup("tesGroup", mockLayer("L1", new String[]{}, PublishedType.RASTER), mockLayer("L2", new String[]{}, PublishedType.RASTER)); assertNull(LegacyTileLayerInfoLoader.load(lg)); GeoServerTileLayerInfo info = defaultVectorInfo; info.getMimeFormats().clear(); info.getMimeFormats().addAll(defaults.getDefaultOtherCacheFormats()); LegacyTileLayerInfoLoader.save(info, lg.getMetadata()); GeoServerTileLayerInfo actual; actual = LegacyTileLayerInfoLoader.load(lg); info.setId(lg.getId()); info.setName(GWC.tileLayerName(lg)); assertEquals(info, actual); } @Test public void testClear() { LayerGroupInfoImpl lg = mockGroup("tesGroup", mockLayer("L1", new String[]{}, PublishedType.RASTER), mockLayer("L2", new String[]{}, PublishedType.RASTER)); assertNull(LegacyTileLayerInfoLoader.load(lg)); GeoServerTileLayerInfo info = defaultVectorInfo; info.getMimeFormats().clear(); info.getMimeFormats().addAll(defaults.getDefaultOtherCacheFormats()); LegacyTileLayerInfoLoader.save(info, lg.getMetadata()); GeoServerTileLayerInfo actual; actual = LegacyTileLayerInfoLoader.load(lg); assertNotNull(actual); LegacyTileLayerInfoLoader.clear(lg.getMetadata()); assertNull(LegacyTileLayerInfoLoader.load(lg)); } }