package org.robobinding; import static org.junit.Assert.fail; import static org.robobinding.ViewInflationErrorsExpectation.aBindingViewInflationErrorExpectationOf; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robobinding.binder.BinderFactory; import org.robobinding.binder.BinderFactoryBuilder; import org.robobinding.binder.ViewHierarchyInflationErrorsException; import org.robobinding.robolectric.DefaultTestRunner; import org.robolectric.RuntimeEnvironment; import android.widget.Button; import android.widget.ListView; import android.widget.Spinner; /** * * @since 1.0 * @version $Revision: 1.0 $ * @author Cheng Wei */ @RunWith(DefaultTestRunner.class) public class ErrorReportingTest { private BinderFactory binderFactory; @Before public void setUp() { BinderFactoryBuilder binder = new BinderFactoryBuilder(); binderFactory = binder.build(); } @Test public void whenInflateAndBindSample1_thenThrowsExpectedErrors() { ViewBinder viewBinder = binderFactory.createViewBinder(RuntimeEnvironment.application); try{ viewBinder.inflateAndBind(R.layout.error_reporting_sample1, new Sample1PresentationModel()); fail("Expect an exception thrown"); }catch(ViewHierarchyInflationErrorsException bindingViewInflationErrors) { ViewInflationErrorsExpectations expectations = createSample1ErrorsExpectations(); expectations.meet(bindingViewInflationErrors); } } private ViewInflationErrorsExpectations createSample1ErrorsExpectations() { ViewInflationErrorsExpectations inflationErrorsExpectations = new ViewInflationErrorsExpectations(); ViewInflationErrorsExpectation buttonExpectation = aBindingViewInflationErrorExpectationOf(Button.class) .withAttributeResolutionErrorOf("text") .withAttributeResolutionErrorOf("nonExistingAttribute") .withAttributeBindingErrorOf("visibility") .build(); inflationErrorsExpectations.add(buttonExpectation); ViewInflationErrorsExpectation listViewExpectation = aBindingViewInflationErrorExpectationOf(ListView.class) .withAttributeResolutionErrorOf("visibility") .withAttributeBindingErrorOf("itemLayout") .build(); inflationErrorsExpectations.add(listViewExpectation); ViewInflationErrorsExpectation spinnerExpectation = aBindingViewInflationErrorExpectationOf(Spinner.class) .withAttributeResolutionErrorOf("visibility") .withMissingRequiredAttributesResolutionErrorOf("source", "dropdownLayout") .build(); inflationErrorsExpectations.add(spinnerExpectation); return inflationErrorsExpectations; } }