use super :: *;
#[ test ]
fn parameter_descriptor_stores_name()
{
let param = ParameterDescriptor
{
parameter: "project_name".into(),
is_mandatory: false,
default_value: None,
description: None,
};
assert_eq!( param.parameter, "project_name" );
assert!( !param.parameter.is_empty() );
}
#[ test ]
fn parameter_descriptor_mandatory_flag()
{
let mandatory = ParameterDescriptor
{
parameter: "required_param".into(),
is_mandatory: true,
default_value: None,
description: None,
};
let optional = ParameterDescriptor
{
parameter: "optional_param".into(),
is_mandatory: false,
default_value: None,
description: None,
};
assert!( mandatory.is_mandatory );
assert!( !optional.is_mandatory );
}
#[ test ]
fn parameter_descriptor_default_value()
{
let with_default = ParameterDescriptor
{
parameter: "region".into(),
is_mandatory: false,
default_value: Some( "us-east-1".into() ),
description: None,
};
assert!( with_default.default_value.is_some() );
assert_eq!( with_default.default_value.unwrap(), "us-east-1" );
}
#[ test ]
fn parameter_descriptor_description()
{
let with_desc = ParameterDescriptor
{
parameter: "api_key".into(),
is_mandatory: false,
default_value: None,
description: Some( "API key for authentication".into() ),
};
assert!( with_desc.description.is_some() );
assert_eq!( with_desc.description.unwrap(), "API key for authentication" );
}
#[ test ]
fn parameters_collection_stores_multiple()
{
let params = Parameters
{
descriptors: vec!
[
ParameterDescriptor
{
parameter: "name".into(),
is_mandatory: true,
default_value: None,
description: None,
},
ParameterDescriptor
{
parameter: "version".into(),
is_mandatory: true,
default_value: None,
description: None,
},
ParameterDescriptor
{
parameter: "description".into(),
is_mandatory: false,
default_value: None,
description: None,
},
],
};
assert_eq!( params.descriptors.len(), 3 );
}
#[ test ]
fn parameters_list_mandatory()
{
let params = Parameters
{
descriptors: vec!
[
ParameterDescriptor
{
parameter: "name".into(),
is_mandatory: true,
default_value: None,
description: None,
},
ParameterDescriptor
{
parameter: "url".into(),
is_mandatory: true,
default_value: None,
description: None,
},
ParameterDescriptor
{
parameter: "description".into(),
is_mandatory: false,
default_value: None,
description: None,
},
ParameterDescriptor
{
parameter: "tags".into(),
is_mandatory: false,
default_value: None,
description: None,
},
],
};
let mandatory = params.list_mandatory();
assert_eq!( mandatory.len(), 2 );
assert!( mandatory.contains( &"name" ) );
assert!( mandatory.contains( &"url" ) );
assert!( !mandatory.contains( &"description" ) );
assert!( !mandatory.contains( &"tags" ) );
}