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 org.junit.Before;
import org.junit.Test;
public class GetRootTagsTest extends TagRepositoryTestBase {
public GetRootTagsTest(RepositoryFactory<TagRepository> factory) {
super(factory);
}
@Before
public void given() throws Exception {
super.given();
this.object.register(newTag("design"));
this.object.register(newTagWithTags("OO", "design"));
this.object.register(newTag("lang"));
this.object.register(newTagWithTags("java", "lang"));
this.object.register(newTagWithTags("ruby", "lang"));
}
@Test
public void getRootTags() throws Exception {
Page<Tag> results = this.object.getRootTags(3, 0);
assertEquals(2, results.size());
assertEquals(2, results.getTotalSize());
assertEquals("design", results.get(0).getName());
assertEquals("lang", results.get(1).getName());
}
@Test
public void paging() throws Exception {
// When
Page<Tag> page1 = this.object.getRootTags(1, 0);
Page<Tag> page2 = this.object.getRootTags(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());
}
}