package com.truckmuncher.app.data;
import android.net.Uri;
import com.truckmuncher.app.test.Assertions;
import com.truckmuncher.testlib.ReadableRobolectricTestRunner;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.assertj.core.api.Assertions.assertThat;
@RunWith(ReadableRobolectricTestRunner.class)
public class ContractTest {
@Test
public void suppressNotifyDirectiveWorksBothWays() {
Uri uri = Uri.parse("http://truckmuncher.com");
assertThat(Contract.isSuppressNotify(uri)).isFalse();
uri = Contract.suppressNotify(uri);
assertThat(Contract.isSuppressNotify(uri)).isTrue();
}
@Test
public void syncToNetworkDirectiveWorksBothWays() {
Uri uri = Uri.parse("http://truckmuncher.com");
assertThat(Contract.isSyncToNetwork(uri)).isFalse();
uri = Contract.syncToNetwork(uri);
assertThat(Contract.isSyncToNetwork(uri)).isTrue();
}
@Test
public void syncFromNetworkDirectiveWorksBothWays() {
Uri uri = Uri.parse("http://truckmuncher.com");
assertThat(Contract.isSyncFromNetwork(uri)).isFalse();
uri = Contract.syncFromNetwork(uri);
assertThat(Contract.isSyncFromNetwork(uri)).isTrue();
}
@Test(expected = IllegalStateException.class)
public void suppressNotifyDirectiveCannotBeUsedWithSyncToNetworkDirective() {
Uri uri = Contract.syncToNetwork(Uri.parse("http://truckmuncher.com"));
Contract.suppressNotify(uri);
}
@Test(expected = IllegalStateException.class)
public void syncToNetworkDirectiveCannotBeUsedWithSuppressNotifyDirective() {
Uri uri = Contract.suppressNotify(Uri.parse("http://truckmuncher.com"));
Contract.syncToNetwork(uri);
}
/*
* TRUCK STATE
*/
@Test
public void truckStateUriHasContentScheme() {
Assertions.assertThat(Contract.TRUCK_STATE_URI).hasContentScheme();
}
@Test
public void truckStateUriHasCorrectPath() {
Assertions.assertThat(Contract.TRUCK_STATE_URI).hasPath("/truck_state");
}
@Test
public void truckStateUriHasCorrectAuthority() {
Assertions.assertThat(Contract.TRUCK_STATE_URI).hasAuthority(PublicContract.CONTENT_AUTHORITY);
}
/*
* TRUCK PROPERTIES
*/
@Test
public void truckPropertiesUriHasContentScheme() {
Assertions.assertThat(Contract.TRUCK_PROPERTIES_URI).hasContentScheme();
}
@Test
public void truckPropertiesUriHasCorrectPath() {
Assertions.assertThat(Contract.TRUCK_PROPERTIES_URI).hasPath("/truck_properties");
}
@Test
public void truckPropertiesUriHasCorrectAuthority() {
Assertions.assertThat(Contract.TRUCK_PROPERTIES_URI).hasAuthority(PublicContract.CONTENT_AUTHORITY);
}
}