package com.marverenic.music.viewmodel;
import android.content.Intent;
import android.support.v4.app.FragmentActivity;
import com.marverenic.music.BuildConfig;
import com.marverenic.music.RobolectricJockeyApplication;
import com.marverenic.music.activity.instance.GenreActivity;
import com.marverenic.music.model.Genre;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.Shadows;
import org.robolectric.annotation.Config;
import static com.marverenic.music.utils.AssertUtils.assertBundlesEqual;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertTrue;
@RunWith(RobolectricTestRunner.class)
@Config(sdk = 23, constants = BuildConfig.class, application = RobolectricJockeyApplication.class)
public class GenreViewModelTest {
private FragmentActivity mActivity;
private GenreViewModel mSubject;
@Before
public void setup() {
mActivity = Robolectric.buildActivity(FragmentActivity.class)
.create()
.start()
.resume()
.get();
mSubject = new GenreViewModel(mActivity, mActivity.getSupportFragmentManager());
}
@Test
public void testCorrectText() {
Genre model = new Genre.Builder()
.setGenreName("Genre")
.setGenreId(10)
.build();
mSubject.setGenre(model);
assertEquals("Genre", mSubject.getName());
}
@Test
public void testClickNavigatesToArtist() {
Genre model = new Genre.Builder()
.setGenreName("Genre")
.setGenreId(10)
.build();
mSubject.setGenre(model);
mSubject.onClickGenre().onClick(null);
Intent expected = GenreActivity.newIntent(mActivity, model);
Intent actual = Shadows.shadowOf(mActivity).getNextStartedActivity();
assertTrue(expected.filterEquals(actual));
assertBundlesEqual(expected.getExtras(), actual.getExtras());
}
}