diff --git a/schema_salad/tests/basket.yml b/schema_salad/tests/basket.yml index bd8efc72..a0732d6d 100644 --- a/schema_salad/tests/basket.yml +++ b/schema_salad/tests/basket.yml @@ -1,9 +1,9 @@ -# N.B.: this example is used in a test that needs a file without $base, -# so please do not include $base here. -- name: Basket - doc: A basket of products. - type: record - documentRoot: true - fields: - product: string - price: float +basket: + - product: bananas + price: 0.39 + per: pound + weight: 1 + - product: cucumbers + price: 0.79 + per: item + count: 3 diff --git a/schema_salad/tests/basket_schema.yml b/schema_salad/tests/basket_schema.yml new file mode 100644 index 00000000..49de95b5 --- /dev/null +++ b/schema_salad/tests/basket_schema.yml @@ -0,0 +1,54 @@ +# N.B.: this example is used in a test that needs a file without $base, +# so please do not include $base here. +- name: Product + doc: | + The base type for a product. This is an abstract type, so it + can't be used directly, but can be used to define other types. + type: record + abstract: true + fields: + product: string + price: float + +- name: ByWeight + doc: | + A product, sold by weight. Products may be sold by pound or by + kilogram. Weights may be fractional. + type: record + extends: Product + fields: + per: + type: + type: enum + symbols: + - pound + - kilogram + jsonldPredicate: "#per" + weight: float + +- name: ByCount + doc: | + A product, sold by count. The count must be a integer value. + type: record + extends: Product + fields: + per: + type: + type: enum + symbols: + - item + jsonldPredicate: "#per" + count: int + +- name: Basket + doc: | + A basket of products. The 'documentRoot' field indicates it is a + valid starting point for a document. The 'basket' field will + validate subtypes of 'Product' (ByWeight and ByCount). + type: record + documentRoot: true + fields: + basket: + type: + type: array + items: Product diff --git a/schema_salad/tests/util.py b/schema_salad/tests/util.py index 13b9548b..9eab36ce 100644 --- a/schema_salad/tests/util.py +++ b/schema_salad/tests/util.py @@ -40,4 +40,4 @@ def get_data_uri(resource_path: str) -> str: cwl_file_uri = get_data_uri("tests/test_schema/CommonWorkflowLanguage.yml") metaschema_file_uri = get_data_uri("metaschema/metaschema.yml") -basket_file_uri = get_data_uri("basket.yml") +basket_file_uri = get_data_uri("tests/basket_schema.yml")