use amtrak_api::Client; use mockito::Server; #[tokio::test] async fn test_single_station() -> Result<(), amtrak_api::Error> { let mut server = Server::new_async().await; let mock_server = server .mock("GET", "/stations") .with_body( r#" { "ABE": { "name": "Aberdeen", "code": "ABE", "tz": "America/New_York", "lat": 39.508447, "lon": -76.16326, "address1": "18 East Bel Air Avenue", "address2": " ", "city": "Aberdeen", "state": "MD", "zip": 21001, "trains": [] } }"#, ) .create_async() .await; let client = Client::with_base_url(server.url().as_str()); let response = client.stations().await?; assert_eq!(response.len(), 1); let station = response.get("ABE").unwrap(); assert_eq!(station.name, "Aberdeen"); assert_eq!(station.code, "ABE"); assert_eq!(station.lat, 39.508447); assert_eq!(station.lon, -76.16326); assert_eq!(station.address1, "18 East Bel Air Avenue"); assert_eq!(station.address2, " "); assert_eq!(station.city, "Aberdeen"); assert_eq!(station.state, "MD"); assert_eq!(station.zip, 21001); assert_eq!(station.trains.len(), 0); mock_server.assert_async().await; Ok(()) } #[tokio::test] async fn test_empty_station() -> Result<(), amtrak_api::Error> { let mut server = Server::new_async().await; let mock_server = server .mock("GET", "/stations/ABC") .with_body("[]") .create_async() .await; let client = Client::with_base_url(server.url().as_str()); let response = client.station("ABC").await?; assert_eq!(response.len(), 0); mock_server.assert_async().await; Ok(()) }