@Before public void setup() { mSpecModel = mock(SpecModel.class); mStateModel = mock(StateParamModel.class); mPropModel = mock(PropModel.class); mDiffModel = mock(RenderDataDiffModel.class); mDiffRepresentedObject = new Object(); when(mSpecModel.getProps()).thenReturn(ImmutableList.<PropModel>of(mPropModel)); when(mSpecModel.getStateValues()).thenReturn(ImmutableList.of(mStateModel)); when(mSpecModel.getRenderDataDiffs()).thenReturn(ImmutableList.of(mDiffModel)); when(mStateModel.getName()).thenReturn("stateName"); when(mStateModel.getTypeName()).thenReturn(TypeName.INT); when(mPropModel.getName()).thenReturn("propName"); when(mPropModel.getTypeName()).thenReturn(TypeName.INT); when(mDiffModel.getName()).thenReturn("stateName"); when(mDiffModel.getTypeName()).thenReturn( ParameterizedTypeName.get(ClassNames.DIFF, TypeName.INT.box()) .annotated(AnnotationSpec.builder(State.class).build())); when(mDiffModel.getRepresentedObject()).thenReturn(mDiffRepresentedObject); when(mDiffModel.getAnnotations()).thenReturn(ImmutableList.of(annotation(State.class))); }
@Test public void testDiffModelHasDifferentParameterFromProp() { when(mDiffModel.getName()).thenReturn("propName"); when(mDiffModel.getTypeName()).thenReturn( ParameterizedTypeName.get(ClassNames.DIFF, TypeName.BOOLEAN.box()) .annotated(AnnotationSpec.builder(Prop.class).build())); when(mDiffModel.getAnnotations()).thenReturn(ImmutableList.of(annotation(Prop.class))); List<SpecModelValidationError> validationErrors = DiffValidation.validate(mSpecModel); assertSingleError(validationErrors, DiffValidation.PROP_MISMATCH_ERROR); }
@Test public void testDiffModelHasDifferentParameterFromState() { when(mDiffModel.getTypeName()).thenReturn( ParameterizedTypeName.get(ClassNames.DIFF, TypeName.BOOLEAN.box()) .annotated(AnnotationSpec.builder(State.class).build())); List<SpecModelValidationError> validationErrors = DiffValidation.validate(mSpecModel); assertSingleError(validationErrors, DiffValidation.STATE_MISMATCH_ERROR); }
@Test public void testNoErrorProp() { when(mDiffModel.getName()).thenReturn("propName"); when(mDiffModel.getTypeName()).thenReturn( ParameterizedTypeName.get(ClassNames.DIFF, TypeName.INT.box()) .annotated(AnnotationSpec.builder(Prop.class).build())); when(mDiffModel.getAnnotations()).thenReturn(ImmutableList.of(annotation(Prop.class))); List<SpecModelValidationError> validationErrors = DiffValidation.validate(mSpecModel); assertThat(validationErrors).hasSize(0); }