package com.airbnb.epoxy;
import com.airbnb.epoxy.autoaddautomodels.ControllerWithImplicitlyAddedModels;
import com.airbnb.epoxy.autoaddautomodels.ControllerWithImplicitlyAddedModels2;
import com.airbnb.epoxy.autoaddautomodels.ControllerWithImplicitlyAddedModels3;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.assertEquals;
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
public class AutoModelIntegrationTest {
@Test
public void basicAutoModels() {
BasicAutoModelsAdapter controller = new BasicAutoModelsAdapter();
controller.requestModelBuild();
List<EpoxyModel<?>> models = controller.getAdapter().getCopyOfModels();
assertEquals("Models size", 2, models.size());
assertEquals("First model", Model_.class, models.get(0).getClass());
assertEquals("Second model", Model_.class, models.get(1).getClass());
}
@Test(expected = IllegalStateException.class)
public void assigningValueToFieldFails() {
AdapterWithFieldAssigned testAdapter = new AdapterWithFieldAssigned();
testAdapter.requestModelBuild();
}
@Test(expected = IllegalStateException.class)
public void assigningIdToAutoModelFails() {
AdapterWithIdChanged testAdapter = new AdapterWithIdChanged();
testAdapter.requestModelBuild();
}
@Test
public void implicitlyAddingAutoModelsDisabledByDefault() {
ControllerWithoutImplicityAdding controller = new ControllerWithoutImplicityAdding();
controller.requestModelBuild();
assertEquals(new ArrayList<>(), controller.getAdapter().getCopyOfModels());
}
@Test
public void implicitlyAddingAutoModels() {
ControllerWithImplicitlyAddedModels controller = new ControllerWithImplicitlyAddedModels();
controller.requestModelBuild();
assertEquals(controller.getExpectedModels(), controller.getAdapter().getCopyOfModels());
}
@Test
public void implicitlyAddingAutoModels2() {
ControllerWithImplicitlyAddedModels2 controller = new ControllerWithImplicitlyAddedModels2();
controller.requestModelBuild();
assertEquals(controller.getExpectedModels(), controller.getAdapter().getCopyOfModels());
}
@Test
public void implicitlyAddingAutoModels3() {
ControllerWithImplicitlyAddedModels3 controller = new ControllerWithImplicitlyAddedModels3();
controller.requestModelBuild();
assertEquals(controller.getExpectedModels(), controller.getAdapter().getCopyOfModels());
}
}