You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by mf...@apache.org on 2012/12/28 22:27:53 UTC
svn commit: r1426640 - in
/rave/branches/mongo/rave-components/rave-mongodb/src:
main/java/org/apache/rave/portal/model/conversion/impl/
main/java/org/apache/rave/portal/repository/
main/java/org/apache/rave/portal/repository/impl/ main/java/org/apache...
Author: mfranklin
Date: Fri Dec 28 21:27:52 2012
New Revision: 1426640
URL: http://svn.apache.org/viewvc?rev=1426640&view=rev
Log:
Updated tests for tag repository
Added:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/TagImplConverter.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoTagOperations.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoTagTemplate.java
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbTagRepository.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRepository.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/util/CollectionNames.java
rave/branches/mongo/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/MongoDbTagRepositoryTest.java
Added: rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/TagImplConverter.java
URL: http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/TagImplConverter.java?rev=1426640&view=auto
==============================================================================
--- rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/TagImplConverter.java (added)
+++ rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/TagImplConverter.java Fri Dec 28 21:27:52 2012
@@ -0,0 +1,22 @@
+package org.apache.rave.portal.model.conversion.impl;
+
+import org.apache.rave.portal.model.Tag;
+import org.apache.rave.portal.model.conversion.HydratingModelConverter;
+import org.apache.rave.portal.model.impl.TagImpl;
+
+public class TagImplConverter implements HydratingModelConverter<Tag, TagImpl> {
+ @Override
+ public void hydrate(TagImpl dehydrated) {
+ //NOP
+ }
+
+ @Override
+ public Class<Tag> getSourceType() {
+ return Tag.class;
+ }
+
+ @Override
+ public TagImpl convert(Tag tag) {
+ return new TagImpl(tag.getId(), tag.getKeyword());
+ }
+}
Added: rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoTagOperations.java
URL: http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoTagOperations.java?rev=1426640&view=auto
==============================================================================
--- rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoTagOperations.java (added)
+++ rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoTagOperations.java Fri Dec 28 21:27:52 2012
@@ -0,0 +1,9 @@
+package org.apache.rave.portal.repository;
+
+import org.apache.rave.portal.model.Tag;
+
+/**
+ * Provides Mongo Model Template operations for Tags
+ */
+public interface MongoTagOperations extends MongoModelOperations<Tag> {
+}
Modified: rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbTagRepository.java
URL: http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbTagRepository.java?rev=1426640&r1=1426639&r2=1426640&view=diff
==============================================================================
--- rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbTagRepository.java (original)
+++ rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbTagRepository.java Fri Dec 28 21:27:52 2012
@@ -20,14 +20,9 @@
package org.apache.rave.portal.repository.impl;
-import com.google.common.collect.Lists;
-import org.apache.commons.collections.ListUtils;
-import org.apache.rave.exception.NotSupportedException;
import org.apache.rave.portal.model.Tag;
-import org.apache.rave.portal.model.Widget;
-import org.apache.rave.portal.model.WidgetTag;
import org.apache.rave.portal.model.impl.TagImpl;
-import org.apache.rave.portal.repository.MongoWidgetOperations;
+import org.apache.rave.portal.repository.MongoTagOperations;
import org.apache.rave.portal.repository.TagRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Query;
@@ -35,84 +30,51 @@ import org.springframework.stereotype.Re
import java.util.List;
+import static org.springframework.data.mongodb.core.query.Criteria.where;
+import static org.springframework.data.mongodb.core.query.Query.query;
+
@Repository
public class MongoDbTagRepository implements TagRepository {
@Autowired
- private MongoWidgetOperations widgetTemplate;
+ private MongoTagOperations template;
@Override
public List<Tag> getAll() {
- List<Widget> widgets = widgetTemplate.find(new Query());
- List<Tag> tags = Lists.newArrayList();
- for (Widget widget : widgets) {
- addUniqueTags(tags, widget);
- }
- return tags;
+ return template.find(new Query());
}
@Override
public int getCountAll() {
- return getAll().size();
+ return (int)template.count(new Query());
}
@Override
public Tag getByKeyword(String keyword) {
- return new TagImpl(keyword);
- }
-
- //@Override
- @SuppressWarnings("unchecked")
- public List<Tag> getAvailableTagsByWidgetId(String widgetId) {
- List<Tag> all = getAll();
- List<Tag> widgetTags = getTagsFromWidget(widgetTemplate.get(widgetId).getTags());
- return ListUtils.subtract(all, widgetTags);
+ return template.findOne(query(where("keyword").is(keyword)));
}
@Override
public Class<? extends Tag> getType() {
- return Tag.class;
+ return TagImpl.class;
}
@Override
public Tag get(String id) {
- throw new NotSupportedException("Cannot access tags by Id");
+ return template.get(id);
}
@Override
public Tag save(Tag item) {
- throw new NotSupportedException("Cannot save tags directly");
+ return template.count(query(where("keyword").is(item.getKeyword()))) == 0 ? template.save(item) : item;
}
@Override
public void delete(Tag item) {
- throw new NotSupportedException("Cannot delete tags directly");
- }
-
- private List<Tag> getTagsFromWidget(List<WidgetTag> widgetTags) {
- List<Tag> tags = Lists.newArrayList();
- if (widgetTags != null) {
- for (WidgetTag widgetTag : widgetTags) {
- tags.add(get(widgetTag.getTagId()));
- }
- }
- return tags;
- }
-
-
- private void addUniqueTags(List<Tag> tags, Widget widget) {
- //returns if there are no tags for this widget to prevent null pointer exception
- if (widget.getTags() == null) return;
-
- for (WidgetTag widgetTag : widget.getTags()) {
- Tag tag = get(widgetTag.getTagId());
- if (!tags.contains(tag)) {
- tags.add(tag);
- }
- }
+ template.remove(query(where("_id").is(item.getId())));
}
- public void setWidgetTemplate(MongoWidgetOperations widgetTemplate) {
- this.widgetTemplate = widgetTemplate;
+ public void setWidgetTemplate(MongoTagOperations tagTemplate) {
+ this.template = tagTemplate;
}
}
Modified: rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRepository.java
URL: http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRepository.java?rev=1426640&r1=1426639&r2=1426640&view=diff
==============================================================================
--- rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRepository.java (original)
+++ rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRepository.java Fri Dec 28 21:27:52 2012
@@ -23,6 +23,7 @@ import com.google.common.collect.Maps;
import org.apache.rave.exception.NotSupportedException;
import org.apache.rave.portal.model.*;
import org.apache.rave.portal.model.util.WidgetStatistics;
+import org.apache.rave.portal.repository.MongoTagOperations;
import org.apache.rave.portal.repository.MongoWidgetOperations;
import org.apache.rave.portal.repository.StatisticsAggregator;
import org.apache.rave.portal.repository.WidgetRepository;
@@ -52,6 +53,9 @@ public class MongoDbWidgetRepository imp
private MongoWidgetOperations template;
@Autowired
+ private MongoTagOperations tagTemplate;
+
+ @Autowired
private StatisticsAggregator statsAggregator;
@Override
@@ -119,7 +123,7 @@ public class MongoDbWidgetRepository imp
}
@Override
- public WidgetStatistics getWidgetStatistics(String widget_id, String user_id) {
+ public WidgetStatistics getWidgetStatistics(String widget_id, String user_id) {
return statsAggregator.getWidgetStatistics(widget_id, user_id);
}
@@ -129,10 +133,10 @@ public class MongoDbWidgetRepository imp
}
@Override
- public Map<String , WidgetRating> getUsersWidgetRatings(String userId) {
+ public Map<String, WidgetRating> getUsersWidgetRatings(String userId) {
Query q = query(where("ratings").elemMatch(where("userId").is(userId)));
List<Widget> widgets = template.find(q);
- Map<String , WidgetRating> ratings = Maps.newHashMap();
+ Map<String, WidgetRating> ratings = Maps.newHashMap();
for (Widget widget : widgets) {
for (WidgetRating rating : widget.getRatings()) {
if (rating.getUserId().equals(userId)) {
@@ -228,9 +232,9 @@ public class MongoDbWidgetRepository imp
private void removeRating(String ratingId, Widget widget) {
Iterator<WidgetRating> iterator = widget.getRatings().iterator();
- while(iterator.hasNext()) {
+ while (iterator.hasNext()) {
WidgetRating comment = iterator.next();
- if(comment.getId().equals(ratingId)) {
+ if (comment.getId().equals(ratingId)) {
iterator.remove();
return;
}
@@ -286,7 +290,7 @@ public class MongoDbWidgetRepository imp
@Override
public WidgetTag getTagById(String id) {
- throw new NotSupportedException();
+ throw new NotSupportedException("Widget tags are not stored by ID");
}
@Override
@@ -294,46 +298,51 @@ public class MongoDbWidgetRepository imp
Widget widget = template.get(widgetId);
updateOrAddTag(widget, item);
Widget saved = template.save(widget);
- //return getTagByKeyword(item.getTag().getKeyword(), saved);
- //TODO: FIX
- return null;
+ return getWidgetTagByTagId(saved, item.getTagId());
}
@Override
- public void deleteWidgetTag(WidgetTag item) {/*
- Widget widget = template.get(item.getWidgetId());
- removeTag(item.getTag().getKeyword(), widget);*/
+ public void deleteWidgetTag(WidgetTag item) {
+ List<Widget> widgets = template.find(query(where("tags").elemMatch(where("tagId").is(item.getTagId()).and("userId").is(item.getUserId()).and("createdDate").is(item.getCreatedDate()))));
+ if(widgets.size() > 1 || widgets.size() == 0) {
+ throw new IllegalArgumentException("Unable to delete tag. Indistinguishable from a tag on another widget or the tag doesn't exist");
+ } else {
+ Widget widget = widgets.get(0);
+ removeTag(item.getTagId(), widget);
+ save(widget);
+ }
}
private void updateOrAddTag(Widget widget, WidgetTag item) {
- //The current programming model expects there to be only one instance of a tag
- //consider an update a NOOP unless it is a new tag.
- /*WidgetTag tag = getTagByKeyword(item.getTag().getKeyword(), widget);
- if(tag == null) {
+ //Tags can only be created once. No reason to update the tag if it has already been made.
+ WidgetTag tag = getWidgetTagByTagId(widget, item.getTagId());
+ if (tag == null) {
widget.getTags().add(item);
- }*/
+ }
}
- private void removeTag(String keyword, Widget widget) {
- /* Iterator<WidgetTag> iterator = widget.getTags().iterator();
+ private void removeTag(String id, Widget widget) {
+ Iterator<WidgetTag> iterator = widget.getTags().iterator();
while (iterator.hasNext()) {
- WidgetTag comment = iterator.next();
- if (comment.getTag().getKeyword().equals(keyword)) {
+ WidgetTag widgetTag = iterator.next();
+ if (widgetTag.getTagId().equals(id)) {
iterator.remove();
return;
}
- }*/
+ }
}
private WidgetTag getTagByKeyword(String keyword, Widget widget) {
- /*for(WidgetTag tag : widget.getTags()) {
- if(tag.getTag().getKeyword().equals(keyword)) {
- return tag;
+ Tag tag = tagTemplate.findOne(query(where("keyword").is(keyword)));
+ return tag == null ? null : getWidgetTagByTagId(widget, tag.getId());
+ }
+
+ private WidgetTag getWidgetTagByTagId(Widget widget, String tagId) {
+ for (WidgetTag widgetTag : widget.getTags()) {
+ if (widgetTag.getTagId().equals(tagId)) {
+ return widgetTag;
}
}
- return null;*/
-
- //TODO: FIX
return null;
}
@@ -372,9 +381,9 @@ public class MongoDbWidgetRepository imp
@Override
public int deleteAllWidgetComments(String userId) {
- int count=0;
+ int count = 0;
List<Widget> widgets = template.find(query(where("comments").elemMatch(where("userId").is(userId))));
- for(Widget widget : widgets) {
+ for (Widget widget : widgets) {
count += updateWidget(userId, widget);
}
return count;
@@ -382,9 +391,9 @@ public class MongoDbWidgetRepository imp
private void removeComment(String commentId, Widget widget) {
Iterator<WidgetComment> iterator = widget.getComments().iterator();
- while(iterator.hasNext()) {
+ while (iterator.hasNext()) {
WidgetComment comment = iterator.next();
- if(comment.getId().equals(commentId)) {
+ if (comment.getId().equals(commentId)) {
iterator.remove();
return;
}
@@ -395,23 +404,23 @@ public class MongoDbWidgetRepository imp
int count = 0;
Iterator<WidgetComment> iterator = widget.getComments().iterator();
- while(iterator.hasNext()) {
+ while (iterator.hasNext()) {
WidgetComment comment = iterator.next();
- if(comment.getUserId().equals(userId)) {
+ if (comment.getUserId().equals(userId)) {
iterator.remove();
count++;
}
}
- if(count > 0) {
+ if (count > 0) {
template.save(widget);
}
return count;
}
private WidgetComment getCommentById(Widget widget, String id) {
- if(widget != null){
- for(WidgetComment comment : widget.getComments()) {
- if(comment.getId().equals(id)) {
+ if (widget != null) {
+ for (WidgetComment comment : widget.getComments()) {
+ if (comment.getId().equals(id)) {
return comment;
}
}
@@ -420,8 +429,8 @@ public class MongoDbWidgetRepository imp
}
private WidgetComment updateComment(Widget widget, WidgetComment item) {
- for(WidgetComment comment : widget.getComments()) {
- if(comment.getId().equals(item.getId())) {
+ for (WidgetComment comment : widget.getComments()) {
+ if (comment.getId().equals(item.getId())) {
comment.setLastModifiedDate(new Date());
comment.setText(item.getText());
comment.setUserId(item.getUserId());
@@ -477,4 +486,7 @@ public class MongoDbWidgetRepository imp
this.statsAggregator = statsAggregator;
}
+ public void setTagTemplate(MongoTagOperations tagTemplate) {
+ this.tagTemplate = tagTemplate;
+ }
}
Added: rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoTagTemplate.java
URL: http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoTagTemplate.java?rev=1426640&view=auto
==============================================================================
--- rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoTagTemplate.java (added)
+++ rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoTagTemplate.java Fri Dec 28 21:27:52 2012
@@ -0,0 +1,16 @@
+package org.apache.rave.portal.repository.impl;
+
+import org.apache.rave.portal.model.Tag;
+import org.apache.rave.portal.model.impl.TagImpl;
+import org.apache.rave.portal.repository.MongoTagOperations;
+
+import static org.apache.rave.portal.repository.util.CollectionNames.TAG_COLLECTION;
+
+/**
+ *
+ */
+public class MongoTagTemplate extends MongoModelTemplate<Tag, TagImpl> implements MongoTagOperations {
+ public MongoTagTemplate() {
+ super(Tag.class, TagImpl.class, TAG_COLLECTION);
+ }
+}
Modified: rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/util/CollectionNames.java
URL: http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/util/CollectionNames.java?rev=1426640&r1=1426639&r2=1426640&view=diff
==============================================================================
--- rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/util/CollectionNames.java (original)
+++ rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/util/CollectionNames.java Fri Dec 28 21:27:52 2012
@@ -24,6 +24,7 @@ public class CollectionNames {
private CollectionNames() {}
public static final String WIDGET_COLLECTION = "widget";
+ public static final String TAG_COLLECTION = "tag";
public static final String USER_COLLECTION = "person";
public static final String PERSON_COLLECTION = USER_COLLECTION;
public static final String PAGE_COLLECTION = "page";
Modified: rave/branches/mongo/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/MongoDbTagRepositoryTest.java
URL: http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/MongoDbTagRepositoryTest.java?rev=1426640&r1=1426639&r2=1426640&view=diff
==============================================================================
--- rave/branches/mongo/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/MongoDbTagRepositoryTest.java (original)
+++ rave/branches/mongo/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/MongoDbTagRepositoryTest.java Fri Dec 28 21:27:52 2012
@@ -20,19 +20,15 @@
package org.apache.rave.portal.repository.impl;
import com.google.common.collect.Lists;
-import org.apache.rave.exception.NotSupportedException;
import org.apache.rave.portal.model.Tag;
-import org.apache.rave.portal.model.Widget;
-import org.apache.rave.portal.model.WidgetTag;
import org.apache.rave.portal.model.impl.TagImpl;
-import org.apache.rave.portal.model.impl.WidgetImpl;
-import org.apache.rave.portal.model.impl.WidgetTagImpl;
-import org.apache.rave.portal.repository.MongoWidgetOperations;
+import org.apache.rave.portal.repository.MongoTagOperations;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
+import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
+import java.util.Arrays;
import java.util.List;
import static org.easymock.EasyMock.*;
@@ -45,92 +41,109 @@ import static org.junit.Assert.assertTha
*/
public class MongoDbTagRepositoryTest {
- private MongoWidgetOperations widgetTemplate;
+ private MongoTagOperations tagTemplate;
private MongoDbTagRepository repo;
@Before
public void setUp(){
- widgetTemplate = createMock(MongoWidgetOperations.class);
+ tagTemplate = createMock(MongoTagOperations.class);
repo = new MongoDbTagRepository();
- repo.setWidgetTemplate(widgetTemplate);
+ repo.setWidgetTemplate(tagTemplate);
}
- @Test @Ignore("Fix before merge")
+ @Test
public void getAll(){
- List<Widget> widgets = Lists.newArrayList();
- List<WidgetTag> widget_tags = Lists.newArrayList();
- WidgetTag wt = new WidgetTagImpl();
- Tag tag = new TagImpl();
- widget_tags.add(wt);
- Widget w = new WidgetImpl();
- w.setTags(widget_tags);
- widgets.add(w);
-
- expect(widgetTemplate.find(new Query())).andReturn(widgets);
- expect(widgetTemplate.find(new Query())).andReturn(widgets);
- replay(widgetTemplate);
+ List<Tag> tags = Arrays.<Tag>asList(new TagImpl(), new TagImpl());
+
+ expect(tagTemplate.find(new Query())).andReturn(tags);
+ replay(tagTemplate);
List<Tag> result = repo.getAll();
assertNotNull(result);
- assertThat(result.get(0), is(sameInstance(tag)));
+ assertThat(result.size(), is(equalTo(tags.size())));
+
+ }
+
+ @Test
+ public void countAll(){
- int count = repo.getCountAll();
- assertThat(count, is(equalTo(1)));
+ expect(tagTemplate.count(new Query())).andReturn(2L);
+ replay(tagTemplate);
+
+ int result = repo.getCountAll();
+ assertThat(result, is(equalTo(2)));
}
@Test
public void getAll_null(){
- List<Widget> widgets = Lists.newArrayList();
- Widget w = new WidgetImpl();
- widgets.add(w);
- expect(widgetTemplate.find(new Query())).andReturn(widgets);
- replay(widgetTemplate);
+ expect(tagTemplate.find(new Query())).andReturn(Lists.<Tag>newArrayList());
+ replay(tagTemplate);
List<Tag> result = repo.getAll();
assertThat(result.size(), is(equalTo(0)));
}
- @Test (expected = NotSupportedException.class)
- public void save(){
- Tag tag = new TagImpl();
- repo.save(tag);
+ @Test
+ public void getByKeyword() {
+ String keyword = "key";
+ Tag t = new TagImpl("1", keyword);
+ expect(tagTemplate.findOne(Query.query(Criteria.where("keyword").is(keyword)))).andReturn(t);
+ replay(tagTemplate);
+ Tag fromRepo = repo.getByKeyword(keyword);
+ assertThat(fromRepo.getKeyword(), is(equalTo(keyword)));
}
- @Test (expected = NotSupportedException.class)
- public void delete(){
- Tag tag = new TagImpl();
- repo.delete(tag);
+ @Test
+ public void get() {
+ String keyword = "key";
+ String id = "1";
+ Tag t = new TagImpl(id, keyword);
+ expect(tagTemplate.get(id)).andReturn(t);
+ replay(tagTemplate);
+
+ Tag fromRepo = repo.get(id);
+ assertThat(fromRepo.getId(), is(equalTo(id)));
+ assertThat(fromRepo.getKeyword(), is(equalTo(keyword)));
+ }
+ @Test
+ public void save(){
+ String keyword = "KEYWORD";
+ Tag tag = new TagImpl("ID", keyword);
+ expect(tagTemplate.count(Query.query(Criteria.where("keyword").is(keyword)))).andReturn(0L);
+ expect(tagTemplate.save(tag)).andReturn(tag);
+ replay(tagTemplate);
+ Tag returned = repo.save(tag);
+ verify(tagTemplate);
+ assertThat(returned, is(sameInstance(tag)));
}
-// @Test
-// public void getAvailableTagsByWidgetId(){
-// List<Widget> widgets = Lists.newArrayList();
-// List<WidgetTag> widget_tags = Lists.newArrayList();
-// WidgetTag wt = new WidgetTagImpl();
-// wt.setWidgetId(1111L);
-// Tag tag = new TagImpl();
-// wt.setTag(tag);
-// widget_tags.add(wt);
-// Widget w = new WidgetImpl(1234L);
-// w.setTags(widget_tags);
-// widgets.add(w);
-//
-// expect(widgetTemplate.find(new Query())).andReturn(widgets);
-// // The following expect is getting this error...
-// // Method threw 'java.lang.NullPointerException' exception.
-// // Cannot evaluate org.easymock.internal.Invocation.toString()
-// expect(widgetTemplate.get(1234L).getTags()).andReturn(widget_tags);
-// replay(widgetTemplate);
-//
-// List<Tag> result = repo.getAvailableTagsByWidgetId(1234L);
-// assertThat(result.size(), is(equalTo(1)));
-// }
+ @Test
+ public void save_more(){
+ String keyword = "KEYWORD";
+ Tag tag = new TagImpl("ID", keyword);
+ expect(tagTemplate.count(Query.query(Criteria.where("keyword").is(keyword)))).andReturn(1L);
+ replay(tagTemplate);
+ Tag returned = repo.save(tag);
+ verify(tagTemplate);
+ assertThat(returned, is(sameInstance(tag)));
+ }
+ @Test
+ public void delete(){
+ String id ="id";
+ Tag tag = new TagImpl(id, "keyword");
+ tagTemplate.remove(Query.query(Criteria.where("_id").is(id)));
+ expectLastCall();
+ replay(tagTemplate);
+ repo.delete(tag);
+ verify(tagTemplate);
+
+ }
}