@Test public void testUpdateCategories() { getRepo().loadCategory( "/" ).addCategory( "testUpdateCategoriesOnAsset", "la" ); getRepo().loadCategory( "/" ).addCategory( "testUpdateCategoriesOnAsset2", "la" ); AssetItem item = getRepo().loadDefaultModule().addAsset( "testUpdateCategoriesOnAsset", "huhuhu" ); String[] cats = new String[] {"testUpdateCategoriesOnAsset", "testUpdateCategoriesOnAsset2"}; item.updateCategoryList( cats ); item.checkin( "aaa" ); item = getRepo().loadDefaultModule().loadAsset( "testUpdateCategoriesOnAsset" ); assertEquals(2, item.getCategories().size()); for ( Iterator iter = item.getCategories().iterator(); iter.hasNext(); ) { CategoryItem cat = (CategoryItem) iter.next(); assertTrue(cat.getName().startsWith( "testUpdateCategoriesOnAsset" )); } }
@Test public void testHistoryIterator() throws Exception { AssetItem ruleItem1 = getRepo().loadDefaultModule().addAsset("testHistoryIterator", "test description"); ruleItem1.checkin( "version0" ); ruleItem1 = getRepo().loadAssetByUUID( ruleItem1.getUUID() ); ruleItem1.updateContent( "wo" ); ruleItem1.checkin( "version1" ); ruleItem1 = getRepo().loadAssetByUUID( ruleItem1.getUUID() ); ruleItem1.updateContent( "ya" ); ruleItem1.checkin( "version2" ); Iterator it = ruleItem1.getHistory(); for ( int i = 0; i < 2; i++ ) { assertTrue(it.hasNext()); it.next(); } }
@Test public void testGetTitle() { AssetItem ruleItem1 = getRepo().loadDefaultModule().addAsset("testGetTitle", "test content"); assertEquals("testGetTitle", ruleItem1.getTitle()); }
@Test public void testGetTags() { AssetItem ruleItem1 = getDefaultPackage().addAsset("testGetTags", "test content"); List tags = ruleItem1.getCategories(); assertNotNull(tags); assertEquals(0, tags.size()); getRepo().loadCategory( "/" ).addCategory( "testGetTagsTestTag", "description" ); ruleItem1.addCategory("testGetTagsTestTag"); tags = ruleItem1.getCategories(); assertEquals(1, tags.size()); assertEquals("testGetTagsTestTag", ((CategoryItem)tags.get(0)).getName()); }
@Test public void testFindRulesByCategory() throws Exception { getRepo().loadCategory( "/" ).addCategory( "testFindRulesByCat", "yeah" ); AssetItem as1 = getDefaultPackage().addAsset( "testFindRulesByCategory1", "ya", "testFindRulesByCat", "drl" ); getDefaultPackage().addAsset( "testFindRulesByCategory2", "ya", "testFindRulesByCat", AssetItem.DEFAULT_CONTENT_FORMAT ).checkin( "version0" ); as1.checkin( "version0" ); assertEquals("drl", as1.getFormat()); List rules = getRepo().findAssetsByCategory( "testFindRulesByCat", 0, -1 ).assets; assertEquals(2, rules.size()); for ( Iterator iter = rules.iterator(); iter.hasNext(); ) { AssetItem element = (AssetItem) iter.next(); assertTrue(element.getName().startsWith( "testFindRulesByCategory" )); } try { getRepo().loadCategory( "testFindRulesByCat" ).remove(); fail("should not be able to remove"); } catch (RulesRepositoryException e) { //assertTrue(e.getCause() instanceof ReferentialIntegrityException); assertNotNull(e.getMessage()); } }
@Test public void testGetDateExpired() { try { AssetItem ruleItem1 = getRepo().loadDefaultModule().addAsset("testGetDateExpired", "test content"); //it should be initialized to null assertTrue(ruleItem1.getDateExpired() == null); //now try setting it, then retrieving it Calendar cal = Calendar.getInstance(); ruleItem1.updateDateExpired(cal); Calendar cal2 = ruleItem1.getDateExpired(); //Comparing two Calendar instances entirely doesn't work as JackRabbit persists Calendar objects as Strings using //http://svn.apache.org/repos/asf/jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/util/ISO8601.java //Not all Calendar properties are taken into consideration so we only check the getTime() values. assertEquals( cal.getTimeInMillis(), cal2.getTimeInMillis() ); } catch(Exception e) { fail("Caught unexpected exception: " + e); } }
@Test public void testRemoveTag() { AssetItem ruleItem1 = getDefaultPackage().addAsset("testRemoveTag", "test content"); getRepo().loadCategory( "/" ).addCategory( "TestRemoveCategory", "description" ); ruleItem1.addCategory("TestRemoveCategory"); List tags = ruleItem1.getCategories(); assertEquals(1, tags.size()); ruleItem1.removeCategory("TestRemoveCategory"); tags = ruleItem1.getCategories(); assertEquals(0, tags.size()); getRepo().loadCategory( "/" ).addCategory( "TestRemoveCategory2", "description" ); getRepo().loadCategory( "/" ).addCategory( "TestRemoveCategory3", "description" ); ruleItem1.addCategory("TestRemoveCategory2"); ruleItem1.addCategory("TestRemoveCategory3"); ruleItem1.removeCategory("TestRemoveCategory2"); tags = ruleItem1.getCategories(); assertEquals(1, tags.size()); assertEquals("TestRemoveCategory3", ((CategoryItem)tags.get(0)).getName()); }
@Test public void testGetAssetItemWithSpecifiedVersion() throws Exception { AssetItem ruleItem1 = getRepo().loadDefaultModule().addAsset("testGetAssetItemWithSpecifiedVersion", "test description"); ruleItem1.checkin( "version0" ); ruleItem1 = getRepo().loadAssetByUUID( ruleItem1.getUUID() ); ruleItem1.updateContent( "wo" ); ruleItem1.checkin( "version1" ); ruleItem1 = getRepo().loadAssetByUUID( ruleItem1.getUUID() ); ruleItem1.updateContent( "ya" ); ruleItem1.checkin( "version2" ); AssetItem assetItemVersion1 = getRepo().loadDefaultModule().loadAsset("testGetAssetItemWithSpecifiedVersion", 1); assertEquals("", assetItemVersion1.getContent()); assertEquals(1, assetItemVersion1.getVersionNumber()); AssetItem assetItemVersion2 = getRepo().loadDefaultModule().loadAsset("testGetAssetItemWithSpecifiedVersion", 2); assertEquals("wo", assetItemVersion2.getContent()); assertEquals(2, assetItemVersion2.getVersionNumber()); AssetItem assetItemVersion3 = getRepo().loadDefaultModule().loadAsset("testGetAssetItemWithSpecifiedVersion", 3); assertEquals("ya", assetItemVersion3.getContent()); assertEquals(3, assetItemVersion3.getVersionNumber()); }
@Test public void testSaveAndCheckinDescriptionAndTitle() throws Exception { AssetItem ruleItem1 = getRepo().loadDefaultModule().addAsset("testGetDescription", ""); ruleItem1.checkin( "version0" ); //it should be "" to begin with assertEquals("", ruleItem1.getDescription()); ruleItem1.updateDescription("test description"); assertEquals("test description", ruleItem1.getDescription()); assertTrue(getRepo().getSession().hasPendingChanges()); ruleItem1.updateTitle( "This is a title" ); assertTrue(getRepo().getSession().hasPendingChanges()); ruleItem1.checkin( "ya" ); //we can save without a checkin getRepo().getSession().save(); assertFalse(getRepo().getSession().hasPendingChanges()); try { ruleItem1.getPrecedingVersion().updateTitle( "baaad" ); fail("should not be able to do this"); } catch (RulesRepositoryException e) { assertNotNull(e.getMessage()); } }
@Test public void testGetContentLength() throws Exception { RulesRepository repo = getRepo(); ModuleItem pkg = repo.loadDefaultModule(); AssetItem asset = pkg.addAsset("testGetContentLength", ""); assertEquals(0, asset.getContentLength()); asset.updateContent("boo"); asset.checkin(""); assertEquals("boo".getBytes().length, asset.getContentLength() ); asset = pkg.addAsset("testGetContentLength2", ""); assertEquals(0, asset.getContentLength()); asset.updateBinaryContentAttachment(new ByteArrayInputStream("foobar".getBytes())); asset.checkin(""); assertEquals("foobar".getBytes().length, asset.getContentLength()); }
@Test public void testDublinCoreProperties() { ModuleItem pkg = getRepo().createModule( "testDublinCore", "wa" ); AssetItem ruleItem = pkg.addAsset( "testDublinCoreProperties", "yeah yeah yeah" ); ruleItem.updateCoverage( "b" ); assertEquals("b",ruleItem.getCoverage()); ruleItem.checkin( "woo" ); pkg = getRepo().loadModule( "testDublinCore" ); ruleItem = (AssetItem) pkg.getAssets().next(); assertEquals("b", ruleItem.getCoverage()); assertEquals("", ruleItem.getExternalRelation()); assertEquals("", ruleItem.getExternalSource()); }
@Test public void testAnonymousProperties() { AssetItem item = getRepo().loadDefaultModule().addAsset( "anonymousproperty", "lalalalala" ); item.updateUserProperty( "fooBar", "value"); assertEquals("value", item.getUserProperty("fooBar")); item.checkin( "lalalala" ); try { item.updateUserProperty( "drools:content", "whee" ); fail("should not be able to set built in properties this way."); } catch (IllegalArgumentException e) { assertNotNull(e.getMessage()); } }
@Test public void testGetFormat() throws Exception { AssetItem ruleItem1 = getRepo().loadDefaultModule().addAsset("testGetFormat", "test content"); ruleItem1.updateContent( "la" ); assertEquals(AssetItem.DEFAULT_CONTENT_FORMAT, ruleItem1.getFormat()); assertTrue(ruleItem1.getNode().hasProperty( AssetItem.CONTENT_PROPERTY_NAME )); assertFalse(ruleItem1.getNode().hasProperty( AssetItem.CONTENT_PROPERTY_BINARY_NAME )); ruleItem1.updateFormat( "blah" ); assertEquals("blah", ruleItem1.getFormat()); }
@Test public void testBinaryAsset() throws Exception { AssetItem item = getRepo().loadDefaultModule().addAsset( "testBinaryAsset", "yeah" ); String data = "abc 123"; ByteArrayInputStream in = new ByteArrayInputStream(data.getBytes()); item.updateBinaryContentAttachment( in ); item.updateBinaryContentAttachmentFileName( "x.x" ); in.close(); assertEquals(data, item.getContent()); assertFalse(item.getNode().hasProperty( AssetItem.CONTENT_PROPERTY_NAME )); assertTrue(item.getNode().hasProperty( AssetItem.CONTENT_PROPERTY_BINARY_NAME )); item.checkin( "lalalala" ); assertTrue(item.isBinary()); item = getRepo().loadDefaultModule().loadAsset( "testBinaryAsset" ); InputStream in2 = item.getBinaryContentAttachment(); assertNotNull(in2); byte[] data2 = item.getBinaryContentAsBytes(); assertEquals(data, new String(data2)); assertEquals("x.x", item.getBinaryContentAttachmentFileName()); assertTrue(item.isBinary()); item.updateContent("qed"); item.checkin(""); item = getRepo().loadAssetByUUID(item.getUUID()); assertEquals("qed", item.getContent()); }
@Test public void testUpdateStringProperty() throws Exception { RulesRepository repo = getRepo(); ModuleItem def = repo.loadDefaultModule(); AssetItem asset = repo.loadDefaultModule().addAsset("testUpdateStringProperty", "test content"); asset.updateContent("new content"); asset.checkin(""); Calendar lm = asset.getLastModified(); Thread.sleep(100); asset.updateStringProperty("Anything", "AField"); assertEquals("Anything", asset.getStringProperty("AField")); Calendar lm_ = asset.getLastModified(); assertTrue(lm_.getTimeInMillis() > lm.getTimeInMillis()); Thread.sleep(100); asset.updateStringProperty("More", "AField", false); assertEquals(lm_.getTimeInMillis(), asset.getLastModified().getTimeInMillis()); asset.updateContent("more content"); asset.checkin(""); asset = repo.loadAssetByUUID(asset.getUUID()); assertEquals("More", asset.getStringProperty("AField")); }
@Test public void testSetStateString() { AssetItem ruleItem1 = getDefaultPackage().addAsset("testSetStateString", "test content"); getRepo().createState( "TestState1" ); ruleItem1.updateState("TestState1"); assertNotNull(ruleItem1.getState()); assertEquals("TestState1", ruleItem1.getState().getName()); getRepo().createState( "TestState2" ); ruleItem1.updateState("TestState2"); assertNotNull(ruleItem1.getState()); assertEquals("TestState2", ruleItem1.getState().getName()); ruleItem1 = getDefaultPackage().addAsset("foobar", "test description"); StateItem stateItem1 = getRepo().getState("TestState1"); ruleItem1.updateState(stateItem1); assertNotNull(ruleItem1.getState()); assertEquals(ruleItem1.getState().getName(), "TestState1"); StateItem stateItem2 = getRepo().getState("TestState2"); ruleItem1.updateState(stateItem2); assertNotNull(ruleItem1.getState()); assertEquals("TestState2", ruleItem1.getState().getName()); }
@Test public void testStatusStuff() { AssetItem ruleItem1 = getDefaultPackage().addAsset("testGetState", "test content"); StateItem stateItem1 = ruleItem1.getState(); assertEquals(StateItem.DRAFT_STATE_NAME, stateItem1.getName()); getRepo().createState( "TestState1" ); ruleItem1.updateState("TestState1"); assertNotNull(ruleItem1.getState()); assertEquals("TestState1", ruleItem1.getState().getName()); ruleItem1 = getDefaultPackage().addAsset( "testGetState2", "wa" ); assertEquals(StateItem.DRAFT_STATE_NAME, ruleItem1.getStateDescription()); assertEquals(getRepo().getState( StateItem.DRAFT_STATE_NAME ), ruleItem1.getState()); }
@Test public void testGetPackageItem() throws Exception { RulesRepository repo = getRepo(); ModuleItem def = repo.loadDefaultModule(); AssetItem asset = repo.loadDefaultModule().addAsset("testPackageItem", "test content"); ModuleItem pkg = asset.getModule(); assertEquals(def.getName(), pkg.getName()); assertEquals(def.getUUID(), pkg.getUUID()); }
@Test public void testGetContent() { AssetItem ruleItem1 = getRepo().loadDefaultModule().addAsset("testGetContent", "test content"); ruleItem1.updateContent( "test content" ); ruleItem1.updateFormat("drl"); assertNotNull(ruleItem1); assertNotNull(ruleItem1.getNode()); assertEquals("test content", ruleItem1.getContent()); assertFalse(ruleItem1.isBinary()); assertNotNull(ruleItem1.getBinaryContentAsBytes()); assertNotNull(ruleItem1.getBinaryContentAttachment()); String content = new String(ruleItem1.getBinaryContentAsBytes()); assertNotNull(content); }
@Test public void testGetSucceedingVersion() { AssetItem ruleItem1 = getRepo().loadDefaultModule().addAsset("testGetSucceedingVersion", "test description"); ruleItem1.checkin( "version0" ); assertEquals(1, ruleItem1.getVersionNumber()); AssetItem succeedingRuleItem = (AssetItem) ruleItem1.getSucceedingVersion(); assertTrue(succeedingRuleItem == null); ruleItem1.updateContent("new content"); ruleItem1.checkin( "la" ); assertEquals(2, ruleItem1.getVersionNumber()); AssetItem predecessorRuleItem = (AssetItem) ruleItem1.getPrecedingVersion(); assertEquals("", predecessorRuleItem.getContent()); succeedingRuleItem = (AssetItem) predecessorRuleItem.getSucceedingVersion(); assertNotNull(succeedingRuleItem); assertEquals(ruleItem1.getContent(), succeedingRuleItem.getContent()); }