diff --git a/packages/rs-dpp/src/data_contract/v0/methods/schema.rs b/packages/rs-dpp/src/data_contract/v0/methods/schema.rs index 4ca959edc63..c08137267bc 100644 --- a/packages/rs-dpp/src/data_contract/v0/methods/schema.rs +++ b/packages/rs-dpp/src/data_contract/v0/methods/schema.rs @@ -161,6 +161,7 @@ mod test { assert_eq!(defs_map.as_ref(), data_contract.schema_defs()) } + #[test] fn should_set_empty_schema_defs() { let platform_version = PlatformVersion::latest(); @@ -175,13 +176,25 @@ mod test { let defs_map = Some(defs.into_btree_string_map().expect("should convert to map")); + let schema = platform_value!({ + "type": "object", + "properties": { + "a": { + "type": "string", + "maxLength": 10, + "position": 0 + } + }, + "additionalProperties": false, + }); + let serialization_format = DataContractInSerializationFormatV0 { id: Identifier::random(), config, version: 0, owner_id: Default::default(), schema_defs: defs_map, - document_schemas: Default::default(), + document_schemas: BTreeMap::from([("document_type_name".to_string(), schema)]), }; let mut data_contract = DataContractV0::try_from_platform_versioned( @@ -196,6 +209,11 @@ mod test { .set_schema_defs(None, true, &mut vec![], platform_version) .expect("should set defs"); - assert_eq!(None, data_contract.schema_defs()) + assert_eq!(None, data_contract.schema_defs()); + assert_eq!( + 1, + data_contract.document_types().len(), + "document types should be preserved after clearing schema defs" + ); } } diff --git a/packages/rs-dpp/src/data_contract/v1/methods/schema.rs b/packages/rs-dpp/src/data_contract/v1/methods/schema.rs index 00d4e0cd679..5b163d45c04 100644 --- a/packages/rs-dpp/src/data_contract/v1/methods/schema.rs +++ b/packages/rs-dpp/src/data_contract/v1/methods/schema.rs @@ -161,6 +161,7 @@ mod test { assert_eq!(defs_map.as_ref(), data_contract.schema_defs()) } + #[test] fn should_set_empty_schema_defs() { let platform_version = PlatformVersion::latest(); @@ -175,13 +176,25 @@ mod test { let defs_map = Some(defs.into_btree_string_map().expect("should convert to map")); + let schema = platform_value!({ + "type": "object", + "properties": { + "a": { + "type": "string", + "maxLength": 10, + "position": 0 + } + }, + "additionalProperties": false, + }); + let serialization_format = DataContractInSerializationFormatV0 { id: Identifier::random(), config, version: 0, owner_id: Default::default(), schema_defs: defs_map, - document_schemas: Default::default(), + document_schemas: BTreeMap::from([("document_type_name".to_string(), schema)]), }; let mut data_contract = DataContractV1::try_from_platform_versioned( @@ -196,6 +209,11 @@ mod test { .set_schema_defs(None, true, &mut vec![], platform_version) .expect("should set defs"); - assert_eq!(None, data_contract.schema_defs()) + assert_eq!(None, data_contract.schema_defs()); + assert_eq!( + 1, + data_contract.document_types().len(), + "document types should be preserved after clearing schema defs" + ); } }