/* * Copyright (C) 2015 Simon Vig Therkildsen * * 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 net.simonvt.cathode.provider.generated; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import net.simonvt.cathode.provider.DatabaseContract; import net.simonvt.cathode.provider.DatabaseContract.CommentColumns; import net.simonvt.cathode.provider.DatabaseContract.EpisodeColumns; import net.simonvt.cathode.provider.DatabaseContract.SeasonColumns; import net.simonvt.cathode.provider.DatabaseContract.ShowColumns; import net.simonvt.cathode.provider.DatabaseSchematic.Tables; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import static com.google.common.truth.Truth.assertThat; @RunWith(RobolectricTestRunner.class) public class CathodeDatabaseTest { @Test public void testSeasonDeleteTrigger() throws Exception { CathodeDatabase helper = CathodeDatabase.getInstance(RuntimeEnvironment.application); SQLiteDatabase db = helper.getWritableDatabase(); ContentValues seasonCV = new ContentValues(); seasonCV.put(SeasonColumns.SEASON, 1); final long seasonId = db.insertOrThrow(Tables.SEASONS, null, seasonCV); Cursor seasons = db.query(Tables.SEASONS, null, null, null, null, null, null); assertThat(seasons.getCount()).isEqualTo(1); ContentValues episodeCV = new ContentValues(); episodeCV.put(EpisodeColumns.SEASON_ID, seasonId); db.insert(Tables.EPISODES, null, episodeCV); Cursor episodes = db.query(Tables.EPISODES, null, null, null, null, null, null); assertThat(episodes.getCount()).isEqualTo(1); db.delete(Tables.SEASONS, SeasonColumns.ID + "=" + seasonId, null); seasons = db.query(Tables.SEASONS, null, null, null, null, null, null); assertThat(seasons.getCount()).isEqualTo(0); episodes = db.query(Tables.EPISODES, null, null, null, null, null, null); assertThat(episodes.getCount()).isEqualTo(0); db.close(); } @Test public void testShowDeleteTrigger() throws Exception { CathodeDatabase helper = CathodeDatabase.getInstance(RuntimeEnvironment.application); SQLiteDatabase db = helper.getWritableDatabase(); // Create show ContentValues showCV = new ContentValues(); showCV.put(ShowColumns.TRAKT_ID, 1); final long showId = db.insert(Tables.SHOWS, null, showCV); // Create season ContentValues seasonCV = new ContentValues(); seasonCV.put(SeasonColumns.SEASON, 1); seasonCV.put(SeasonColumns.SHOW_ID, showId); final long seasonId = db.insert(Tables.SEASONS, null, seasonCV); Cursor seasons = db.query(Tables.SEASONS, null, null, null, null, null, null); assertThat(seasons.getCount()).isEqualTo(1); // Create episode ContentValues episodeCV = new ContentValues(); episodeCV.put(EpisodeColumns.SEASON_ID, seasonId); episodeCV.put(EpisodeColumns.SHOW_ID, showId); db.insert(Tables.EPISODES, null, episodeCV); Cursor episodes = db.query(Tables.EPISODES, null, null, null, null, null, null); assertThat(episodes.getCount()).isEqualTo(1); // Create comment ContentValues commentCV = new ContentValues(); commentCV.put(CommentColumns.ITEM_TYPE, DatabaseContract.ItemType.SHOW); commentCV.put(CommentColumns.ITEM_ID, showId); commentCV.put(CommentColumns.COMMENT, "Not null"); db.insert(Tables.COMMENTS, null, commentCV); Cursor comments = db.query(Tables.COMMENTS, null, null, null, null, null, null); assertThat(comments.getCount()).isEqualTo(1); // Delete show and check that other tables are empty db.delete(Tables.SHOWS, ShowColumns.ID + "=" + showId, null); seasons = db.query(Tables.SEASONS, null, null, null, null, null, null); assertThat(seasons.getCount()).isEqualTo(0); episodes = db.query(Tables.EPISODES, null, null, null, null, null, null); assertThat(episodes.getCount()).isEqualTo(0); comments = db.query(Tables.COMMENTS, null, null, null, null, null, null); assertThat(comments.getCount()).isEqualTo(0); db.close(); } }