blob: 78eaeb3945feaf2420454d6608363ad0aa27d3d0 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. The ASF licenses this file to You
* 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. For additional information regarding
* copyright in this work, please see the NOTICE file in the top level
* directory of this distribution.
*/
package org.apache.roller.weblogger.business;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.TestUtils;
import org.apache.roller.weblogger.pojos.WeblogEntryComment;
import org.apache.roller.weblogger.pojos.TagStat;
import org.apache.roller.weblogger.pojos.User;
import org.apache.roller.weblogger.pojos.WeblogCategory;
import org.apache.roller.weblogger.pojos.WeblogEntry;
import org.apache.roller.weblogger.pojos.WeblogEntry.PubStatus;
import org.apache.roller.weblogger.pojos.WeblogEntrySearchCriteria;
import org.apache.roller.weblogger.pojos.WeblogEntryTag;
import org.apache.roller.weblogger.pojos.Weblog;
/**
* Test WeblogEntry related business operations.
*/
public class WeblogEntryTest extends TestCase {
public static Log log = LogFactory.getLog(WeblogEntryTest.class);
User testUser = null;
Weblog testWeblog = null;
public WeblogEntryTest(String name) {
super(name);
}
public static Test suite() {
return new TestSuite(WeblogEntryTest.class);
}
/**
* All tests in this suite require a user and a weblog.
*/
public void setUp() throws Exception {
// setup weblogger
TestUtils.setupWeblogger();
assertEquals(0L,
WebloggerFactory.getWeblogger().getWeblogManager().getWeblogCount());
try {
testUser = TestUtils.setupUser("entryTestUser");
testWeblog = TestUtils.setupWeblog("entryTestWeblog", testUser);
TestUtils.endSession(true);
//WeblogManager wmgr = WebloggerFactory.getWeblogger().getWeblogManager();
//assertEquals(1, wmgr.getWeblogCount());
} catch (Exception ex) {
log.error("ERROR in test setup", ex);
throw new Exception("Test setup failed", ex);
}
}
public void tearDown() throws Exception {
try {
TestUtils.teardownWeblog(testWeblog.getId());
TestUtils.teardownUser(testUser.getUserName());
TestUtils.endSession(true);
} catch (Exception ex) {
log.error("ERROR in test teardown", ex);
throw new Exception("Test teardown failed", ex);
}
}
/**
* Test basic persistence operations ... Create, Update, Delete.
*/
public void testWeblogEntryCRUD() throws Exception {
WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
WeblogEntry entry;
WeblogEntry testEntry = new WeblogEntry();
testEntry.setTitle("entryTestEntry");
testEntry.setLink("testEntryLink");
testEntry.setText("blah blah entry");
testEntry.setAnchor("testEntryAnchor");
testEntry.setPubTime(new java.sql.Timestamp(new java.util.Date().getTime()));
testEntry.setUpdateTime(new java.sql.Timestamp(new java.util.Date().getTime()));
testEntry.setWebsite(testWeblog);
testEntry.setCreatorUserName(testUser.getUserName());
WeblogCategory cat = testWeblog.getWeblogCategory("General");
testEntry.setCategory(cat);
// create a weblog entry
mgr.saveWeblogEntry(testEntry);
String id = testEntry.getId();
TestUtils.endSession(true);
// make sure entry was created
entry = mgr.getWeblogEntry(id);
assertNotNull(entry);
assertEquals(testEntry, entry);
// update a weblog entry
entry.setTitle("testtest");
mgr.saveWeblogEntry(entry);
TestUtils.endSession(true);
// make sure entry was updated
entry = mgr.getWeblogEntry(id);
assertNotNull(entry);
assertEquals("testtest", entry.getTitle());
// delete a weblog entry
mgr.removeWeblogEntry(entry);
TestUtils.endSession(true);
// make sure entry was deleted
entry = mgr.getWeblogEntry(id);
assertNull(entry);
}
/**
* Test lookup mechanisms ...
*/
public void testWeblogEntryLookups() throws Exception {
WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
WeblogEntry entry;
List entries;
Map entryMap;
// setup some test entries to use
testWeblog = TestUtils.getManagedWebsite(testWeblog);
testUser = TestUtils.getManagedUser(testUser);
WeblogEntry entry1 = TestUtils.setupWeblogEntry("entry1", testWeblog, testUser);
WeblogEntry entry2 = TestUtils.setupWeblogEntry("entry2", testWeblog, testUser);
WeblogEntry entry3 = TestUtils.setupWeblogEntry("entry3", testWeblog, testUser);
WeblogEntry entry4 = TestUtils.setupWeblogEntry("entry4", testWeblog, testUser);
WeblogEntry entry5 = TestUtils.setupWeblogEntry("entry5", testWeblog, testUser);
// make a couple changes
entry1.setLocale("en_US");
entry1.setStatus(PubStatus.PUBLISHED);
entry1.setPinnedToMain(Boolean.TRUE);
mgr.saveWeblogEntry(entry1);
entry2.setLocale("ja_JP");
entry2.setStatus(PubStatus.PUBLISHED);
entry2.setUpdateTime(new java.sql.Timestamp(entry2.getUpdateTime().getTime()+8822384));
entry2.setPubTime(entry2.getUpdateTime());
mgr.saveWeblogEntry(entry2);
entry3.setStatus(PubStatus.DRAFT);
entry3.setUpdateTime(new java.sql.Timestamp(entry3.getUpdateTime().getTime()+348829384));
entry3.setPubTime(entry3.getUpdateTime());
mgr.saveWeblogEntry(entry3);
entry4.setPubTime(new java.sql.Timestamp(entry1.getPubTime().getTime() - 348829384));
entry5.setPubTime(new java.sql.Timestamp(entry1.getPubTime().getTime() - 8822384));
TestUtils.endSession(true);
testWeblog = TestUtils.getManagedWebsite(testWeblog);
testUser = TestUtils.getManagedUser(testUser);
log.debug("entry1 = "+entry1.getUpdateTime());
log.debug("entry2 = "+entry2.getUpdateTime());
log.debug("entry3 = "+entry3.getUpdateTime());
entry1 = TestUtils.getManagedWeblogEntry(entry1);
entry2 = TestUtils.getManagedWeblogEntry(entry2);
entry3 = TestUtils.getManagedWeblogEntry(entry3);
entry4 = TestUtils.getManagedWeblogEntry(entry4);
entry5 = TestUtils.getManagedWeblogEntry(entry5);
// get entry by id
entry = mgr.getWeblogEntry(entry1.getId());
assertNotNull(entry);
assertEquals(entry1.getAnchor(), entry.getAnchor());
// get entry by anchor
entry = mgr.getWeblogEntryByAnchor(testWeblog, entry1.getAnchor());
assertNotNull(entry);
assertEquals(entry1.getTitle(), entry.getTitle());
// get all entries for weblog
WeblogEntrySearchCriteria wesc = new WeblogEntrySearchCriteria();
wesc.setWeblog(testWeblog);
entries = mgr.getWeblogEntries(wesc);
assertNotNull(entries);
assertEquals(5, entries.size());
assertEquals(entry3, entries.get(0));
// get all (non-future) PUBLISHED entries in category
WeblogEntrySearchCriteria wesc9 = new WeblogEntrySearchCriteria();
wesc9.setWeblog(testWeblog);
wesc9.setCatName("General");
wesc9.setStatus(PubStatus.PUBLISHED);
entries = mgr.getWeblogEntries(wesc9);
assertNotNull(entries);
assertEquals(3, entries.size());
// get all (non-future) PUBLISHED entries only
WeblogEntrySearchCriteria wesc2 = new WeblogEntrySearchCriteria();
wesc2.setWeblog(testWeblog);
wesc2.setStatus(PubStatus.PUBLISHED);
entries = mgr.getWeblogEntries(wesc2);
assertNotNull(entries);
assertEquals(3, entries.size());
// get all entries in date range
WeblogEntrySearchCriteria wesc3 = new WeblogEntrySearchCriteria();
wesc3.setWeblog(testWeblog);
wesc3.setStartDate(entry2.getPubTime());
wesc3.setEndDate(entry2.getPubTime());
entries = mgr.getWeblogEntries(wesc3);
assertNotNull(entries);
assertEquals(1, entries.size());
assertEquals(entry2, entries.get(0));
// get all entries, limited to maxSize
WeblogEntrySearchCriteria wesc4 = new WeblogEntrySearchCriteria();
wesc4.setWeblog(testWeblog);
wesc4.setMaxResults(2);
entries = mgr.getWeblogEntries(wesc4);
assertNotNull(entries);
assertEquals(2, entries.size());
// get all entries in category
WeblogEntrySearchCriteria wesc5 = new WeblogEntrySearchCriteria();
wesc5.setWeblog(testWeblog);
wesc5.setCatName("General");
entries = mgr.getWeblogEntries(wesc5);
assertNotNull(entries);
assertEquals(5, entries.size());
// get all entries, limited by offset/range
WeblogEntrySearchCriteria wesc6 = new WeblogEntrySearchCriteria();
wesc6.setWeblog(testWeblog);
wesc6.setOffset(1);
wesc6.setMaxResults(1);
entries = mgr.getWeblogEntries(wesc6);
assertNotNull(entries);
assertEquals(1, entries.size());
assertEquals(entry2, entries.get(0));
// get all entries, limited by locale
WeblogEntrySearchCriteria wesc7 = new WeblogEntrySearchCriteria();
wesc7.setWeblog(testWeblog);
wesc7.setLocale("en_US");
entries = mgr.getWeblogEntries(wesc7);
assertNotNull(entries);
assertEquals(4, entries.size());
assertEquals(entry3, entries.get(0));
// get pinned entries only
entries = mgr.getWeblogEntriesPinnedToMain(5);
assertNotNull(entries);
assertEquals(1, entries.size());
assertEquals(entry1, entries.get(0));
// get next entry
entry = mgr.getNextEntry(entry4, null, null);
assertNotNull(entry);
assertEquals(entry5, entry);
// get previous entry
entry = mgr.getPreviousEntry(entry5, null, null);
assertNotNull(entry);
assertEquals(entry4, entry);
// get object map
WeblogEntrySearchCriteria wesc8 = new WeblogEntrySearchCriteria();
wesc8.setWeblog(testWeblog);
entryMap = mgr.getWeblogEntryObjectMap(wesc8);
assertNotNull(entryMap);
assertTrue(entryMap.keySet().size() > 1);
// get string map
entryMap = mgr.getWeblogEntryStringMap(wesc8);
assertNotNull(entryMap);
assertTrue(entryMap.keySet().size() > 1);
// teardown our test entries
TestUtils.teardownWeblogEntry(entry1.getId());
TestUtils.teardownWeblogEntry(entry2.getId());
TestUtils.teardownWeblogEntry(entry3.getId());
TestUtils.endSession(true);
}
/**
* Test that the createAnchor() method actually ensures unique anchors.
*/
public void testCreateAnchor() throws Exception {
WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
// setup some test entries to use
testWeblog = TestUtils.getManagedWebsite(testWeblog);
testUser = TestUtils.getManagedUser(testUser);
WeblogEntry entry1 = TestUtils.setupWeblogEntry("entry1", testWeblog, testUser);
TestUtils.endSession(true);
// make sure createAnchor gives us a new anchor value
entry1 = TestUtils.getManagedWeblogEntry(entry1);
String anchor = mgr.createAnchor(entry1);
assertNotNull(anchor);
assertNotSame("entry1", anchor);
// make sure we can create a new entry with specified anchor
testWeblog = TestUtils.getManagedWebsite(testWeblog);
testUser = TestUtils.getManagedUser(testUser);
WeblogEntry entry2 = TestUtils.setupWeblogEntry(anchor, testWeblog, testUser);
TestUtils.endSession(true);
assertNotNull(entry2);
// teardown our test entries
TestUtils.teardownWeblogEntry(entry1.getId());
TestUtils.teardownWeblogEntry(entry2.getId());
TestUtils.endSession(true);
}
public void testCreateAnEntryWithTagsShortcut() throws Exception {
try {
WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
WeblogEntry entry;
testWeblog = TestUtils.getManagedWebsite(testWeblog);
testUser = TestUtils.getManagedUser(testUser);
WeblogEntry testEntry = new WeblogEntry();
testEntry.setTitle("entryTestEntry");
testEntry.setLink("testEntryLink");
testEntry.setText("blah blah entry");
testEntry.setAnchor("testEntryAnchor");
testEntry.setPubTime(
new java.sql.Timestamp(new java.util.Date().getTime()));
testEntry.setUpdateTime(
new java.sql.Timestamp(new java.util.Date().getTime()));
testEntry.setWebsite(testWeblog);
testEntry.setCreatorUserName(testUser.getUserName());
testEntry.setCategory(testWeblog.getWeblogCategory("General"));
// shortcut
testEntry.addTag("testTag");
// create a weblog entry
mgr.saveWeblogEntry(testEntry);
String id = testEntry.getId();
TestUtils.endSession(true);
// make sure entry was created
entry = mgr.getWeblogEntry(id);
assertNotNull(entry);
assertEquals(testEntry, entry);
assertNotNull(entry.getTags());
assertEquals(1, entry.getTags().size());
assertEquals("testtag", (entry.getTags()
.iterator().next()).getName());
TestUtils.endSession(true);
// teardown our test entry
TestUtils.teardownWeblogEntry(id);
TestUtils.endSession(true);
} catch (Throwable t) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
t.printStackTrace(pw);
log.info(sw.toString());
}
}
public void testAddMultipleTags() throws Exception {
WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
// setup some test entries to use
testWeblog = TestUtils.getManagedWebsite(testWeblog);
testUser = TestUtils.getManagedUser(testUser);
WeblogEntry entry = TestUtils.setupWeblogEntry("entry1", testWeblog, testUser);
entry.addTag("testTag");
entry.addTag("whateverTag");
String id = entry.getId();
mgr.saveWeblogEntry(entry);
TestUtils.endSession(true);
entry = mgr.getWeblogEntry(id);
entry.addTag("testTag2");
mgr.saveWeblogEntry(entry);
TestUtils.endSession(true);
entry = mgr.getWeblogEntry(id);
assertEquals(3, entry.getTags().size());
// teardown our test entry
TestUtils.teardownWeblogEntry(id);
TestUtils.endSession(true);
}
public void testAddMultipleIdenticalTags() throws Exception {
WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
// setup some test entries to use
testWeblog = TestUtils.getManagedWebsite(testWeblog);
testUser = TestUtils.getManagedUser(testUser);
WeblogEntry entry = TestUtils.setupWeblogEntry("entry1", testWeblog, testUser);
entry.addTag("testTag");
String id = entry.getId();
mgr.saveWeblogEntry(entry);
TestUtils.endSession(true);
entry = mgr.getWeblogEntry(id);
entry.addTag("testTag");
mgr.saveWeblogEntry(entry);
TestUtils.endSession(true);
entry = mgr.getWeblogEntry(id);
assertEquals(1, entry.getTags().size());
// teardown our test entry
TestUtils.teardownWeblogEntry(id);
TestUtils.endSession(true);
}
public void testRemoveTagsViaShortcut() throws Exception {
try {
WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
// setup some test entries to use
testWeblog = TestUtils.getManagedWebsite(testWeblog);
testUser = TestUtils.getManagedUser(testUser);
WeblogEntry entry = TestUtils.setupWeblogEntry("entry1", testWeblog, testUser);
entry.addTag("testTag");
entry.addTag("testTag2");
String id = entry.getId();
mgr.saveWeblogEntry(entry);
TestUtils.endSession(true);
entry = mgr.getWeblogEntry(id);
assertEquals(2, entry.getTags().size());
TestUtils.endSession(true);
entry = mgr.getWeblogEntry(id);
entry.setTagsAsString("");
mgr.saveWeblogEntry(entry);
TestUtils.endSession(true);
entry = mgr.getWeblogEntry(id);
assertEquals(0, entry.getTags().size());
TestUtils.endSession(true);
// teardown our test entry
TestUtils.teardownWeblogEntry(id);
TestUtils.endSession(true);
} catch (Throwable t) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
t.printStackTrace(pw);
log.info(sw.toString());
}
}
public void testTagsExist() throws Exception {
WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
testWeblog = TestUtils.getManagedWebsite(testWeblog);
testUser = TestUtils.getManagedUser(testUser);
Weblog weblog = TestUtils.setupWeblog("tagsExistWeblog1", testUser);
String wid = weblog.getId();
// setup some test entries to use
WeblogEntry entry = TestUtils.setupWeblogEntry("tagsExistEntry1", testWeblog, testUser);
String id1 = entry.getId();
entry.addTag("blahTag");
entry.addTag("fooTag");
mgr.saveWeblogEntry(entry);
WeblogEntry entry2 = TestUtils.setupWeblogEntry("tagsExistEntry2", weblog, testUser);
String id2 = entry2.getId();
entry2.addTag("aaaTag");
entry2.addTag("bbbTag");
mgr.saveWeblogEntry(entry2);
TestUtils.endSession(true);
// we'll need these
List<String> tags1 = new ArrayList<String>();
tags1.add("nonExistTag");
List<String> tags2 = new ArrayList<String>();
tags2.add("blahtag");
// test site-wide
assertTrue(mgr.getTagComboExists(tags2, null));
assertFalse(mgr.getTagComboExists(tags1, null));
// test weblog specific
testWeblog = TestUtils.getManagedWebsite(testWeblog);
weblog = TestUtils.getManagedWebsite(weblog);
assertTrue(mgr.getTagComboExists(tags2, testWeblog));
assertFalse(mgr.getTagComboExists(tags1, testWeblog));
assertFalse(mgr.getTagComboExists(tags2, weblog));
// teardown our test data
TestUtils.teardownWeblogEntry(id1);
TestUtils.teardownWeblogEntry(id2);
TestUtils.endSession(true);
TestUtils.teardownWeblog(wid);
TestUtils.endSession(true);
}
public void testGetEntriesByTag() throws Exception {
try {
WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
// setup some test entries to use
testWeblog = TestUtils.getManagedWebsite(testWeblog);
testUser = TestUtils.getManagedUser(testUser);
WeblogEntry entry = TestUtils.setupWeblogEntry("entry1", testWeblog, testUser);
String id = entry.getId();
entry.addTag("testTag");
mgr.saveWeblogEntry(entry);
TestUtils.endSession(true);
testWeblog = TestUtils.getManagedWebsite(testWeblog);
WeblogEntrySearchCriteria wesc = new WeblogEntrySearchCriteria();
wesc.setWeblog(testWeblog);
// tags are always saved lowercase (testTag -> testtag)
wesc.setTags(Arrays.asList("testtag"));
List results = mgr.getWeblogEntries(wesc);
assertEquals(1, results.size());
WeblogEntry testEntry = (WeblogEntry) results.iterator().next();
assertEquals(entry, testEntry);
// teardown our test entry
TestUtils.teardownWeblogEntry(id);
TestUtils.endSession(true);
} catch (Throwable t) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
t.printStackTrace(pw);
log.info(sw.toString());
}
}
public void testRemoveEntryTagCascading() throws Exception {
WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
// setup some test entries to use
testWeblog = TestUtils.getManagedWebsite(testWeblog);
testUser = TestUtils.getManagedUser(testUser);
WeblogEntry entry = TestUtils.setupWeblogEntry("entry1", testWeblog, testUser);
entry.addTag("testTag");
String id = entry.getId();
mgr.saveWeblogEntry(entry);
TestUtils.endSession(true);
testWeblog = TestUtils.getManagedWebsite(testWeblog);
WeblogEntrySearchCriteria wesc = new WeblogEntrySearchCriteria();
wesc.setWeblog(testWeblog);
// tags are always saved lowercase (testTag -> testtag)
wesc.setTags(Arrays.asList("testtag"));
List results = mgr.getWeblogEntries(wesc);
assertEquals(1, results.size());
WeblogEntry testEntry = (WeblogEntry) results.iterator().next();
assertEquals(entry, testEntry);
// teardown our test entry
TestUtils.teardownWeblogEntry(id);
TestUtils.endSession(true);
testWeblog = TestUtils.getManagedWebsite(testWeblog);
results = mgr.getWeblogEntries(wesc);
assertEquals(0, results.size());
// terminate
TestUtils.endSession(true);
}
public void testUpdateTags() throws Exception {
WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
// setup some test entries to use
testWeblog = TestUtils.getManagedWebsite(testWeblog);
testUser = TestUtils.getManagedUser(testUser);
WeblogEntry entry = TestUtils.setupWeblogEntry("entry1", testWeblog, testUser);
entry.addTag("testWillStayTag");
entry.addTag("testTagWillBeRemoved");
String id = entry.getId();
mgr.saveWeblogEntry(entry);
TestUtils.endSession(true);
entry = mgr.getWeblogEntry(id);
assertEquals(2, entry.getTags().size());
entry.setTagsAsString("testwillstaytag testnewtag testnewtag3");
mgr.saveWeblogEntry(entry);
TestUtils.endSession(true);
entry = mgr.getWeblogEntry(id);
HashSet<String> tagNames = new HashSet<String>();
for (WeblogEntryTag tagData : entry.getTags()) {
tagNames.add(tagData.getName());
}
assertEquals(3, entry.getTags().size());
assertEquals(3, tagNames.size());
assertEquals(true, tagNames.contains("testwillstaytag"));
assertEquals(true, tagNames.contains("testnewtag"));
assertEquals(true, tagNames.contains("testnewtag3"));
// teardown our test entry
TestUtils.teardownWeblogEntry(id);
TestUtils.endSession(true);
}
/**
* We want to make sure that the first time placed on the tag remains
* through consequent updates.
*
* @throws Exception
*/
public void testUpdateTagTime() throws Exception {
WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
// setup some test entries to use
testWeblog = TestUtils.getManagedWebsite(testWeblog);
testUser = TestUtils.getManagedUser(testUser);
WeblogEntry entry = TestUtils.setupWeblogEntry("entry1", testWeblog, testUser);
String id = entry.getId();
entry.addTag("testWillStayTag");
entry.addTag("testTagWillBeRemoved");
mgr.saveWeblogEntry(entry);
TestUtils.endSession(true);
entry = mgr.getWeblogEntry(id);
assertEquals(2, entry.getTags().size());
Timestamp original = null;
for (WeblogEntryTag tagData : entry.getTags()) {
if (tagData.getName().equals("testwillstaytag"))
original = tagData.getTime();
}
entry.setTagsAsString("testwillstaytag testnewtag testnewtag3");
mgr.saveWeblogEntry(entry);
TestUtils.endSession(true);
entry = mgr.getWeblogEntry(id);
HashSet<String> tagNames = new HashSet<String>();
for (WeblogEntryTag tagData : entry.getTags()) {
tagNames.add(tagData.getName());
if (tagData.getName().equals("testwillstaytag")) {
assertEquals(original, tagData.getTime());
}
}
assertEquals(3, entry.getTags().size());
assertEquals(3, tagNames.size());
assertEquals(true, tagNames.contains("testwillstaytag"));
assertEquals(true, tagNames.contains("testnewtag"));
assertEquals(true, tagNames.contains("testnewtag3"));
// teardown our test entry
TestUtils.teardownWeblogEntry(id);
TestUtils.endSession(true);
}
public void testTagAggregates() throws Exception {
log.info("BEGIN");
WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
testWeblog = TestUtils.getManagedWebsite(testWeblog);
testUser = TestUtils.getManagedUser(testUser);
Weblog testWeblog2 = TestUtils.setupWeblog("entryTestWeblog2", testUser);
try {
// let's make sure we are starting from scratch
// site-wide
List<TagStat> tags = mgr.getTags(null, null, null, 0, -1);
assertEquals(0, tags.size());
// first weblog
tags = mgr.getTags(testWeblog, null, null, 0, -1);
assertEquals(0, tags.size());
// second weblog
tags = mgr.getTags(testWeblog2, null, null, 0, -1);
assertEquals(0, tags.size());
// setup some test entries to use
WeblogEntry entry = TestUtils.setupWeblogEntry("entry1", testWeblog, testUser);
entry.addTag("one");
entry.addTag("two");
mgr.saveWeblogEntry(entry);
entry = TestUtils.setupWeblogEntry("entry2", testWeblog, testUser);
entry.addTag("one");
entry.addTag("two");
entry.addTag("three");
mgr.saveWeblogEntry(entry);
TestUtils.endSession(true);
testWeblog = TestUtils.getManagedWebsite(testWeblog);
tags = mgr.getTags(testWeblog, null, null, 0, -1);
assertEquals(3, tags.size());
HashMap<String,Integer> expectedWeblogTags = new HashMap<String,Integer>();
expectedWeblogTags.put("one", 2);
expectedWeblogTags.put("two", 2);
expectedWeblogTags.put("three", 1);
for (TagStat stat : tags) {
if (!expectedWeblogTags.containsKey(stat.getName())) {
fail("Unexpected tagName.");
}
Integer expectedCount = expectedWeblogTags.get(stat.getName());
assertEquals(expectedCount.intValue(), stat.getCount());
}
// now add another entry in another blog
testWeblog2 = TestUtils.getManagedWebsite(testWeblog2);
testUser = TestUtils.getManagedUser(testUser);
entry = TestUtils.setupWeblogEntry("entry3", testWeblog2, testUser);
entry.addTag("one");
entry.addTag("three");
entry.addTag("four");
mgr.saveWeblogEntry(entry);
TestUtils.endSession(true);
// let's fetch "site" tags now
tags = mgr.getTags(null, null, null, 0, -1);
assertEquals(4, tags.size());
HashMap<String, Integer> expectedSiteTags = new HashMap<String, Integer>();
expectedSiteTags.put("one", 3);
expectedSiteTags.put("two", 2);
expectedSiteTags.put("three", 2);
expectedSiteTags.put("four", 1);
for (TagStat stat : tags) {
if (!expectedSiteTags.containsKey(stat.getName()))
fail("Unexpected tagName.");
Integer expectedCount = expectedSiteTags.get(stat.getName());
assertEquals(expectedCount.intValue(), stat.getCount());
}
TestUtils.endSession(true);
testWeblog = TestUtils.getManagedWebsite(testWeblog);
entry = mgr.getWeblogEntryByAnchor(testWeblog, "entry2");
entry.setTagsAsString("one three five");
mgr.saveWeblogEntry(entry);
TestUtils.endSession(true);
testWeblog = TestUtils.getManagedWebsite(testWeblog);
tags = mgr.getTags(testWeblog, null, null, 0, -1);
assertEquals(4, tags.size());
expectedWeblogTags = new HashMap<String, Integer>();
expectedWeblogTags.put("one", 2);
expectedWeblogTags.put("two", 1);
expectedWeblogTags.put("three", 1);
expectedWeblogTags.put("five", 1);
for (TagStat stat : tags) {
if (!expectedWeblogTags.containsKey(stat.getName())) {
fail("Unexpected tagName.");
}
Integer expectedCount =
expectedWeblogTags.get(stat.getName());
assertEquals(stat.getName(),
expectedCount.intValue(), stat.getCount());
}
tags = mgr.getTags(null, null, null, 0, -1);
assertEquals(5, tags.size());
expectedSiteTags = new HashMap<String, Integer>();
expectedSiteTags.put("one", 3);
expectedSiteTags.put("two", 1);
expectedSiteTags.put("three", 2);
expectedSiteTags.put("four", 1);
expectedSiteTags.put("five", 1);
for (TagStat stat : tags) {
if (!expectedSiteTags.containsKey(stat.getName())) {
fail("Unexpected tagName.");
}
Integer expectedCount = expectedSiteTags.get(stat.getName());
assertEquals(stat.getName(), expectedCount.intValue(), stat.getCount());
}
TestUtils.teardownWeblog(testWeblog2.getId());
TestUtils.endSession(true);
} catch (Throwable t) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
t.printStackTrace(pw);
log.error(sw.toString());
System.out.println(sw.toString());
}
log.info("END");
}
public void testTagAggregatesCaseSensitivity() throws Exception {
Weblog testWeblog2 = TestUtils.setupWeblog("entryTestWeblog2",
testUser);
testWeblog = TestUtils.getManagedWebsite(testWeblog);
testUser = TestUtils.getManagedUser(testUser);
WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
// let's make sure we are starting from scratch
// site-wide
List<TagStat> tags = mgr.getTags(null, null, null, 0, -1);
assertEquals(0, tags.size());
// first weblog
tags = mgr.getTags(testWeblog, null, null, 0, -1);
assertEquals(0, tags.size());
// second weblog
tags = mgr.getTags(testWeblog2, null, null, 0, -1);
assertEquals(0, tags.size());
// setup some test entries to use
WeblogEntry entry = TestUtils.setupWeblogEntry("entry1", testWeblog, testUser);
entry.addTag("one");
entry.addTag("two");
entry.addTag("ONE");
mgr.saveWeblogEntry(entry);
TestUtils.endSession(true);
tags = mgr.getTags(testWeblog, null, null, 0, -1);
assertEquals(2, tags.size());
HashMap<String, Integer> expectedWeblogTags = new HashMap<String, Integer>();
expectedWeblogTags.put("one", 1);
expectedWeblogTags.put("two", 1);
for (TagStat stat : tags) {
if (!expectedWeblogTags.containsKey(stat.getName()))
fail("Unexpected tagName.");
Integer expectedCount = expectedWeblogTags.get(stat.getName());
assertEquals(expectedCount.intValue(), stat.getCount());
}
// now add another entry in another blog
entry = TestUtils.setupWeblogEntry("entry3", testWeblog2, testUser);
entry.addTag("ONE");
entry.addTag("three");
mgr.saveWeblogEntry(entry);
TestUtils.endSession(true);
// let's fetch "site" tags now
tags = mgr.getTags(null, null, null, 0, -1);
assertEquals(3, tags.size());
HashMap<String, Integer> expectedSiteTags = new HashMap<String, Integer>();
expectedSiteTags.put("one", 2);
expectedSiteTags.put("two", 1);
expectedSiteTags.put("three", 1);
for (TagStat stat : tags) {
if (!expectedSiteTags.containsKey(stat.getName()))
fail("Unexpected tagName.");
Integer expectedCount = expectedSiteTags.get(stat.getName());
assertEquals(expectedCount.intValue(), stat.getCount());
}
TestUtils.endSession(true);
// teardown our test blog 2
TestUtils.teardownWeblog(testWeblog2.getId());
TestUtils.endSession(true);
}
/**
* Test that we can add and remove entry attributes for an entry.
*/
public void testEntryAttributeCRUD() throws Exception {
WeblogEntryManager emgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
WeblogEntry entry;
WeblogEntry testEntry = new WeblogEntry();
testEntry.setTitle("entryTestEntry");
testEntry.setLink("testEntryLink");
testEntry.setText("blah blah entry");
testEntry.setAnchor("testEntryAnchor");
testEntry.setPubTime(new java.sql.Timestamp(new java.util.Date().getTime()));
testEntry.setUpdateTime(new java.sql.Timestamp(new java.util.Date().getTime()));
testEntry.setWebsite(testWeblog);
testEntry.setCreatorUserName(testUser.getUserName());
WeblogCategory cat = testWeblog.getWeblogCategory("General");
testEntry.setCategory(cat);
// create a weblog entry
emgr.saveWeblogEntry(testEntry);
String id = testEntry.getId();
TestUtils.endSession(true);
testEntry = TestUtils.getManagedWeblogEntry(testEntry);
testEntry.putEntryAttribute("att_mediacast_url", "http://podcast-schmodcast.com");
testEntry.putEntryAttribute("att_mediacast_type", "application/drivel");
testEntry.putEntryAttribute("att_mediacast_length", "3141592654");
TestUtils.endSession(true);
// make sure entry was created
entry = emgr.getWeblogEntry(id);
assertNotNull(entry);
assertEquals(testEntry, entry);
assertNotNull(entry.getEntryAttributes());
assertEquals(3, entry.getEntryAttributes().size());
assertNotNull(entry.findEntryAttribute("att_mediacast_url"));
assertNotNull(entry.findEntryAttribute("att_mediacast_type"));
assertNotNull(entry.findEntryAttribute("att_mediacast_length"));
assertEquals("http://podcast-schmodcast.com", entry.findEntryAttribute("att_mediacast_url"));
assertEquals("application/drivel", entry.findEntryAttribute("att_mediacast_type"));
assertEquals("3141592654", entry.findEntryAttribute("att_mediacast_length"));
// update a weblog entry
entry.setTitle("testtest");
emgr.saveWeblogEntry(entry);
TestUtils.endSession(true);
// make sure entry was updated
entry = emgr.getWeblogEntry(id);
assertNotNull(entry);
assertEquals("testtest", entry.getTitle());
// delete a weblog entry
emgr.removeWeblogEntry(entry);
TestUtils.endSession(true);
// make sure entry was deleted
entry = emgr.getWeblogEntry(id);
assertNull(entry);
}
public void testWeblogStats() throws Exception {
WeblogEntryManager emgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
WeblogManager wmgr = WebloggerFactory.getWeblogger().getWeblogManager();
UserManager umgr = WebloggerFactory.getWeblogger().getUserManager();
long existingUserCount = umgr.getUserCount() - 1;
User user1 = TestUtils.setupUser("statuser1");
Weblog blog1 = TestUtils.setupWeblog("statblog1", user1);
Weblog blog2 = TestUtils.setupWeblog("statblog2", user1);
Weblog blog3 = TestUtils.setupWeblog("statblog3", user1);
blog3.setVisible(Boolean.FALSE);
wmgr.saveWeblog(blog3);
WeblogEntry entry1 = TestUtils.setupWeblogEntry("entry1", blog1, user1);
WeblogEntry entry2 = TestUtils.setupWeblogEntry("entry2", blog1, user1);
WeblogEntry entry3 = TestUtils.setupWeblogEntry("entry3", blog2, user1);
WeblogEntry entry4 = TestUtils.setupWeblogEntry("entry4", blog2, user1);
WeblogEntry entry5 = TestUtils.setupWeblogEntry("entry5", blog2, user1);
WeblogEntryComment comment1 = TestUtils.setupComment("comment1", entry1);
WeblogEntryComment comment2 = TestUtils.setupComment("comment2", entry1);
WeblogEntryComment comment3 = TestUtils.setupComment("comment3", entry3);
WeblogEntryComment comment4 = TestUtils.setupComment("comment4", entry3);
WeblogEntryComment comment5 = TestUtils.setupComment("comment5", entry3);
TestUtils.endSession(true);
try {
blog1 = wmgr.getWeblog(blog1.getId());
blog2 = wmgr.getWeblog(blog2.getId());
assertEquals(2L, blog1.getEntryCount());
assertEquals(3L, blog2.getEntryCount());
assertEquals(5L, emgr.getEntryCount());
assertEquals(2L, blog1.getCommentCount());
assertEquals(3L, blog2.getCommentCount());
assertEquals(5L, emgr.getCommentCount());
assertEquals(4L, wmgr.getWeblogCount());
assertEquals(existingUserCount + 2L, umgr.getUserCount());
} finally {
TestUtils.teardownComment(comment1.getId());
TestUtils.teardownComment(comment2.getId());
TestUtils.teardownComment(comment3.getId());
TestUtils.teardownComment(comment4.getId());
TestUtils.teardownComment(comment5.getId());
TestUtils.teardownWeblogEntry(entry1.getId());
TestUtils.teardownWeblogEntry(entry2.getId());
TestUtils.teardownWeblogEntry(entry3.getId());
TestUtils.teardownWeblogEntry(entry4.getId());
TestUtils.teardownWeblogEntry(entry5.getId());
TestUtils.teardownWeblog(blog1.getId());
TestUtils.teardownWeblog(blog2.getId());
TestUtils.teardownWeblog(blog3.getId());
TestUtils.teardownUser(user1.getUserName());
TestUtils.endSession(true);
}
}
}