smarty_rust_sdk/international_postal_code_api/
mod.rs1pub mod candidate;
2pub mod client;
3pub mod lookup;
4
5#[cfg(test)]
6mod tests {
7 use crate::international_postal_code_api::candidate::Candidate;
8 use crate::international_postal_code_api::client::InternationalPostalCodeClient;
9 use crate::international_postal_code_api::lookup::Lookup;
10 use crate::sdk::options::OptionsBuilder;
11 use serde_json::from_str;
12
13 #[test]
14 fn client_test() {
15 let client = InternationalPostalCodeClient::new(OptionsBuilder::new(None).build()).unwrap();
16
17 assert_eq!(
18 client.client.url.to_string(),
19 "https://international-postal-code.api.smarty.com/lookup".to_string()
20 );
21 }
22
23 #[test]
24 fn lookup_test() {
25 let lookup = Lookup {
26 input_id: "ID-8675309".to_string(),
27 locality: "Sao Paulo".to_string(),
28 administrative_area: "SP".to_string(),
29 country: "Brazil".to_string(),
30 postal_code: "02516".to_string(),
31 ..Default::default()
32 };
33
34 let expected_params = vec![
35 ("input_id".to_string(), "ID-8675309".to_string()),
36 ("country".to_string(), "Brazil".to_string()),
37 ("locality".to_string(), "Sao Paulo".to_string()),
38 ("administrative_area".to_string(), "SP".to_string()),
39 ("postal_code".to_string(), "02516".to_string()),
40 ];
41
42 assert_eq!(lookup.into_param_array(), expected_params);
43 }
44
45 #[test]
46 fn candidate_test() {
47 let payload = r#"[
48 {
49 "input_id": "ID-8675309",
50 "administrative_area": "SP",
51 "sub_administrative_area": "Greater Sao Paulo",
52 "super_administrative_area": "Southeast",
53 "country_iso_3": "BRA",
54 "locality": "Sao Paulo",
55 "dependent_locality": "Vila Guilherme",
56 "dependent_locality_name": "Santana",
57 "double_dependent_locality": "Zona Norte",
58 "postal_code": "02516",
59 "postal_code_extra": "050"
60 }
61 ]"#;
62
63 let candidates: Vec<Candidate> = from_str(payload).expect("Failed to deserialize JSON");
64 assert_eq!(candidates.len(), 1);
65
66 let candidate = &candidates[0];
67 assert_eq!(candidate.input_id, "ID-8675309");
68 assert_eq!(candidate.country_iso_3, "BRA");
69 assert_eq!(candidate.locality, "Sao Paulo");
70 assert_eq!(candidate.dependent_locality, "Vila Guilherme");
71 assert_eq!(candidate.dependent_locality_name, "Santana");
72 assert_eq!(candidate.double_dependent_locality, "Zona Norte");
73 assert_eq!(candidate.administrative_area, "SP");
74 assert_eq!(candidate.sub_administrative_area, "Greater Sao Paulo");
75 assert_eq!(candidate.super_administrative_area, "Southeast");
76 assert_eq!(candidate.postal_code, "02516");
77 assert_eq!(candidate.postal_code_extra, "050");
78 }
79}