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() {