| 265 | } |
| 266 | |
| 267 | pub fn wait_for_request_with_extra_ticks( |
| 268 | env: &PocketIc, |
| 269 | user_id: Principal, |
| 270 | station_canister_id: CanisterId, |
| 271 | request: RequestDTO, |
| 272 | extra_ticks: u64, |
| 273 | ) -> Result<RequestDTO, Option<RequestStatusDTO>> { |
| 274 | // wait for the request to be approved |
| 275 | env.advance_time(Duration::from_secs(2)); |
| 276 | env.tick(); |
| 277 | // wait for the request to be processing |
| 278 | env.advance_time(Duration::from_secs(2)); |
| 279 | env.tick(); |
| 280 | // wait in case the request calls out to other canisters |
| 281 | env.advance_time(Duration::from_secs(2)); |
| 282 | env.tick(); |
| 283 | |
| 284 | for _ in 0..extra_ticks { |
| 285 | // timer's period for processing requests is 5 seconds |
| 286 | env.advance_time(Duration::from_secs(5)); |
| 287 | env.tick(); |
| 288 | } |
| 289 | // wait for the request to be completed |
| 290 | for _ in 0..100 { |
| 291 | let new_request = get_request(env, user_id, station_canister_id, request.clone()); |
| 292 | if is_request_completed(new_request.clone()) { |
| 293 | return Ok(new_request); |
| 294 | } |
| 295 | if is_request_evaluated(new_request.clone()) { |
| 296 | return Err(Some(new_request.status)); |
| 297 | } |
| 298 | // timer's period for processing requests is 5 seconds |
| 299 | env.advance_time(Duration::from_secs(5)); |
| 300 | env.tick(); |
| 301 | } |
| 302 | Err(None) |
| 303 | } |
| 304 | |
| 305 | pub fn execute_request( |
| 306 | env: &PocketIc, |