You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2005/09/25 21:04:44 UTC
svn commit: r291462 - in
/incubator/roller/branches/roller_2.0/sandbox/atomprotocol/tests/org/roller/presentation/atomapi:
./ AtomCollectionTest.java
Author: snoopdave
Date: Sun Sep 25 12:04:41 2005
New Revision: 291462
URL: http://svn.apache.org/viewcvs?rev=291462&view=rev
Log:
TBD: tests for Atom Protocol impl
Added:
incubator/roller/branches/roller_2.0/sandbox/atomprotocol/tests/org/roller/presentation/atomapi/
incubator/roller/branches/roller_2.0/sandbox/atomprotocol/tests/org/roller/presentation/atomapi/AtomCollectionTest.java
Added: incubator/roller/branches/roller_2.0/sandbox/atomprotocol/tests/org/roller/presentation/atomapi/AtomCollectionTest.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/sandbox/atomprotocol/tests/org/roller/presentation/atomapi/AtomCollectionTest.java?rev=291462&view=auto
==============================================================================
--- incubator/roller/branches/roller_2.0/sandbox/atomprotocol/tests/org/roller/presentation/atomapi/AtomCollectionTest.java (added)
+++ incubator/roller/branches/roller_2.0/sandbox/atomprotocol/tests/org/roller/presentation/atomapi/AtomCollectionTest.java Sun Sep 25 12:04:41 2005
@@ -0,0 +1,151 @@
+/*
+ * Copyright 2005 David M Johnson (For RSS and Atom In Action)
+ *
+ * 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.roller.presentation.atomapi;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.jdom.Document;
+import org.roller.presentation.atomapi.AtomCollection;
+import org.roller.presentation.atomapi.AtomService;
+
+/**
+ * @author Dave Johnson
+ */
+public class AtomCollectionTest extends TestCase {
+
+ private static SimpleDateFormat df =
+ new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ssZ" );
+
+ /** Creates a new instance of AtomCollectionTest */
+ public AtomCollectionTest() {
+ }
+
+ public void testRangeParsing() throws Exception {
+ Date end = new Date(); // now
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(end);
+ cal.add(Calendar.DATE, -1);
+ Date start = cal.getTime(); // one day ago
+ String startString = df.format(start);
+ String endString = df.format(end);
+
+ String r1 = "Range: updated="+startString+"/"+endString;
+ AtomCollection.Range range = AtomCollection.parseRange(r1);
+ assertNotNull(range.start);
+ assertNotNull(range.end);
+
+ String r2 = "Range: updated="+startString+"/";
+ range = AtomCollection.parseRange(r2);
+ assertNotNull(range.start);
+ assertNull(range.end);
+
+ String r3 = "Range: updated="+"/"+endString;
+ range = AtomCollection.parseRange(r3);
+ assertNull(range.start);
+ assertNotNull(range.end);
+ }
+
+ public void testCollectionBean() throws Exception {
+
+ // create a collection with a member
+ Date date1 = new Date();
+ AtomCollection collection = new AtomCollection();
+ AtomCollection.Member member1 = new AtomCollection.Member();
+ member1.setTitle("title1");
+ member1.setHref("http://example.com/item1");
+ member1.setUpdated(date1);
+ collection.addMember(member1);
+
+ // add another member
+ Date date2 = new Date();
+ AtomCollection.Member member2 = new AtomCollection.Member();
+ member2.setTitle("title2");
+ member2.setHref("http://example.com/item2");
+ member2.setUpdated(date2);
+ collection.addMember(member2);
+
+ // serialize to XML
+ Document doc = AtomCollection.collectionToDocument(collection);
+ assertEquals("collection", doc.getRootElement().getName());
+ assertEquals(2, doc.getRootElement().getContent().size());
+
+ // deserialize from XML and assert we've got the same stuff
+ AtomCollection col2 = AtomCollection.documentToCollection(doc);
+ assertEquals(2, col2.getMembers().size());
+
+ AtomCollection.Member m1 = (AtomCollection.Member)col2.getMembers().get(0);
+ assertEquals("title1", m1.getTitle());
+ assertEquals("http://example.com/item1", m1.getHref());
+ assertCloseEnough(date1, m1.getUpdated());
+
+ AtomCollection.Member m2 = (AtomCollection.Member)col2.getMembers().get(1);
+ assertEquals("title2", m2.getTitle());
+ assertEquals("http://example.com/item2", m2.getHref());
+ assertCloseEnough(date2, m2.getUpdated());
+ }
+
+ public void testServiceBean() {
+
+ AtomService.Collection collection = new AtomService.Collection();
+ collection.setTitle("All blog entries");
+ collection.setContents("entries");
+ collection.setHref("http://example.com/collection1");
+
+ AtomService.Workspace workspace = new AtomService.Workspace();
+ workspace.setTitle("My blog");
+ workspace.addCollection(collection);
+
+ AtomService service = new AtomService();
+ service.addWorkspace(workspace);
+
+ // serialize to XML
+ Document doc = AtomService.serviceToDocument(service);
+ assertEquals("service", doc.getRootElement().getName());
+ assertEquals(1, doc.getRootElement().getContent().size());
+
+ // deserialize from XML and assert we've got the same stuff
+ AtomService service2 = AtomService.documentToService(doc);
+
+ AtomService.Workspace workspace2 =
+ (AtomService.Workspace)service2.getWorkspaces().get(0);
+ assertEquals("My blog", workspace2.getTitle());
+
+ AtomService.Collection collection2 =
+ (AtomService.Collection)workspace2.getCollections().get(0);
+ assertEquals("All blog entries", collection2.getTitle());
+ assertEquals("entries", collection.getContents());
+ assertEquals("http://example.com/collection1", collection2.getHref());
+ }
+
+ /** Compare times ignoring milliseconds */
+ public void assertCloseEnough(Date d1, Date d2) {
+ long t1 = d1.getTime() - d1.getTime() % 1000;
+ long t2 = d2.getTime() - d2.getTime() % 1000;
+ assertEquals(t1, t2);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite();
+ suite.addTest(new TestSuite(AtomCollectionTest.class));
+ return suite;
+ }
+}