diff options
author | 2022-08-17 02:26:42 -0700 | |
---|---|---|
committer | 2022-08-17 02:26:42 -0700 | |
commit | 7eae31ad49cd2f528c3657b03dc666f8137c1096 (patch) | |
tree | a0551ff63c8b32b09b8838efd35fff5963b8760a /rust/scraper/src | |
parent | d37bdcd64d1dd951ae4125efa039062dcf4dd314 (diff) | |
download | touchpad-7eae31ad49cd2f528c3657b03dc666f8137c1096.tar.gz touchpad-7eae31ad49cd2f528c3657b03dc666f8137c1096.tar.zst touchpad-7eae31ad49cd2f528c3657b03dc666f8137c1096.zip |
Adds partial tests for TouchpadLiveClient
Adds tests for meet_info() and events() methods. Adds dev-dependency of
mockito to allow for http mocks.
Diffstat (limited to 'rust/scraper/src')
-rw-r--r-- | rust/scraper/src/touchpad/mod.rs | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/rust/scraper/src/touchpad/mod.rs b/rust/scraper/src/touchpad/mod.rs index 9b982c6..32e54c5 100644 --- a/rust/scraper/src/touchpad/mod.rs +++ b/rust/scraper/src/touchpad/mod.rs @@ -233,3 +233,82 @@ fn create_individual_event_proto( )), }) } + +#[cfg(test)] +mod tests { + use chrono::{TimeZone, Utc}; + use mockito::mock; + use super::*; + + #[tokio::test] + async fn test_meet_info() -> Result<(), TouchpadLiveError> { + let url = mockito::server_url(); + + let _m = mock("GET", "/meets/1") + .with_status(200) + .with_body(r#"{"courseName":"SCY","courseOrder":"YO","endDate":"2022-07-23","events":68,"females":92,"hostTeamName":"Northwood Pointe Flash Swim Team","id":1,"isEnded":true,"isEnded24Hrs":true,"isFinalsMeet":true,"isPrelimMeet":false,"isStarted":true,"localizedEndDate":"07/23/2022","localizedStartDate":"07/23/2022","males":111,"meetName":"2022 #4 Park Paseo at Northwood Pointe","startDate":"2022-07-23","teamCount":2}"#) + .create(); + let _m2 = mock("GET", "/meets/1/teams") + .with_status(200) + .with_body(r#"[{"name":"Northwood Pointe Flash Swim Team","nEvents":65,"nSwimmers":101,"points":324.0,"teamID":1},{"name":"Park Paseo Northstars","nEvents":64,"nSwimmers":102,"points":326.0,"teamID":2}]"#) + .create(); + + let client = TouchpadLiveClient::new_with_url(url); + + let result = client.meet_info(1).await?; + + assert_eq!(result, v1::SwimMeet { + id: 1, + meet_name: "2022 #4 Park Paseo at Northwood Pointe".to_string(), + start: Some(Utc.ymd(2022, 07, 23).and_hms(0, 0, 0).into()), + end: Some(Utc.ymd(2022, 07, 23).and_hms(0, 0, 0).into()), + teams: vec![v1::Team { id: 1, name: "Northwood Pointe Flash Swim Team".to_string() }, v1::Team { id: 2, name: "Park Paseo Northstars".to_string() }], + points: HashMap::new(), + }); + + Ok(()) + } + + #[tokio::test] + async fn test_events() -> Result<(), TouchpadLiveError> { + let url = mockito::server_url(); + + let _m = mock("GET", "/meets/1/events") + .with_status(200) + .with_body(r#"[{"age_hi":6,"age_low":0,"ageGroup":"6 & Under","day":"Saturday","distance":100,"eventNumber":"1","gender":"Mixed","id":1031963,"relay":true,"rounds":1,"session":1,"sponsor":" ","status":80,"stroke":"Medley"},{"age_hi":10,"age_low":9,"ageGroup":"9-10","day":"Saturday","distance":50,"eventNumber":"55","gender":"Female","id":1031955,"relay":false,"rounds":1,"session":1,"sponsor":" ","status":80,"stroke":"Free"}]"#) + .create(); + + let client = TouchpadLiveClient::new_with_url(url); + + let result = client.events(1).await?; + + assert_eq!(result.as_slice(), &[ + v1::Event { + id: 1031963, + meet_id: 1, + event_num: 1, + age_lo: 0, + age_hi: 6, + distance: 100, + stroke: v1::Stroke::Medley as i32, + gender: v1::Gender::Unspecified as i32, + is_relay: true, + event: None, + }, + v1::Event { + id: 1031955, + meet_id: 1, + event_num: 55, + age_lo: 9, + age_hi: 10, + distance: 50, + stroke: v1::Stroke::Free as i32, + gender: v1::Gender::Female as i32, + is_relay: false, + event: None, + } + ]); + + Ok(()) + } +}
\ No newline at end of file |