package marubinotto.piggydb.model.tags;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import marubinotto.piggydb.model.Tag;
import marubinotto.piggydb.model.TagRepository;
import marubinotto.util.paging.Page;
import marubinotto.util.time.DateTime;
import org.junit.Before;
import org.junit.Test;
/**
* There's no need to get classifications for the time being.
*/
public class GetRecentChangesTest extends TagRepositoryTestBase {
public GetRecentChangesTest(RepositoryFactory<TagRepository> factory) {
super(factory);
}
@Before
public void given() throws Exception {
super.given();
DateTime.setCurrentTimeForTest(new DateTime(2008, 1, 1));
this.object.register(newTag("pingpong"));
DateTime.setCurrentTimeForTest(new DateTime(2008, 1, 2));
this.object.register(newTag("soccer"));
DateTime.setCurrentTimeForTest(null);
}
@Test
public void orderedByUpdateDateDesc() throws Exception {
// When
Page<Tag> page = this.object.getRecentChanges(3, 0);
// Then
assertEquals(2, page.size());
assertEquals("soccer", page.get(0).getName());
assertEquals("pingpong", page.get(1).getName());
}
@Test
public void orderedByUpdateDateDesc_oneUpdated() throws Exception {
// Given
DateTime.setCurrentTimeForTest(new DateTime(2008, 1, 3));
Tag tag = this.object.getByName("pingpong");
tag.setNameByUser("table tennis", getPlainUser());
this.object.update(tag);
// When
Page<Tag> page = this.object.getRecentChanges(3, 0);
// Then
assertEquals(2, page.size());
assertEquals("table tennis", page.get(0).getName());
assertEquals("soccer", page.get(1).getName());
}
@Test
public void paging() throws Exception {
// When
Page<Tag> page1 = this.object.getRecentChanges(1, 0);
Page<Tag> page2 = this.object.getRecentChanges(1, 1);
// Then
assertEquals(1, page1.size());
assertEquals(2, page1.getTotalSize());
assertTrue(page1.isFirstPage());
assertEquals(1, page2.size());
assertEquals(2, page2.getTotalSize());
assertTrue(page2.isLastPage());
}
}