package co.smartreceipts.android.sync.model.impl;
import android.os.Parcel;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import java.sql.Date;
import java.util.Collections;
import co.smartreceipts.android.sync.provider.SyncProvider;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
@RunWith(RobolectricTestRunner.class)
public class DefaultSyncStateTest {
//Class under testing
DefaultSyncState mDefaultSyncState;
Identifier mIdentifier;
IdentifierMap mIdentifierMap;
SyncStatusMap mSyncStatusMap;
MarkedForDeletionMap mMarkedForDeletionMap;
Date mLastLocalModificationTime;
@Before
public void setUp() throws Exception {
mIdentifier = new Identifier("abc");
mIdentifierMap = new IdentifierMap(Collections.singletonMap(SyncProvider.GoogleDrive, mIdentifier));
mSyncStatusMap = new SyncStatusMap(Collections.singletonMap(SyncProvider.GoogleDrive, true));
mMarkedForDeletionMap = new MarkedForDeletionMap(Collections.singletonMap(SyncProvider.GoogleDrive, true));
mLastLocalModificationTime = new Date(System.currentTimeMillis());
mDefaultSyncState = new DefaultSyncState(mIdentifierMap, mSyncStatusMap, mMarkedForDeletionMap, mLastLocalModificationTime);
}
@Test
public void getSyncId() {
assertEquals(mIdentifier, mDefaultSyncState.getSyncId(SyncProvider.GoogleDrive));
assertNull(mDefaultSyncState.getSyncId(SyncProvider.None));
}
@Test
public void isSynced() {
assertEquals(true, mDefaultSyncState.isSynced(SyncProvider.GoogleDrive));
assertEquals(false, mDefaultSyncState.isSynced(SyncProvider.None));
}
@Test
public void isMarkedForDeletion() {
assertEquals(true, mDefaultSyncState.isMarkedForDeletion(SyncProvider.GoogleDrive));
assertEquals(false, mDefaultSyncState.isMarkedForDeletion(SyncProvider.None));
}
@Test
public void getLastLocalModificationTime() {
assertEquals(mLastLocalModificationTime, mDefaultSyncState.getLastLocalModificationTime());
}
@Test
public void parcelEquality() {
final Parcel parcel = Parcel.obtain();
mDefaultSyncState.writeToParcel(parcel, 0);
parcel.setDataPosition(0);
final DefaultSyncState parceledSyncState = DefaultSyncState.CREATOR.createFromParcel(parcel);
assertNotNull(parceledSyncState);
assertEquals(parceledSyncState, mDefaultSyncState);
}
}