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.AlbumActivity; import com.marverenic.music.model.Album; 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 AlbumViewModelTest { private FragmentActivity mActivity; private AlbumViewModel mSubject; @Before public void setup() { mActivity = Robolectric.buildActivity(FragmentActivity.class) .create() .start() .resume() .get(); mSubject = new AlbumViewModel(mActivity, mActivity.getSupportFragmentManager()); } @Test public void testCorrectText() { Album model = new Album.Builder() .setAlbumName("Album name") .setArtistName("Artist name") .build(); mSubject.setAlbum(model); assertEquals("Album name", mSubject.getAlbumTitle()); assertEquals("Artist name", mSubject.getAlbumArtist()); } @Test public void testClickNavigatesToAlbum() { Album model = new Album.Builder() .setAlbumName("Album") .setArtistName("Artist") .setAlbumId(10) .setArtistId(11) .setYear(2016) .setArtUri(null) .build(); mSubject.setAlbum(model); mSubject.onClickAlbum().onClick(null); Intent expected = AlbumActivity.newIntent(mActivity, model); Intent actual = Shadows.shadowOf(mActivity).getNextStartedActivity(); assertTrue(expected.filterEquals(actual)); assertBundlesEqual(expected.getExtras(), actual.getExtras()); } }