package com.nilhcem.droidconat.data.app.model;

import android.os.Build;
import android.os.Parcel;

import com.nilhcem.droidconat.BuildConfig;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricGradleTestRunner;
import org.robolectric.annotation.Config;
import org.threeten.bp.LocalDateTime;

import java.util.List;

import static com.google.common.truth.Truth.assertThat;
import static java.util.Collections.singletonList;

@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.LOLLIPOP)
public class SessionTest {

    @Test
    public void should_restore_from_parcelable() {
        // Given
        List<Speaker> speakers = singletonList(new Speaker(1, null, null, null, null, null, null, null));
        LocalDateTime fromTime = LocalDateTime.now().minusDays(1);
        LocalDateTime toTime = fromTime.plusMinutes(45);
        Session session = new Session(42, "ROOM1", speakers, "TITLE", "DESCRIPTION", fromTime, toTime);

        // When
        Parcel parcel = Parcel.obtain();
        session.writeToParcel(parcel, 0);
        parcel.setDataPosition(0);
        Session fromParcel = Session.CREATOR.createFromParcel(parcel);

        // Then
        assertThat(fromParcel.getId()).isEqualTo(42);
        assertThat(fromParcel.getRoom()).isEqualTo("ROOM1");
        assertThat(fromParcel.getSpeakers()).hasSize(1);
        assertThat(fromParcel.getTitle()).isEqualTo("TITLE");
        assertThat(fromParcel.getDescription()).isEqualTo("DESCRIPTION");
        assertThat(fromParcel.getFromTime()).isEqualTo(fromTime);
        assertThat(fromParcel.getToTime()).isEqualTo(toTime);
    }
}