@@ -8,107 +8,60 @@ use ed25519_dalek::ed25519::signature::Signer;
88use  test_case:: test_case; 
99
1010use  crate :: common:: { 
11-  create_dummy_key_pair, 
11+  brand_parameters_doc ,  campaign_parameters_doc ,  category_parameters_doc ,   create_dummy_key_pair, 
1212 dummies:: { 
1313 BRAND_PARAMETERS_DOC ,  CAMPAIGN_PARAMETERS_DOC ,  CATEGORY_PARAMETERS_DOC , 
1414 PROPOSAL_TEMPLATE_FOR_BRAND_DOC ,  PROPOSAL_TEMPLATE_FOR_CAMPAIGN_DOC , 
1515 PROPOSAL_TEMPLATE_FOR_CATEGORY_DOC , 
1616 } , 
17+  proposal_doc,  proposal_form_template_doc, 
1718} ; 
1819
1920mod  common; 
2021
2122#[ test_case(  
2223 |provider| {  
23-  let  id = UuidV7 :: new( ) ;  
24-  let  ( sk,  pk,  kid)  = create_dummy_key_pair( RoleId :: Proposer ) ?;  
25-  provider. add_pk( kid. clone( ) ,  pk) ;  
26-  // Create a main proposal doc, contain all fields mention in the document (except  
27-  // 'collaborators' and 'revocations')  
28-  let  doc = Builder :: new( )  
29-  . with_json_metadata( serde_json:: json!( {  
30-  "content-type" :  ContentType :: Json . to_string( ) ,  
31-  "content-encoding" :  ContentEncoding :: Brotli . to_string( ) ,  
32-  "type" :  doc_types:: PROPOSAL . clone( ) ,  
33-  "id" :  id,  
34-  "ver" :  id,  
35-  "template" :  {  
36-  "id" :  PROPOSAL_TEMPLATE_FOR_BRAND_DOC . doc_id( ) ?,  
37-  "ver" :  PROPOSAL_TEMPLATE_FOR_BRAND_DOC . doc_ver( ) ?,  
38-  } ,  
39-  "parameters" :  {  
40-  "id" :  BRAND_PARAMETERS_DOC . doc_id( ) ?,  
41-  "ver" :  BRAND_PARAMETERS_DOC . doc_ver( ) ?,  
42-  }  
43-  } ) ) ? 
44-  . with_json_content( & serde_json:: json!( { } ) ) ? 
45-  . add_signature( |m| sk. sign( & m) . to_vec( ) ,  kid) ? 
46-  . build( ) ?;  
47-  Ok ( doc)  
24+  let  brand_parameters_doc = brand_parameters_doc( ) . and_then( |doc| {  
25+  provider. add_document( None ,  & doc) ?;  
26+  Ok ( doc)  
27+  } ) ?;  
28+  let  proposal_form_template_doc = proposal_form_template_doc( & brand_parameters_doc) . and_then( |doc| {  
29+  provider. add_document( None ,  & doc) ?;  
30+  Ok ( doc)  
31+  } ) ?;  
32+  proposal_doc( & proposal_form_template_doc,  & brand_parameters_doc,  provider)  
4833 }  
4934 => true  
5035 ;  
5136 "valid document with brand 'parameters'"  
5237) ] 
5338#[ test_case(  
5439 |provider| {  
55-  let  id = UuidV7 :: new( ) ;  
56-  let  ( sk,  pk,  kid)  = create_dummy_key_pair( RoleId :: Proposer ) ?;  
57-  provider. add_pk( kid. clone( ) ,  pk) ;  
58-  // Create a main proposal doc, contain all fields mention in the document (except  
59-  // 'collaborators' and 'revocations')  
60-  let  doc = Builder :: new( )  
61-  . with_json_metadata( serde_json:: json!( {  
62-  "content-type" :  ContentType :: Json . to_string( ) ,  
63-  "content-encoding" :  ContentEncoding :: Brotli . to_string( ) ,  
64-  "type" :  doc_types:: PROPOSAL . clone( ) ,  
65-  "id" :  id,  
66-  "ver" :  id,  
67-  "template" :  {  
68-  "id" :  PROPOSAL_TEMPLATE_FOR_CAMPAIGN_DOC . doc_id( ) ?,  
69-  "ver" :  PROPOSAL_TEMPLATE_FOR_CAMPAIGN_DOC . doc_ver( ) ?,  
70-  } ,  
71-  "parameters" :  {  
72-  "id" :  CAMPAIGN_PARAMETERS_DOC . doc_id( ) ?,  
73-  "ver" :  CAMPAIGN_PARAMETERS_DOC . doc_ver( ) ?,  
74-  }  
75-  } ) ) ? 
76-  . with_json_content( & serde_json:: json!( { } ) ) ? 
77-  . add_signature( |m| sk. sign( & m) . to_vec( ) ,  kid) ? 
78-  . build( ) ?;  
79-  Ok ( doc)  
40+  let  parameters_doc = campaign_parameters_doc( ) . and_then( |doc| {  
41+  provider. add_document( None ,  & doc) ?;  
42+  Ok ( doc)  
43+  } ) ?;  
44+  let  template_doc = proposal_form_template_doc( & parameters_doc) . and_then( |doc| {  
45+  provider. add_document( None ,  & doc) ?;  
46+  Ok ( doc)  
47+  } ) ?;  
48+  proposal_doc( & template_doc,  & parameters_doc,  provider)  
8049 }  
8150 => true  
8251 ;  
8352 "valid document with campaign 'parameters'"  
8453) ] 
8554#[ test_case(  
8655 |provider| {  
87-  let  id = UuidV7 :: new( ) ;  
88-  let  ( sk,  pk,  kid)  = create_dummy_key_pair( RoleId :: Proposer ) ?;  
89-  provider. add_pk( kid. clone( ) ,  pk) ;  
90-  // Create a main proposal doc, contain all fields mention in the document (except  
91-  // 'collaborators' and 'revocations')  
92-  let  doc = Builder :: new( )  
93-  . with_json_metadata( serde_json:: json!( {  
94-  "content-type" :  ContentType :: Json . to_string( ) ,  
95-  "content-encoding" :  ContentEncoding :: Brotli . to_string( ) ,  
96-  "type" :  doc_types:: PROPOSAL . clone( ) ,  
97-  "id" :  id,  
98-  "ver" :  id,  
99-  "template" :  {  
100-  "id" :  PROPOSAL_TEMPLATE_FOR_CATEGORY_DOC . doc_id( ) ?,  
101-  "ver" :  PROPOSAL_TEMPLATE_FOR_CATEGORY_DOC . doc_ver( ) ?,  
102-  } ,  
103-  "parameters" :  {  
104-  "id" :  CATEGORY_PARAMETERS_DOC . doc_id( ) ?,  
105-  "ver" :  CATEGORY_PARAMETERS_DOC . doc_ver( ) ?,  
106-  }  
107-  } ) ) ? 
108-  . with_json_content( & serde_json:: json!( { } ) ) ? 
109-  . add_signature( |m| sk. sign( & m) . to_vec( ) ,  kid) ? 
110-  . build( ) ?;  
111-  Ok ( doc)  
56+  let  parameters_doc = category_parameters_doc( ) . and_then( |doc| {  
57+  provider. add_document( None ,  & doc) ?;  
58+  Ok ( doc)  
59+  } ) ?;  
60+  let  template_doc = proposal_form_template_doc( & parameters_doc) . and_then( |doc| {  
61+  provider. add_document( None ,  & doc) ?;  
62+  Ok ( doc)  
63+  } ) ?;  
64+  proposal_doc( & template_doc,  & parameters_doc,  provider)  
11265 }  
11366 => true  
11467 ;  
0 commit comments