@Test public void testUnionMemberKeyMustNotBeIllegalJavaIdentifier() { ImmutableList.of("%foo", "foo@").forEach(key -> { FieldDefinition fieldDefinition = FieldDefinition.builder() .fieldName(FieldName.of(key)) .type(Type.primitive(PrimitiveType.STRING)) .build(); assertThatThrownBy(() -> UnionDefinitionValidator.validateAll(UnionDefinition.builder() .union(fieldDefinition) .typeName(TypeName.of("string", "")) .build())) .isInstanceOf(IllegalArgumentException.class) .hasMessageStartingWith( String.format("Union member key must be a valid Java identifier: %s", key)); }); }
public static TypeDefinition parseUnionType( TypeName name, com.palantir.conjure.parser.types.complex.UnionTypeDefinition def, ConjureTypeParserVisitor.ReferenceTypeResolver typeResolver) { UnionDefinition unionType = UnionDefinition.builder() .typeName(name) .union(parseField(def.union(), typeResolver)) .docs(def.docs().map(Documentation::of)) .build(); UnionDefinitionValidator.validateAll(unionType); return TypeDefinition.union(unionType); }
@Test public void testUnionMemberKeyMustNotHaveTrailingUnderscore() { FieldDefinition fieldDefinition = FieldDefinition.builder() .fieldName(FieldName.of("foo_")) .type(Type.primitive(PrimitiveType.STRING)) .build(); assertThatThrownBy(() -> UnionDefinitionValidator.validateAll(UnionDefinition.builder() .union(fieldDefinition) .typeName(TypeName.of("string", "")) .build())) .isInstanceOf(IllegalArgumentException.class) .hasMessageStartingWith("Union member key must not end with an underscore: foo_"); } }
@Test public void testUnionMemberKeyMustNotBeEmpty() { FieldDefinition fieldDefinition = FieldDefinition.builder() .fieldName(FieldName.of("")) .type(Type.primitive(PrimitiveType.STRING)) .build(); assertThatThrownBy(() -> UnionDefinitionValidator.validateAll(UnionDefinition.builder() .union(fieldDefinition) .typeName(TypeName.of("string", "")) .build())) .isInstanceOf(IllegalArgumentException.class) .hasMessageStartingWith("Union member key must not be empty"); }