@Test public void operationParameterWithFlowReferenceParameter() { OperationModel operation = configuration.getOperationModel("withFlowReference").get(); assertThat(operation.getAllParameterModels(), hasSize(3)); ParameterModel param = operation.getAllParameterModels().get(0); List<StereotypeModel> stereotypes = param.getAllowedStereotypes(); assertThat(stereotypes, hasSize(1)); assertThat(stereotypes.get(0), is(FLOW)); }
@Test public void operationAttributesAreNotValidated() { when(operationModel.getAllParameterModels()).thenReturn(emptyList()); when(outputModel.getType()).thenReturn(toMetadataType(PojoWithParameterWithoutGetter.class)); when(operationModel.getOutput()).thenReturn(outputModel); when(operationModel.getOutputAttributes()).thenReturn(outputModel); }
@Test public void flowRef() { final OperationModel flowRefModel = coreExtensionModel.getOperationModel("flowRef").get(); assertThat(flowRefModel.getStereotype(), is(PROCESSOR)); assertAssociatedProcessorsChangeOutput(flowRefModel); assertThat(flowRefModel.getAllParameterModels(), hasSize(3)); assertThat(flowRefModel.getAllParameterModels().get(0).getName(), is("name")); assertThat(flowRefModel.getAllParameterModels().get(0).getExpressionSupport(), is(NOT_SUPPORTED)); assertThat(flowRefModel.getAllParameterModels().get(0).getType(), instanceOf(DefaultStringType.class)); assertThat(flowRefModel.getAllParameterModels().get(0).isRequired(), is(true)); assertTarget(flowRefModel.getAllParameterModels().get(1)); }
@Test public void operationOutputIsNotValidated() { when(operationModel.getAllParameterModels()).thenReturn(emptyList()); when(operationModel.getOutput()).thenReturn(outputModel); when(outputModel.getType()).thenReturn(toMetadataType(PojoWithParameterWithoutGetter.class)); validate(extensionModel, validator); }
private void validateOperationParameterOfType(MetadataType operationParameterType) { when(invalidParameterModel.getType()).thenReturn(operationParameterType); when(invalidParameterModel.getName()).thenReturn("pojos"); when(operationModel.getAllParameterModels()).thenReturn(asList(invalidParameterModel)); SubTypesModel subTypesModel = new SubTypesModel(toMetadataType(BaseType.class), ImmutableSet .of(toMetadataType(PojoWithParameterWithoutGetter.class), toMetadataType(PojoWithParameterWithGetter.class))); when(extensionModel.getSubTypes()).thenReturn(ImmutableSet.of(subTypesModel)); validate(extensionModel, validator); }
@Test public void listSingularizeClashOnConnectionProvider() { String clashingName = CHILD_PLURAL_PARAM_NAME + CONNECTION_PROVIDER_SUFFIX; exception.expect(IllegalModelDefinitionException.class); when(connectionProviderModel.getName()).thenReturn(clashingName); ParameterModel offending = getParameter(clashingName, childTestList); when(operationModel.getAllParameterModels()).thenReturn(asList(offending)); validate(); }
@Test public void listSingularizeClashOnOperation() { exception.expect(IllegalModelDefinitionException.class); when(operationModel.getName()).thenReturn(CHILD_SINGULAR_PARAM_NAME); ParameterModel offending = getParameter(CHILD_PLURAL_PARAM_NAME, childTestList); when(operationModel.getAllParameterModels()).thenReturn(asList(offending)); validate(); }
@Test public void listSingularizeClashOnParameterSameType() { ParameterModel offending = getParameter(CHILD_PLURAL_PARAM_NAME, childTestList); ParameterModel singular = getParameter(CHILD_SINGULAR_PARAM_NAME, ChildTest.class); when(operationModel.getAllParameterModels()).thenReturn(asList(singular, offending)); validate(); }
@Test public void mapSingularizeClashOnParameterSameType() { ParameterModel offending = getParameter(CHILD_PLURAL_PARAM_NAME, childTestMap); ParameterModel singular = getParameter(CHILD_SINGULAR_PARAM_NAME, ChildTest.class); when(operationModel.getAllParameterModels()).thenReturn(asList(singular, offending)); validate(); }
@Test public void mapSingularizeClashOnOperation() { exception.expect(IllegalModelDefinitionException.class); when(operationModel.getName()).thenReturn(CHILD_SINGULAR_PARAM_NAME); ParameterModel offending = getParameter(CHILD_PLURAL_PARAM_NAME, childTestMap); when(operationModel.getAllParameterModels()).thenReturn(asList(offending)); validate(); }
@Test public void mapSingularizeClashOnConnectionProvider() { exception.expect(IllegalModelDefinitionException.class); String clashingName = CHILD_PLURAL_PARAM_NAME + CONNECTION_PROVIDER_SUFFIX; when(connectionProviderModel.getName()).thenReturn(clashingName); ParameterModel offending = getParameter(clashingName, childTestMap); when(operationModel.getAllParameterModels()).thenReturn(asList(offending)); validate(); }
@Test public void contentParametersWithSameNameAndTypeButDifferentRole() { exception.expect(IllegalModelDefinitionException.class); ParameterModel firstParam = getParameter(CHILD_SINGULAR_PARAM_NAME, TopLevelTest.class); when(firstParam.getRole()).thenReturn(PRIMARY_CONTENT); ParameterModel secondParam = getParameter(CHILD_SINGULAR_PARAM_NAME, TopLevelTest.class); when(secondParam.getRole()).thenReturn(BEHAVIOUR); when(operationModel.getAllParameterModels()).thenReturn(asList(firstParam)); when(sourceModel.getAllParameterModels()).thenReturn(asList(secondParam)); validate(); }
@Test public void operationTopLevelParameterCrashesWithOperationName() { exception.expect(IllegalModelDefinitionException.class); ParameterModel offending = getParameter(OPERATION_NAME, TopLevelTest.class); when(operationModel.getAllParameterModels()).thenReturn(asList(simpleOperationParam, topLevelOperationParam, offending)); validate(); }
@Test public void repeatedChildElementSupportNameAndSource() { exception.expect(IllegalModelDefinitionException.class); when(sourceModel.getName()).thenReturn(REPEATED_NAME); ParameterModel param = getParameter(UNIQUE_PARAM_NAME, ChildElementTest.class); when(param.getRole()).thenReturn(BEHAVIOUR); when(operationModel.getAllParameterModels()).thenReturn(asList(param)); mockParameterGroup(operationModel, asList(param)); validate(); }
@Test public void customTypeInput() throws Exception { OperationModel o = getOperation("customTypeInput"); ParameterModel param = o.getAllParameterModels().get(0); assertCustomJsonType(param); }
@Test public void withInputJsonType() throws Exception { OperationModel o = getOperation("jsonInputStream"); ParameterModel param = o.getAllParameterModels().get(0); assertJsonPerson(param); }
@Test public void repeatedChildElementSupportNameAndChildElementSupportDifferentType() { exception.expect(IllegalModelDefinitionException.class); ParameterModel firstParam = getParameter(UNIQUE_PARAM_NAME + "1", ChildElementTest.class); ParameterModel secondParam = getParameter(UNIQUE_PARAM_NAME + "2", ChildElementTestClone.class); when(firstParam.getRole()).thenReturn(BEHAVIOUR); when(secondParam.getRole()).thenReturn(BEHAVIOUR); when(operationModel.getAllParameterModels()).thenReturn(asList(firstParam, secondParam)); mockParameterGroup(operationModel, asList(firstParam, secondParam)); validate(); }
@Test public void listSingularizeClashOnTopLevelParameterDifferentType() { exception.expect(IllegalModelDefinitionException.class); ParameterModel offending = getParameter(CHILD_PLURAL_PARAM_NAME, childTestList); ParameterModel singular = getParameter(CHILD_SINGULAR_PARAM_NAME, TopLevelTest.class); when(operationModel.getAllParameterModels()).thenReturn(asList(singular, offending)); validate(); }
@Test public void mapSingularizeClashOnTopLevelParameterDifferentType() { exception.expect(IllegalModelDefinitionException.class); ParameterModel offending = getParameter(CHILD_PLURAL_PARAM_NAME, childTestMap); ParameterModel singular = getParameter(CHILD_SINGULAR_PARAM_NAME, TopLevelTest.class); when(operationModel.getAllParameterModels()).thenReturn(asList(singular, offending)); validate(); }
@Test public void connectionProviderNameClashesWithOperationParameterName() { String clashingName = SIMPLE_PARAM_NAME + CONNECTION_PROVIDER_SUFFIX; exception.expect(IllegalModelDefinitionException.class); exception.expectMessage(format( "Extension '%s' has a connection provider named '%s' and an operation named operation with an argument type named equally.", extensionModel.getName(), hyphenize(clashingName))); ParameterModel offending = getParameter(clashingName, ChildTest.class); when(connectionProviderModel.getName()).thenReturn(clashingName); when(operationModel.getAllParameterModels()).thenReturn(asList(topLevelOperationParam, offending)); validate(); }