|
6 | 6 | use crate::helpers::{convert, convert_err, convert_res}; |
7 | 7 | use neon::prelude::*; |
8 | 8 | use std::{ |
9 | | - collections::HashMap, |
10 | 9 | env, |
11 | 10 | error::Error, |
12 | 11 | io::{Cursor, Read}, |
@@ -172,7 +171,7 @@ fn prepare_submission(mut cx: FunctionContext) -> JsResult<JsValue> { |
172 | 171 | output_path: PathBuf, |
173 | 172 | stub_zip_path: Option<PathBuf>, |
174 | 173 | submission_path: PathBuf, |
175 | | - tmc_param: HashMap<String, Vec<String>>, |
| 174 | + tmc_param: Vec<(String, Vec<String>)>, |
176 | 175 | top_level_dir_name: Option<String> |
177 | 176 | ); |
178 | 177 |
|
@@ -441,11 +440,12 @@ fn get_exercise_updates(mut cx: FunctionContext) -> JsResult<JsValue> { |
441 | 440 | client_name: String, |
442 | 441 | client_version: String, |
443 | 442 | course_id: u32, |
444 | | - exercise: HashMap<u32, String> |
| 443 | + exercise: Vec<(u32, String)> |
445 | 444 | ); |
446 | 445 |
|
| 446 | + let map = exercise.into_iter().collect(); |
447 | 447 | let res = with_client(client_name, client_version, |client| { |
448 | | - Ok(client.get_exercise_updates(course_id, exercise)?) |
| 448 | + Ok(client.get_exercise_updates(course_id, map)?) |
449 | 449 | }); |
450 | 450 | convert_res(&mut cx, res) |
451 | 451 | } |
@@ -915,3 +915,42 @@ ts_rs::export! { |
915 | 915 | tmc_langs::TmcConfig |
916 | 916 | => "ts/generated.d.ts", |
917 | 917 | } |
| 918 | + |
| 919 | +#[cfg(test)] |
| 920 | +mod test { |
| 921 | + use std::{env, process::Command}; |
| 922 | + |
| 923 | + use once_cell::sync::OnceCell; |
| 924 | + use tmc_server_mock::mockito::{server_address, Mock}; |
| 925 | + |
| 926 | + static MOCKS: OnceCell<Vec<Mock>> = OnceCell::new(); |
| 927 | + |
| 928 | + fn init() { |
| 929 | + use log::*; |
| 930 | + use simple_logger::*; |
| 931 | + let _ = SimpleLogger::new() |
| 932 | + .with_level(LevelFilter::Debug) |
| 933 | + .with_module_level("mockito", LevelFilter::Info) |
| 934 | + .init(); |
| 935 | + |
| 936 | + let _ = MOCKS.get_or_init(tmc_server_mock::mock_all); |
| 937 | + } |
| 938 | + |
| 939 | + #[test] |
| 940 | + fn jest() { |
| 941 | + init(); |
| 942 | + env::set_var( |
| 943 | + "TMC_LANGS_MOCK_SERVER_ADDR", |
| 944 | + format!("http://{}", server_address()), |
| 945 | + ); |
| 946 | + let s = Command::new("npm") |
| 947 | + .args(&["run", "jest"]) |
| 948 | + .output() |
| 949 | + .expect("running jest failed"); |
| 950 | + println!("stdout: {}", String::from_utf8_lossy(&s.stdout)); |
| 951 | + println!("stderr: {}", String::from_utf8_lossy(&s.stderr)); |
| 952 | + if !s.status.success() { |
| 953 | + panic!("jest test failed") |
| 954 | + } |
| 955 | + } |
| 956 | +} |
0 commit comments