/* (c) 2015 Open Source Geospatial Foundation - all rights reserved
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.geofence.web;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import org.geoserver.geofence.services.dto.ShortRule;
import org.geoserver.web.GeoServerWicketTestSupport;
import org.junit.Test;
/**
*
* Geofence Rules Model Test
*
* @author Niels Charlier
*
*/
public class GeofenceRulesModelTest extends GeoServerWicketTestSupport {
@Test
public void testRulesModel() {
GeofenceRulesModel model = new GeofenceRulesModel();
ShortRule rule1 = model.newRule();
rule1.setUserName("pipo");
model.save(rule1);
ShortRule rule2 = model.newRule();
rule2.setUserName("jantje");
model.save(rule2);
ShortRule rule3 = model.newRule();
rule3.setUserName("oen");
model.save(rule3);
assertEquals(3, model.getItems().size());
assertEquals(rule1, model.getItems().get(2));
assertEquals(rule2, model.getItems().get(1));
assertEquals(rule3, model.getItems().get(0));
assertEquals(0, rule3.getPriority());
assertEquals(1, rule2.getPriority());
assertEquals(2, rule1.getPriority());
assertSynchronized(model);
assertFalse(model.canDown(rule1));
assertFalse(model.canUp(rule3));
assertTrue(model.canDown(rule2));
assertTrue(model.canUp(rule2));
model.moveDown(rule2);
model.moveUp(rule3);
assertEquals(rule3, model.getItems().get(0));
assertEquals(rule1, model.getItems().get(1));
assertEquals(rule2, model.getItems().get(2));
assertEquals(0, rule3.getPriority());
assertEquals(1, rule1.getPriority());
assertEquals(2, rule2.getPriority());
rule2.setService("WFS");
model.save(rule2);
model.remove(Arrays.asList(rule1, rule3));
assertEquals(1, model.getItems().size());
assertSynchronized(model);
}
public void assertSynchronized(GeofenceRulesModel model) {
GeofenceRulesModel freshModel = new GeofenceRulesModel(); //reload rules from db
assertEquals(model.getItems().toString(), freshModel.getItems().toString());
}
}