From 95ae8220a54aa064571d73b029416f00e92ff5a8 Mon Sep 17 00:00:00 2001 From: Sebastian Pravda Date: Mon, 16 Jan 2023 15:41:42 +0100 Subject: [PATCH 1/3] feat!: test language --- api/src/routes/candidate.rs | 3 ++- core/src/database/mutation/candidate.rs | 1 + core/src/models/candidate.rs | 1 + core/src/models/candidate_details.rs | 6 ++++++ core/src/models/grade.rs | 1 - entity/src/candidate.rs | 1 + migration/src/m20221024_121621_create_candidate.rs | 2 ++ 7 files changed, 13 insertions(+), 2 deletions(-) diff --git a/api/src/routes/candidate.rs b/api/src/routes/candidate.rs index def5068..17d9fbd 100644 --- a/api/src/routes/candidate.rs +++ b/api/src/routes/candidate.rs @@ -318,7 +318,8 @@ mod tests { \"personalIdNumber\": \"0101010000\", \"schoolName\": \"29988383\", \"healthInsurance\": \"000\", - \"grades\": [] + \"grades\": [], + \"test_language\": \"CZ\" }, \"parents\": [ { diff --git a/core/src/database/mutation/candidate.rs b/core/src/database/mutation/candidate.rs index c0dc4f6..ad7a961 100644 --- a/core/src/database/mutation/candidate.rs +++ b/core/src/database/mutation/candidate.rs @@ -54,6 +54,7 @@ impl Mutation { candidate.school_name = Set(enc_candidate.school_name.map(|e| e.into())); candidate.health_insurance = Set(enc_candidate.health_insurance.map(|e| e.into())); candidate.grades_json = Set(enc_candidate.grades_json.map(|e| e.into())); + candidate.test_language = Set(enc_candidate.test_language.map(|s| s)); candidate.encrypted_by_id = Set(Some(encrypted_by_id)); candidate.updated_at = Set(chrono::offset::Local::now().naive_local()); diff --git a/core/src/models/candidate.rs b/core/src/models/candidate.rs index 3938639..b3b9ae4 100644 --- a/core/src/models/candidate.rs +++ b/core/src/models/candidate.rs @@ -73,6 +73,7 @@ pub struct CandidateDetails { pub school_name: String, pub health_insurance: String, pub grades: GradeList, + pub test_language: String, } #[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)] #[serde(rename_all = "camelCase")] diff --git a/core/src/models/candidate_details.rs b/core/src/models/candidate_details.rs index 55453d8..5400e46 100644 --- a/core/src/models/candidate_details.rs +++ b/core/src/models/candidate_details.rs @@ -27,6 +27,7 @@ pub struct EncryptedCandidateDetails { pub school_name: Option, pub health_insurance: Option, pub grades_json: Option, + pub test_language: Option, } #[derive(Debug, Clone)] @@ -151,6 +152,7 @@ impl EncryptedCandidateDetails { school_name: d.10, health_insurance: d.11, grades_json: d.12, + test_language: Some(form.test_language.to_owned()), } ) } @@ -186,6 +188,7 @@ impl EncryptedCandidateDetails { school_name: d.10.unwrap_or_default(), health_insurance: d.11.unwrap_or_default(), grades: GradeList::from_opt_str(d.12).unwrap_or_default(), + test_language: self.test_language.to_owned().unwrap_or_default().to_string(), } ) } @@ -221,6 +224,7 @@ impl From<&candidate::Model> for EncryptedCandidateDetails { school_name: EncryptedString::try_from(&candidate.school_name).ok(), health_insurance: EncryptedString::try_from(&candidate.health_insurance).ok(), grades_json: EncryptedString::try_from(&candidate.grades_json).ok(), + test_language: candidate.test_language.to_owned(), } } } @@ -359,6 +363,7 @@ impl TryFrom for EncryptedApplicationDetails { school_name: EncryptedString::try_from(&cp.school_name).ok(), health_insurance: EncryptedString::try_from(&cp.health_insurance).ok(), grades_json: None, // TODO + test_language: None // TODO }, parents: vec![EncryptedParentDetails { name: EncryptedString::try_from(&cp.parent_name).ok(), @@ -413,6 +418,7 @@ pub mod tests { school_name: "school_name".to_string(), health_insurance: "health_insurance".to_string(), grades: GradeList::from(vec![]), + test_language: "test_language".to_string(), }, parents: vec![ParentDetails { name: "parent_name".to_string(), diff --git a/core/src/models/grade.rs b/core/src/models/grade.rs index 809fa78..d58a18a 100644 --- a/core/src/models/grade.rs +++ b/core/src/models/grade.rs @@ -12,7 +12,6 @@ pub struct GradeList(Vec); impl GradeList { pub fn from_opt_str(grades: Option) -> Option { - println!("grades: {:?}", grades); grades.map( |grades| serde_json::from_str(&grades).unwrap() // TODO: handle error ) diff --git a/entity/src/candidate.rs b/entity/src/candidate.rs index eee1efa..7084efd 100644 --- a/entity/src/candidate.rs +++ b/entity/src/candidate.rs @@ -21,6 +21,7 @@ pub struct Model { pub school_name: Option, pub health_insurance: Option, pub grades_json: Option, + pub test_language: Option, pub encrypted_by_id: Option, pub created_at: DateTime, pub updated_at: DateTime, diff --git a/migration/src/m20221024_121621_create_candidate.rs b/migration/src/m20221024_121621_create_candidate.rs index 1b6edad..da7f7ce 100644 --- a/migration/src/m20221024_121621_create_candidate.rs +++ b/migration/src/m20221024_121621_create_candidate.rs @@ -32,6 +32,7 @@ impl MigrationTrait for Migration { .col(ColumnDef::new(Candidate::SchoolName).string()) .col(ColumnDef::new(Candidate::HealthInsurance).string()) .col(ColumnDef::new(Candidate::GradesJson).string()) + .col(ColumnDef::new(Candidate::TestLanguage).string()) .col(ColumnDef::new(Candidate::EncryptedById).integer()) .col(ColumnDef::new(Candidate::CreatedAt).date_time().not_null()) .col(ColumnDef::new(Candidate::UpdatedAt).date_time().not_null()) @@ -65,6 +66,7 @@ pub enum Candidate { SchoolName, HealthInsurance, GradesJson, + TestLanguage, EncryptedById, CreatedAt, UpdatedAt, From 97e7a979586e5c7266939851b9c0a2f9247c15bf Mon Sep 17 00:00:00 2001 From: Sebastian Pravda Date: Tue, 17 Jan 2023 17:32:09 +0100 Subject: [PATCH 2/3] feat: frontend testLanguage field --- frontend/src/lib/stores/candidate.ts | 4 ++- .../[code=application]/+page.server.ts | 3 +- .../(authenticated)/register/+page.svelte | 32 +++++++++++++------ 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/frontend/src/lib/stores/candidate.ts b/frontend/src/lib/stores/candidate.ts index 0deb860..9b94cf8 100644 --- a/frontend/src/lib/stores/candidate.ts +++ b/frontend/src/lib/stores/candidate.ts @@ -16,6 +16,7 @@ export interface CandidateData { schoolName: string; healthInsurance: string; grades: Array; + testLanguage: string; }; parents: Array<{ name: string; @@ -75,7 +76,8 @@ export const candidateData = writable({ personalIdNumber: '', schoolName: '', healthInsurance: '', - grades: [] + grades: [], + testLanguage: '' }, parents: [] }); diff --git a/frontend/src/routes/(admin)/admin/(authenticated)/candidate/[code=application]/+page.server.ts b/frontend/src/routes/(admin)/admin/(authenticated)/candidate/[code=application]/+page.server.ts index 0e0a9db..5088c69 100644 --- a/frontend/src/routes/(admin)/admin/(authenticated)/candidate/[code=application]/+page.server.ts +++ b/frontend/src/routes/(admin)/admin/(authenticated)/candidate/[code=application]/+page.server.ts @@ -20,7 +20,8 @@ export const load: PageServerLoad = async ({ fetch, params }) => { personalIdNumber: '', schoolName: '', healthInsurance: '', - grades: [] + grades: [], + testLanguage: '' }, parents: [] }; diff --git a/frontend/src/routes/(candidate)/(authenticated)/register/+page.svelte b/frontend/src/routes/(candidate)/(authenticated)/register/+page.svelte index 061e750..f57d9b6 100644 --- a/frontend/src/routes/(candidate)/(authenticated)/register/+page.svelte +++ b/frontend/src/routes/(candidate)/(authenticated)/register/+page.svelte @@ -60,7 +60,8 @@ personalIdNumber: '', schoolName: '', healthInsurance: '', - grades: [] + grades: [], + testLanguage: '', }, parents: [ { @@ -120,7 +121,8 @@ semester: yup.string().required() }) .required() - ).required() + ).required(), + testLanguage: yup.string().required(), }), parents: yup.array().of( yup.object().shape({ @@ -623,14 +625,24 @@ se hlásíte.

- - - +
+ + + + + + +
{#if $form.candidate.citizenship === 'Česká republika' || !$form.candidate.citizenship} From 1fcd1615ad9813ac86c22404bd9f63f827aa6e2b Mon Sep 17 00:00:00 2001 From: Sebastian Pravda Date: Tue, 17 Jan 2023 17:36:56 +0100 Subject: [PATCH 3/3] fix: tests --- api/src/routes/candidate.rs | 2 +- core/src/services/parent_service.rs | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/api/src/routes/candidate.rs b/api/src/routes/candidate.rs index 17d9fbd..49bfd34 100644 --- a/api/src/routes/candidate.rs +++ b/api/src/routes/candidate.rs @@ -319,7 +319,7 @@ mod tests { \"schoolName\": \"29988383\", \"healthInsurance\": \"000\", \"grades\": [], - \"test_language\": \"CZ\" + \"testLanguage\": \"CZ\" }, \"parents\": [ { diff --git a/core/src/services/parent_service.rs b/core/src/services/parent_service.rs index 21fd62f..13d0299 100644 --- a/core/src/services/parent_service.rs +++ b/core/src/services/parent_service.rs @@ -72,6 +72,7 @@ mod tests { school_name: "school_name".to_string(), health_insurance: "health_insurance".to_string(), grades: GradeList::from(vec![]), + test_language: "test_language".to_string(), }, parents: vec![ParentDetails { name: "parent_name".to_string(), @@ -128,6 +129,10 @@ mod tests { assert_eq!(dec_details.candidate.email, form.candidate.email); assert_eq!(dec_details.candidate.sex, form.candidate.sex); assert_eq!(dec_details.candidate.personal_id_number, "0000001111".to_string()); + assert_eq!(dec_details.candidate.school_name, form.candidate.school_name); + assert_eq!(dec_details.candidate.health_insurance, form.candidate.health_insurance); + assert_eq!(dec_details.candidate.grades, form.candidate.grades); + assert_eq!(dec_details.candidate.test_language, form.candidate.test_language); assert_eq!(dec_details.parents.len(), form.parents.len()); for i in 0..dec_details.parents.len() {