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.ArtistActivity;
import com.marverenic.music.model.Artist;
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 ArtistViewModelTest {
private FragmentActivity mActivity;
private ArtistViewModel mSubject;
@Before
public void setup() {
mActivity = Robolectric.buildActivity(FragmentActivity.class)
.create()
.start()
.resume()
.get();
mSubject = new ArtistViewModel(mActivity, mActivity.getSupportFragmentManager());
}
@Test
public void testCorrectText() {
Artist model = new Artist.Builder()
.setArtistName("Artist")
.setArtistId(10)
.build();
mSubject.setArtist(model);
assertEquals("Artist", mSubject.getName());
}
@Test
public void testClickNavigatesToArtist() {
Artist model = new Artist.Builder()
.setArtistName("Artist")
.setArtistId(10)
.build();
mSubject.setArtist(model);
mSubject.onClickArtist().onClick(null);
Intent expected = ArtistActivity.newIntent(mActivity, model);
Intent actual = Shadows.shadowOf(mActivity).getNextStartedActivity();
assertTrue(expected.filterEquals(actual));
assertBundlesEqual(expected.getExtras(), actual.getExtras());
}
}