summaryrefslogtreecommitdiff
path: root/rust/scraper/src
diff options
context:
space:
mode:
authorGravatar Anshul Gupta <ansg191@yahoo.com> 2022-08-17 02:26:42 -0700
committerGravatar Anshul Gupta <ansg191@yahoo.com> 2022-08-17 02:26:42 -0700
commit7eae31ad49cd2f528c3657b03dc666f8137c1096 (patch)
treea0551ff63c8b32b09b8838efd35fff5963b8760a /rust/scraper/src
parentd37bdcd64d1dd951ae4125efa039062dcf4dd314 (diff)
downloadtouchpad-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.rs79
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