@Test public void testGetLastModifiedOnCheckin() throws Exception { AssetItem ruleItem1 = getDefaultPackage().addAsset("testGetLastModified", "test content"); Calendar cal = Calendar.getInstance(); long before = cal.getTimeInMillis(); Thread.sleep( 100 ); ruleItem1.updateContent("new lhs"); ruleItem1.checkin( "woot" ); Calendar cal2 = ruleItem1.getLastModified(); long lastMod = cal2.getTimeInMillis(); cal = Calendar.getInstance(); long after = cal.getTimeInMillis(); assertTrue(before < lastMod); assertTrue(lastMod < after); }
@Test public void testGetDateEffective() { AssetItem ruleItem1 = getDefaultPackage().addAsset("testGetDateEffective", "test content"); //it should be initialized to null assertTrue(ruleItem1.getDateEffective() == null); //now try setting it, then retrieving it Calendar cal = Calendar.getInstance(); ruleItem1.updateDateEffective(cal); Calendar cal2 = ruleItem1.getDateEffective(); //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()); }
@Test public void testToString() { AssetItem ruleItem1 = getDefaultPackage().addAsset("testToString", "test content"); assertNotNull(ruleItem1.toString()); }
@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 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 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 testAssetItemCreation() throws Exception { Calendar now = Calendar.getInstance(); Thread.sleep(500); //MN: need this sleep to get the correct date AssetItem ruleItem1 = getDefaultPackage().addAsset("testRuleItem", "test content"); assertNotNull(ruleItem1); assertNotNull(ruleItem1.getNode()); assertEquals("testRuleItem", ruleItem1.getName()); assertNotNull(ruleItem1.getCreatedDate()); assertTrue(now.before( ruleItem1.getCreatedDate() )); String packName = getDefaultPackage().getName(); assertEquals(packName, ruleItem1.getModuleName()); assertNotNull(ruleItem1.getUUID()); //try constructing with node of wrong type try { ModuleItem pitem = getRepo().loadDefaultModule(); new AssetItem(getRepo(), pitem.getNode()); fail("Exception not thrown for node of wrong type"); } catch(RulesRepositoryException e) { assertNotNull(e.getMessage()); } catch(Exception e) { fail("Caught unexpected exception: " + e); } }
@Test public void testCategories() { AssetItem ruleItem1 = getDefaultPackage().addAsset("testAddTag", "test content");
@Test public void testUpdateContent() throws Exception { AssetItem ruleItem1 = getDefaultPackage().addAsset("testUpdateContent", "test description"); assertFalse(ruleItem1.getCreator().equals( "" )); ruleItem1.updateContent( "test content" ); ruleItem1.checkin( "yeah" ); assertFalse(ruleItem1.getLastContributor().equals( "" )); ruleItem1.updateContent( "new rule content"); assertEquals("new rule content", ruleItem1.getContent()); assertTrue(ruleItem1.getNode().getSession().hasPendingChanges()); ruleItem1.checkin( "yeah !" ); assertFalse(ruleItem1.getNode().getSession().hasPendingChanges()); assertEquals("yeah !", ruleItem1.getCheckinComment()); AssetItem prev = (AssetItem) ruleItem1.getPrecedingVersion(); assertEquals("test content", prev.getContent()); assertFalse("yeah !".equals(prev.getCheckinComment())); assertEquals(prev, ruleItem1.getPrecedingVersion()); ruleItem1 = getDefaultPackage().loadAsset( "testUpdateContent" ); VersionIterator it = VersionableItem.getVersionManager(ruleItem1.getNode()).getVersionHistory(ruleItem1.getNode().getPath()).getAllVersions(); // and this shows using a version iterator. // perhaps migrate to using this rather then next/prev methods. //this way, we can skip. assertTrue(it.hasNext()); while (it.hasNext()) { Version n = it.nextVersion(); AssetItem item = new AssetItem(ruleItem1.getRulesRepository(), n); assertNotNull(item); } }
@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()); }