88 * body LicensePlate License plate object to update
99 * no response value expected for this operation
1010 **/
11-
12-
1311exports . modifyPlate = function ( body ) {
1412 return new Promise ( function ( resolve , reject ) {
1513
16-
17-
1814 // Μια ήδη καταχωρημένη πινακίδα μέσα στο σύστημα
1915 var existingPlates = {
2016 "licensePlate" : "AKH1314" , // όνομα πινακίδας
2117 "id" : 15 , // το id της πινακίδας
22-
2318 } ;
24-
25- if ( ! body . licensePlate || body . licensePlate === "" ) {
26- //αν το licensePlate δεν υπάρχει στο request body ή ισούται με το κενό string τότε έχω σφάλμα με κωδικό σφάλματος 400
27- const error = new Error ( "license Plate does not exist" ) ;
28- error . response = { statusCode : 400 } ;
29- reject ( error ) ;
30- return ;
31- }
32-
33- // Ο έλεγχος αυτός έγινε comment διότι εκτελείται από το swagger. Συνεπώς, τον κάνω comment ώστε να μην μου χαλάει το
34- //coverage του modifyPlate
35- // if (typeof body.licensePlate !== "string"){
36- // //αν το licensePlate έχει μη έγκυρη τιμή τότε έχω σφάλμα με κωδικό σφάλματος 400
37- // const error = new Error("Invalid licenseplate");
38- // error.response = { statusCode: 400 };
39- // reject(error);
40- // return;
41- // }
4219
20+ //Ορίζω κανόνες εγκυρότητας για τα fields της πινακίδας.
21+ //Αν το licensePlate δεν υπάρχει στο request body ή ισούται με το κενό string τότε έχω σφάλμα με κωδικό σφάλματος 400.
22+ //Επίσης, αν το id έχει μη έγκυρη τιμή τότε έχω σφάλμα με κωδικό σφάλματος 400.
23+ // Έτσι, μειώνω το πλήθος των reject(error).
24+ const validations = [
25+ { key : 'licensePlate' , rule : ( value ) => value && value !== "" , errorMessage : "license Plate does not exist" } ,
26+ { key : 'id' , rule : ( value ) => Number . isInteger ( value ) && value > 0 ,
27+ errorMessage : "Invalid id: must be a positive integer." }
28+ ] ;
4329
44- if ( ! Number . isInteger ( body . id ) || body . id < 0 ) {
45- //αν το id έχει μη έγκυρη τιμή τότε έχω σφάλμα με κωδικό σφάλματος 400
46- const error = new Error ( "Invalid id: must be a positive integer." ) ;
47- error . response = { statusCode : 400 } ;
48- reject ( error ) ;
49- return ;
30+ // Έλεγχος για σφάλματα στα fields της πινακίδας
31+ for ( const { key, rule, errorMessage } of validations ) {
32+ const value = body [ key ] ;
33+ if ( ! rule ( value ) ) { // Αν η τιμή δεν ικανοποιεί τον κανόνα εγκυρότητας (rule), τότε υπάρχει σφάλμα
34+ const error = new Error ( errorMessage ) ;
35+ error . response = { statusCode : 400 } ; // Επιστρέφει κωδικό 400
36+ reject ( error ) ;
37+ return ;
38+ }
5039 }
5140
52- //Αν η dummy πινακίδα που είναι ήδη καταχωρημένη μέσα στο σύστημα έχει ίδιο id με εκείνο του request body και διαφορετικό
41+ //Αν η dummy πινακίδα που είναι ήδη καταχωρημένη μέσα στο σύστημα έχει ίδιο id με εκείνο του request body και διαφορετικό
5342 // όνομα πινακίδας με εκείνο του request body, τότε συμβαίνει με επιτυχία η τροποποίηση της πινακίδας. Αν τα γνωρίσματα της
5443 // dummy καταχωρημένης πινακίδας και του request body ταυτίζονται , τότε δεν τροποποιώ την πινακίδα αλλά αντίθετα διατηρώ
5544 // τα "παλιά" της στοιχεία.Τέλος, αν όλα τα γνωρίσματα της dummy πινακίδας διαφέρουν με τα αντίστοιχα γνωρίσματα του request
@@ -72,14 +61,13 @@ exports.modifyPlate = function(body) {
7261 // Handle non-existent ID (η πινακίδα δεν υπάρχει μέσα στο σύστημα)
7362 const isNonExistent = existingPlates . id !== body . id ;
7463 if ( isNonExistent ) {
75- const error = new Error ( "License plate doesn't exist." ) ;
64+ const error = new Error ( "License plate doesn't exist." ) ; // Η πινακίδα που επιθυμώ να τροποποιήσω ΔΕΝ βρέθηκε.
7665 error . response = { statusCode : 404 } ; // Επιστρέφει κωδικό σφάλματος 404.
77- //Δηλαδή, η πινακίδα που επιθυμώ να τροποποιήσω ΔΕΝ βρέθηκε.
7866 reject ( error ) ;
7967 return ;
8068 }
8169
82- resolve ( ) ; // Return the updated plate object
70+ resolve ( ) ;
8371 } ) ;
8472} ;
8573
@@ -92,42 +80,28 @@ exports.modifyPlate = function(body) {
9280 * no response value expected for this operation
9381 **/
9482exports . registerPlate = function ( body ) {
95- return new Promise ( ( resolve , reject ) => {
83+ return new Promise ( ( resolve , reject ) => {
84+ //Ορίζω κανόνες εγκυρότητας για τα fields της πινακίδας.
85+ //Αν το id έχει μη έγκυρη τιμή τότε έχω σφάλμα με κωδικό σφάλματος 400.
86+ //Αν το licensePlate δεν υπάρχει στο request body ή ισούται με το κενό string τότε έχω σφάλμα με κωδικό σφάλματος 400.
87+ // Έτσι, μειώνω το πλήθος των reject(error).
88+ const validations = [
89+ { key : 'id' , rule : ( value ) => Number . isInteger ( value ) && value > 0 , errorMessage : 'Invalid id: must be a positive integer.' } ,
90+ { key : 'licensePlate' , rule : ( value ) => value && value !== "" , errorMessage : 'licenseplate does not exist' }
91+ ] ;
9692
97- // Μια ήδη καταχωρημένη πινακίδα μέσα στο σύστημα
98- var existingPlates = {
99- "licensePlate" : "AKH1314" , // το όνομα της πινακίδας
100- "id" : 15 , // το id της πινακίδας
101-
102- } ;
103-
104-
105- if ( ! Number . isInteger ( body . id ) || body . id < 0 ) {
106- //αν το id έχει μη έγκυρη τιμή τότε έχω σφάλμα με κωδικό σφάλματος 400
107- const error = new Error ( "Invalid id: must be a positive integer." ) ;
108- error . response = { statusCode : 400 } ;
109- reject ( error ) ;
110- return ;
111- }
112-
113-
114- if ( ! body . licensePlate || body . licensePlate === "" ) {
115- //αν το licensePlate δεν υπάρχει στο request body ή ισούται με το κενό string τότε έχω σφάλμα με κωδικό σφάλματος 400
116- const error = new Error ( "licenseplate does not exist" ) ;
117- error . response = { statusCode : 400 } ;
118- reject ( error ) ;
119- return ;
93+ // Έλεγχος για σφάλματα στα fields της πινακίδας
94+ for ( const { key, rule, errorMessage } of validations ) {
95+ const value = body [ key ] ;
96+ if ( ! rule ( value ) ) { // Αν η τιμή δεν ικανοποιεί τον κανόνα εγκυρότητας (rule), τότε υπάρχει σφάλμα
97+ const error = new Error ( errorMessage ) ;
98+ error . response = { statusCode : 400 } ; // Επιστρέφει κωδικό 400
99+ reject ( error ) ;
100+ return ;
101+ }
120102 }
121-
122- // Ο έλεγχος αυτός έγινε comment διότι εκτελείται από το swagger. Συνεπώς, τον κάνω comment ώστε να μην μου χαλάει το
123- //coverage του registerPlate
124- // if (typeof body.licensePlate !== "string"){
125- // //αν το licensePlate έχει μη έγκυρη τιμή τότε έχω σφάλμα με κωδικό σφάλματος 400
126- // const error = new Error("Invalid licenseplate");
127- // error.response = { statusCode: 400 };
128- // reject(error);
129- // return;
130- // }
103+
131104 resolve ( ) ;
132- } ) ;
105+ } ) ;
133106} ;
107+
0 commit comments