/* (c) 2014 - 2015 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 java.io.File; import org.apache.commons.io.FileUtils; import org.geoserver.catalog.impl.ModificationProxy; import org.geoserver.platform.GeoServerResourceLoader; import org.geowebcache.config.ContextualConfigurationProvider.Context; import org.geowebcache.config.XMLConfiguration; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.springframework.web.context.WebApplicationContext; import com.google.common.collect.ImmutableSet; import com.thoughtworks.xstream.XStream; public class DefaultTileLayerCatalogTest { private File baseDirectory; private DefaultTileLayerCatalog catalog; @Before public void setUp() throws Exception { baseDirectory = new File("target", "mockTileLayerCatalog"); FileUtils.deleteDirectory(baseDirectory); baseDirectory.mkdirs(); GeoServerResourceLoader resourceLoader = new GeoServerResourceLoader(baseDirectory); XStream xStream = XMLConfiguration.getConfiguredXStreamWithContext(new XStream(), (WebApplicationContext) null, Context.PERSIST); catalog = new DefaultTileLayerCatalog(resourceLoader, xStream); } @After public void tearDown() throws Exception { FileUtils.deleteDirectory(baseDirectory); } @Test public void testGetLayerById() { GeoServerTileLayerInfo info = new GeoServerTileLayerInfoImpl(); info.setId("id1"); info.setName("name1"); catalog.save(info); GeoServerTileLayerInfo actual = catalog.getLayerById("id1"); actual = ModificationProxy.unwrap(actual); assertEquals(info, actual); } @Test public void testGetLayerByName() { GeoServerTileLayerInfo info = new GeoServerTileLayerInfoImpl(); info.setId("id1"); info.setName("name1"); catalog.save(info); GeoServerTileLayerInfo actual = catalog.getLayerByName("name1"); actual = ModificationProxy.unwrap(actual); assertEquals(info, actual); } @Test public void testDelete() { GeoServerTileLayerInfo info = new GeoServerTileLayerInfoImpl(); info.setId("id1"); info.setName("name1"); catalog.save(info); GeoServerTileLayerInfo actual = catalog.getLayerByName("name1"); actual = ModificationProxy.unwrap(actual); assertEquals(info, actual); GeoServerTileLayerInfo deleted = catalog.delete("id1"); assertEquals(info, ModificationProxy.unwrap(deleted)); assertNull(catalog.getLayerById("id1")); } @Test public void testSave() { final GeoServerTileLayerInfo original; { final GeoServerTileLayerInfo info = new GeoServerTileLayerInfoImpl(); info.setId("id1"); info.setName("name1"); info.getMimeFormats().add("image/png"); info.getMimeFormats().add("image/jpeg"); assertNull(catalog.save(info)); original = catalog.getLayerById("id1"); assertEquals(info.getMimeFormats(), original.getMimeFormats()); } original.getMimeFormats().clear(); original.getMimeFormats().add("image/gif"); original.setName("name2"); final GeoServerTileLayerInfo oldValue = catalog.save(original); assertNotNull(oldValue); assertEquals(ImmutableSet.of("image/png", "image/jpeg"), oldValue.getMimeFormats()); assertEquals("name1", oldValue.getName()); assertNull(catalog.getLayerByName("name1")); assertNotNull(catalog.getLayerByName("name2")); GeoServerTileLayerInfo modified = catalog.getLayerById("id1"); assertEquals(ImmutableSet.of("image/gif"), modified.getMimeFormats()); } }