in components/search/src/selector.rs [804:1081]
fn test_filter_engine_configuration_handles_basic_subvariants() {
let selector = Arc::new(SearchEngineSelector::new());
let config_overrides_result = Arc::clone(&selector).set_config_overrides(
json!({
"data": [
{
"identifier": "overrides-engine",
"partnerCode": "overrides-partner-code",
"clickUrl": "https://example.com/click-url",
"telemetrySuffix": "overrides-telemetry-suffix",
"urls": {
"search": {
"base": "https://example.com/search-overrides",
"method": "GET",
"params": []
}
}
}
]
})
.to_string(),
);
let config_result = Arc::clone(&selector).set_search_config(
json!({
"data": [
{
"recordType": "engine",
"identifier": "test1",
"base": {
"name": "Test 1",
"partnerCode": "star",
"urls": {
"search": {
"base": "https://example.com/1",
"method": "GET",
"searchTermParamName": "q"
},
"suggestions": {
"base": "https://example.com/suggestions",
"method": "POST",
"params": [{
"name": "type",
"value": "space",
}],
"searchTermParamName": "suggest"
},
"trending": {
"base": "https://example.com/trending",
"method": "GET",
"params": [{
"name": "area",
"experimentConfig": "area-param",
}]
},
"searchForm": {
"base": "https://example.com/search-form",
"method": "GET",
"params": [{
"name": "search-form-name",
"value": "search-form-value",
}]
}
}
},
"variants": [{
"environment": {
"allRegionsAndLocales": true
},
},
{
"environment": {
"regions": ["FR"]
},
"urls": {
"search": {
"method": "POST",
"params": [{
"name": "variant-param-name",
"value": "variant-param-value"
}]
}
},
"subVariants": [
{
"environment": {
"locales": ["fr"]
},
"partnerCode": "fr-partner-code",
"telemetrySuffix": "fr-telemetry-suffix"
},
{
"environment": {
"locales": ["en-CA"]
},
"urls": {
"search": {
"method": "GET",
"params": [{
"name": "en-ca-param-name",
"value": "en-ca-param-value"
}]
}
},
}
]
}],
},
{
"recordType": "defaultEngines",
"globalDefault": "test1"
},
{
"recordType": "availableLocales",
"locales": ["en-CA", "fr"]
}
]
})
.to_string(),
);
assert!(
config_result.is_ok(),
"Should have set the configuration successfully. {:?}",
config_result
);
assert!(
config_overrides_result.is_ok(),
"Should have set the configuration overrides successfully. {:?}",
config_overrides_result
);
let mut result = Arc::clone(&selector).filter_engine_configuration(SearchUserEnvironment {
region: "FR".into(),
locale: "fr".into(),
..Default::default()
});
assert!(
result.is_ok(),
"Should have filtered the configuration without error. {:?}",
result
);
assert_eq!(
result.unwrap(),
RefinedSearchConfig {
engines: vec!(SearchEngineDefinition {
charset: "UTF-8".to_string(),
identifier: "test1".to_string(),
name: "Test 1".to_string(),
partner_code: "fr-partner-code".to_string(),
telemetry_suffix: "fr-telemetry-suffix".to_string(),
urls: SearchEngineUrls {
search: SearchEngineUrl {
base: "https://example.com/1".to_string(),
method: "POST".to_string(),
params: vec![SearchUrlParam {
name: "variant-param-name".to_string(),
value: Some("variant-param-value".to_string()),
enterprise_value: None,
experiment_config: None
}],
search_term_param_name: Some("q".to_string())
},
suggestions: Some(SearchEngineUrl {
base: "https://example.com/suggestions".to_string(),
method: "POST".to_string(),
params: vec![SearchUrlParam {
name: "type".to_string(),
value: Some("space".to_string()),
enterprise_value: None,
experiment_config: None
}],
search_term_param_name: Some("suggest".to_string())
}),
trending: Some(SearchEngineUrl {
base: "https://example.com/trending".to_string(),
method: "GET".to_string(),
params: vec![SearchUrlParam {
name: "area".to_string(),
value: None,
enterprise_value: None,
experiment_config: Some("area-param".to_string())
}],
search_term_param_name: None
}),
search_form: Some(SearchEngineUrl {
base: "https://example.com/search-form".to_string(),
method: "GET".to_string(),
params: vec![SearchUrlParam {
name: "search-form-name".to_string(),
value: Some("search-form-value".to_string()),
enterprise_value: None,
experiment_config: None,
}],
search_term_param_name: None,
}),
},
..Default::default()
}),
app_default_engine_id: Some("test1".to_string()),
app_private_default_engine_id: None
},
"Should have correctly matched and merged the fr locale sub-variant."
);
result = selector.filter_engine_configuration(SearchUserEnvironment {
region: "FR".into(),
locale: "en-CA".into(),
..Default::default()
});
assert!(
result.is_ok(),
"Should have filtered the configuration without error. {:?}",
result
);
assert_eq!(
result.unwrap(),
RefinedSearchConfig {
engines: vec!(SearchEngineDefinition {
charset: "UTF-8".to_string(),
identifier: "test1".to_string(),
name: "Test 1".to_string(),
partner_code: "star".to_string(),
urls: SearchEngineUrls {
search: SearchEngineUrl {
base: "https://example.com/1".to_string(),
method: "GET".to_string(),
params: vec![SearchUrlParam {
name: "en-ca-param-name".to_string(),
value: Some("en-ca-param-value".to_string()),
enterprise_value: None,
experiment_config: None
}],
search_term_param_name: Some("q".to_string())
},
suggestions: Some(SearchEngineUrl {
base: "https://example.com/suggestions".to_string(),
method: "POST".to_string(),
params: vec![SearchUrlParam {
name: "type".to_string(),
value: Some("space".to_string()),
enterprise_value: None,
experiment_config: None
}],
search_term_param_name: Some("suggest".to_string())
}),
trending: Some(SearchEngineUrl {
base: "https://example.com/trending".to_string(),
method: "GET".to_string(),
params: vec![SearchUrlParam {
name: "area".to_string(),
value: None,
enterprise_value: None,
experiment_config: Some("area-param".to_string())
}],
search_term_param_name: None
}),
search_form: Some(SearchEngineUrl {
base: "https://example.com/search-form".to_string(),
method: "GET".to_string(),
params: vec![SearchUrlParam {
name: "search-form-name".to_string(),
value: Some("search-form-value".to_string()),
enterprise_value: None,
experiment_config: None,
}],
search_term_param_name: None,
}),
},
..Default::default()
}),
app_default_engine_id: Some("test1".to_string()),
app_private_default_engine_id: None
},
"Should have correctly matched and merged the en-CA locale sub-variant."
);
}