package net.rdrei.android.scdl2.test;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import net.rdrei.android.scdl2.api.APIException;
import net.rdrei.android.scdl2.api.ServiceManager;
import net.rdrei.android.scdl2.api.URLConnectionFactory;
import net.rdrei.android.scdl2.api.entity.TrackEntity;
import net.rdrei.android.scdl2.api.service.TrackService;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.thoughtcrime.ssl.pinning.PinningTrustManager;
import com.google.inject.AbstractModule;
import com.google.inject.Inject;
/**
* This testcase checks if purchase information are correctly extracted from the
* JSON response.
*
* @author pascal
*
*/
@RunWith(RobolectricTestRunner.class)
public class PurchaseEntityTest {
@Inject
private ServiceManager mServiceManager;
private FakeURLConnectionFactoryImpl mUrlConnectionFactory;
@Before
public void setUp() {
final AbstractModule module = new AbstractModule() {
@Override
protected void configure() {
mUrlConnectionFactory = new FakeURLConnectionFactoryImpl(
"/fixtures/track_purchase.json");
mUrlConnectionFactory.setResponseCode(200);
// Disable this to have a real connection test.
bind(URLConnectionFactory.class).toInstance(
mUrlConnectionFactory);
bind(PinningTrustManager.class).toInstance(
new TrustManagerStub());
}
};
TestHelper.overridenInjector(this, module);
}
@Test
public void testResolvePurchase() throws APIException {
final TrackService service = mServiceManager.trackService();
TrackEntity entity = service.getTrack("60200642");
assertThat(entity.isPurchasable(), is(true));
assertThat(entity.isDownloadable(), is(false));
assertThat(entity.getPurchaseUrl(),
equalTo("http://bit.ly/3LAU_HAUS"));
assertThat(entity.getPurchaseTitle(), equalTo("Download on Facebook"));
}
}