parent
72b2471619
commit
1c4b5b3a72
@ -0,0 +1,26 @@
|
||||
package eu.kanade.mangafeed.data.database.models;
|
||||
|
||||
import com.pushtorefresh.storio.sqlite.annotations.StorIOSQLiteColumn;
|
||||
import com.pushtorefresh.storio.sqlite.annotations.StorIOSQLiteType;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import eu.kanade.mangafeed.data.database.tables.CategoryTable;
|
||||
|
||||
@StorIOSQLiteType(table = CategoryTable.TABLE)
|
||||
public class Category implements Serializable {
|
||||
|
||||
@StorIOSQLiteColumn(name = CategoryTable.COLUMN_ID, key = true)
|
||||
public Long id;
|
||||
|
||||
@StorIOSQLiteColumn(name = CategoryTable.COLUMN_NAME)
|
||||
public String name;
|
||||
|
||||
public Category() {}
|
||||
|
||||
public static Category create(String name) {
|
||||
Category c = new Category();
|
||||
c.name = name;
|
||||
return c;
|
||||
}
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package eu.kanade.mangafeed.data.database.models;
|
||||
|
||||
import com.pushtorefresh.storio.sqlite.annotations.StorIOSQLiteColumn;
|
||||
import com.pushtorefresh.storio.sqlite.annotations.StorIOSQLiteType;
|
||||
|
||||
import eu.kanade.mangafeed.data.database.tables.MangaCategoryTable;
|
||||
|
||||
@StorIOSQLiteType(table = MangaCategoryTable.TABLE)
|
||||
public class MangaCategory {
|
||||
|
||||
@StorIOSQLiteColumn(name = MangaCategoryTable.COLUMN_ID, key = true)
|
||||
public Long id;
|
||||
|
||||
@StorIOSQLiteColumn(name = MangaCategoryTable.COLUMN_MANGA_ID)
|
||||
public long manga_id;
|
||||
|
||||
@StorIOSQLiteColumn(name = MangaCategoryTable.COLUMN_CATEGORY_ID)
|
||||
public long category_id;
|
||||
|
||||
public MangaCategory() {}
|
||||
|
||||
public static MangaCategory create(Manga manga, Category category) {
|
||||
MangaCategory mc = new MangaCategory();
|
||||
mc.manga_id = manga.id;
|
||||
mc.category_id = category.id;
|
||||
return mc;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package eu.kanade.mangafeed.data.database.resolvers;
|
||||
|
||||
import android.database.Cursor;
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import eu.kanade.mangafeed.data.database.models.Manga;
|
||||
import eu.kanade.mangafeed.data.database.models.MangaStorIOSQLiteGetResolver;
|
||||
import eu.kanade.mangafeed.data.database.tables.MangaTable;
|
||||
|
||||
public class LibraryMangaGetResolver extends MangaStorIOSQLiteGetResolver {
|
||||
|
||||
public static final LibraryMangaGetResolver INSTANCE = new LibraryMangaGetResolver();
|
||||
|
||||
@Override
|
||||
@NonNull
|
||||
public Manga mapFromCursor(@NonNull Cursor cursor) {
|
||||
Manga manga = super.mapFromCursor(cursor);
|
||||
|
||||
int unreadColumn = cursor.getColumnIndex(MangaTable.COLUMN_UNREAD);
|
||||
manga.unread = cursor.getInt(unreadColumn);
|
||||
|
||||
int categoryColumn = cursor.getColumnIndex(MangaTable.COLUMN_CATEGORY);
|
||||
manga.category = cursor.getLong(categoryColumn);
|
||||
|
||||
return manga;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,119 @@
|
||||
package eu.kanade.mangafeed;
|
||||
|
||||
import android.app.Application;
|
||||
import android.os.Build;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.RobolectricGradleTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import eu.kanade.mangafeed.data.database.DatabaseHelper;
|
||||
import eu.kanade.mangafeed.data.database.models.Category;
|
||||
import eu.kanade.mangafeed.data.database.models.Manga;
|
||||
import eu.kanade.mangafeed.data.database.models.MangaCategory;
|
||||
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.Matchers.hasSize;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
import static org.hamcrest.Matchers.not;
|
||||
|
||||
@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.LOLLIPOP)
|
||||
@RunWith(RobolectricGradleTestRunner.class)
|
||||
public class CategoryTest {
|
||||
|
||||
DatabaseHelper db;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
Application app = RuntimeEnvironment.application;
|
||||
db = new DatabaseHelper(app);
|
||||
|
||||
// Create 5 mangas
|
||||
createManga("a");
|
||||
createManga("b");
|
||||
createManga("c");
|
||||
createManga("d");
|
||||
createManga("e");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHasCategories() {
|
||||
// Create 2 categories
|
||||
createCategory("Reading");
|
||||
createCategory("Hold");
|
||||
|
||||
List<Category> categories = db.getCategories().executeAsBlocking();
|
||||
assertThat(categories, hasSize(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHasLibraryMangas() {
|
||||
List<Manga> mangas = db.getLibraryMangas().executeAsBlocking();
|
||||
assertThat(mangas, hasSize(5));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHasCorrectFavorites() {
|
||||
Manga m = new Manga();
|
||||
m.title = "title";
|
||||
m.author = "";
|
||||
m.artist = "";
|
||||
m.thumbnail_url = "";
|
||||
m.genre = "a list of genres";
|
||||
m.description = "long description";
|
||||
m.url = "url to manga";
|
||||
m.favorite = false;
|
||||
db.insertManga(m).executeAsBlocking();
|
||||
List<Manga> mangas = db.getLibraryMangas().executeAsBlocking();
|
||||
assertThat(mangas, hasSize(5));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMangaInCategory() {
|
||||
// Create 2 categories
|
||||
createCategory("Reading");
|
||||
createCategory("Hold");
|
||||
|
||||
// It should not have 0 as id
|
||||
Category c = db.getCategories().executeAsBlocking().get(0);
|
||||
assertThat(c.id, not(0));
|
||||
|
||||
// Add a manga to a category
|
||||
Manga m = db.getMangas().executeAsBlocking().get(0);
|
||||
MangaCategory mc = MangaCategory.create(m, c);
|
||||
db.insertMangaCategory(mc).executeAsBlocking();
|
||||
|
||||
// Get mangas from library and assert manga category is the same
|
||||
List<Manga> mangas = db.getLibraryMangas().executeAsBlocking();
|
||||
for (Manga manga : mangas) {
|
||||
if (manga.id.equals(m.id)) {
|
||||
assertThat(manga.category, is(c.id));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void createManga(String title) {
|
||||
Manga m = new Manga();
|
||||
m.title = title;
|
||||
m.author = "";
|
||||
m.artist = "";
|
||||
m.thumbnail_url = "";
|
||||
m.genre = "a list of genres";
|
||||
m.description = "long description";
|
||||
m.url = "url to manga";
|
||||
m.favorite = true;
|
||||
db.insertManga(m).executeAsBlocking();
|
||||
}
|
||||
|
||||
private void createCategory(String name) {
|
||||
Category c = new Category();
|
||||
c.name = name;
|
||||
db.insertCategory(c).executeAsBlocking();
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in new issue