/** * Copyright 2010 JBoss Inc * * Licensed 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.drools.guvnor.server.selector; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.drools.guvnor.server.ServiceImplementation; import org.drools.guvnor.server.util.TestEnvironmentSessionHelper; import org.drools.repository.AssetItem; import org.drools.repository.CategoryItem; import org.drools.repository.RulesRepository; import org.junit.Test; public class BuiltInSelectorTest { @Test public void testBuiltInSelector() throws Exception { ServiceImplementation impl = getService(); impl.repository.loadDefaultPackage(); impl.repository.createPackage("testBuiltInSelectorPackage", "woot"); impl.repository.createState("Dev"); impl.repository.createState("QA"); CategoryItem cat = impl.repository.loadCategory("/"); cat.addCategory("testBuiltInSelectorCat1", "yeah"); cat.addCategory("testBuiltInSelectorCat2", "yeah"); String uuid1 = impl.createNewRule("test AddRule1", "a description", "testBuiltInSelectorCat1", "testBuiltInSelectorPackage", "txt"); AssetItem item1 = impl.repository.loadAssetByUUID(uuid1); item1.updateState("Dev"); String uuid2 = impl.createNewRule("test AddRule2", "a description", "testBuiltInSelectorCat1", "testBuiltInSelectorPackage", "txt"); AssetItem item2 = impl.repository.loadAssetByUUID(uuid2); item2.updateState("QA"); String uuid3 = impl.createNewRule("test AddRule3", "a description", "testBuiltInSelectorCat2", "testBuiltInSelectorPackage", "txt"); AssetItem item3 = impl.repository.loadAssetByUUID(uuid3); item3.updateState("Dev"); String uuid4 = impl.createNewRule("test AddRule4", "a description", "testBuiltInSelectorCat2", "testBuiltInSelectorPackage", "txt"); AssetItem item4 = impl.repository.loadAssetByUUID(uuid4); item4.updateState("QA"); //Select asset using "category =" BuiltInSelector selector1 = (BuiltInSelector)SelectorManager.getInstance().getSelector( "BuiltInSelector" ); selector1.setCategory("testBuiltInSelectorCat1"); selector1.setCategoryOperator("="); selector1.setEnableCategorySelector(true); selector1.setStatus("Dev"); selector1.setStatusOperator("="); selector1.setEnableStatusSelector(false); assertTrue(selector1.isAssetAllowed(item1)); assertTrue(selector1.isAssetAllowed(item2)); assertFalse(selector1.isAssetAllowed(item3)); assertFalse(selector1.isAssetAllowed(item4)); //Select asset using "category !=" BuiltInSelector selector2 = (BuiltInSelector)SelectorManager.getInstance().getSelector( "BuiltInSelector" ); selector2.setCategory("testBuiltInSelectorCat1"); selector2.setCategoryOperator("!="); selector2.setEnableCategorySelector(true); selector2.setStatus("Dev"); selector2.setStatusOperator("="); selector2.setEnableStatusSelector(false); assertFalse(selector2.isAssetAllowed(item1)); assertFalse(selector2.isAssetAllowed(item2)); assertTrue(selector2.isAssetAllowed(item3)); assertTrue(selector2.isAssetAllowed(item4)); //Select asset using "status =" BuiltInSelector selector3 = (BuiltInSelector)SelectorManager.getInstance().getSelector( "BuiltInSelector" ); selector3.setCategory("testBuiltInSelectorCat1"); selector3.setCategoryOperator("!="); selector3.setEnableCategorySelector(false); selector3.setStatus("Dev"); selector3.setStatusOperator("="); selector3.setEnableStatusSelector(true); assertTrue(selector3.isAssetAllowed(item1)); assertFalse(selector3.isAssetAllowed(item2)); assertTrue(selector3.isAssetAllowed(item3)); assertFalse(selector3.isAssetAllowed(item4)); //Select asset using "status !=" BuiltInSelector selector4 = (BuiltInSelector)SelectorManager.getInstance().getSelector( "BuiltInSelector" ); selector4.setCategory("testBuiltInSelectorCat1"); selector4.setCategoryOperator("!="); selector4.setEnableCategorySelector(false); selector4.setStatus("Dev"); selector4.setStatusOperator("!="); selector4.setEnableStatusSelector(true); assertFalse(selector4.isAssetAllowed(item1)); assertTrue(selector4.isAssetAllowed(item2)); assertFalse(selector4.isAssetAllowed(item3)); assertTrue(selector4.isAssetAllowed(item4)); //Select asset using "status =" AND "category =" BuiltInSelector selector5 = (BuiltInSelector)SelectorManager.getInstance().getSelector( "BuiltInSelector" ); selector5.setCategory("testBuiltInSelectorCat1"); selector5.setCategoryOperator("="); selector5.setEnableCategorySelector(true); selector5.setStatus("Dev"); selector5.setStatusOperator("="); selector5.setEnableStatusSelector(true); assertTrue(selector5.isAssetAllowed(item1)); assertFalse(selector5.isAssetAllowed(item2)); assertFalse(selector5.isAssetAllowed(item3)); assertFalse(selector5.isAssetAllowed(item4)); //Select asset using "status =" AND "category !=" BuiltInSelector selector6 = (BuiltInSelector)SelectorManager.getInstance().getSelector( "BuiltInSelector" ); selector6.setCategory("testBuiltInSelectorCat1"); selector6.setCategoryOperator("!="); selector6.setEnableCategorySelector(true); selector6.setStatus("Dev"); selector6.setStatusOperator("="); selector6.setEnableStatusSelector(true); assertFalse(selector6.isAssetAllowed(item1)); assertFalse(selector6.isAssetAllowed(item2)); assertTrue(selector6.isAssetAllowed(item3)); assertFalse(selector6.isAssetAllowed(item4)); //Allow everything if both selectors are disabled BuiltInSelector selector7 = (BuiltInSelector)SelectorManager.getInstance().getSelector( "BuiltInSelector" ); selector7.setCategory("testBuiltInSelectorCat1"); selector7.setCategoryOperator("!="); selector7.setEnableCategorySelector(false); selector7.setStatus("Dev"); selector7.setStatusOperator("="); selector7.setEnableStatusSelector(false); assertTrue(selector6.isAssetAllowed(item1)); assertTrue(selector6.isAssetAllowed(item2)); assertTrue(selector6.isAssetAllowed(item3)); assertTrue(selector6.isAssetAllowed(item4)); } private ServiceImplementation getService() throws Exception { ServiceImplementation impl = new ServiceImplementation(); impl.repository = new RulesRepository(TestEnvironmentSessionHelper .getSession()); return impl; } }