From cd876c0026bf59831c0322946f0d73a8328c1b3f Mon Sep 17 00:00:00 2001
From: jsteuer <jan.niklas.steuer@gmail.com>
Date: Sat, 21 Dec 2019 13:27:11 +0100
Subject: [PATCH] fix argument validation

---
 package-lock.json    |    2 +-
 package.json         |    4 ++--
 test/Helpers.spec.ts |    4 ++++
 src/Helpers.ts       |   13 ++++++++-----
 CHANGELOG.md         |    5 +++++
 README.md            |    3 ++-
 6 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index a30c7d8..4a19755 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,11 @@
 ### Removed
 
 
+## [2.0.1] - 2019-12-21 
+### Fixed
+-   Fehlerhafte Validierung von Argumenten bei API Aufrufen gegenüber der 
+    Offline-Implementierung (z.B. `Helpers.enableOfflineUsageIfNecessary`)
+    verbessert
 
 
 ## [2.0.0] - 2019-12-18
diff --git a/README.md b/README.md
index 60cdc37..4d2b5cc 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
 
-# MathCoach IDE API
+# MathCoach IDE API <small>`Version 2.0.1`</small>
 
 In diesem Paket ([Das Gitblit Repository findet sich hier](https://newton.htwsaar.de/gitblit/summary/mathcoach!mathcoach-ide-api.git)) 
 ist die öffentliche Schnittstelle zur MathCoach Entwicklungsumgebung (IDE) definiert. Mithilfe 
@@ -320,6 +320,7 @@
 
 #### Release einer neuen Version
 - Version der API in der `package.json` eintragen
+- Version in der Überschrift der `README.md` eintragen
 - Beispiele und Changelog aktualisieren
 - IDE-Projekt prüfen:  `package.json`, `ide-lib.js`, ...
 - Final: Release Tag setzen `git tag -a VERSION -m '...'` und pushen
diff --git a/package-lock.json b/package-lock.json
index fd15ae7..940d366 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
 {
   "name": "@mathcoach/ide-api",
-  "version": "1.1.0",
+  "version": "2.0.0",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
diff --git a/package.json b/package.json
index d40d7ae..caba57b 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@mathcoach/ide-api",
-  "version": "2.0.0",
+  "version": "2.0.1",
   "description": "API zur MathCoach IDE",
   "main": "./src/index.ts",
   "directories": {
@@ -54,4 +54,4 @@
     "instrument": true,
     "all": true
   }
-}
\ No newline at end of file
+}
diff --git a/src/Helpers.ts b/src/Helpers.ts
index e0dccb0..83fc07f 100644
--- a/src/Helpers.ts
+++ b/src/Helpers.ts
@@ -65,13 +65,16 @@
         const traceMethod = (method: string, args?: any[]) => console.log(["[MC MOCK API]", " ", method, "(", (args ? args : [""]).join(","), ")"].join(""));
         const runtimeCheck = (errorMessage: string, isInvalid: (param: any) => boolean) => {
             return (paramName: string, value: any, optional: boolean = false) => {
-                if (!optional && (value === null || value === undefined)) {
-                    throw new Error(`parameter '${paramName}' is null or undefined`);
-                } else {
-                    if (isInvalid(value)) {
-                        throw new Error(`parameter '${paramName}' is invalid: ${errorMessage}`);
+                if (value === undefined) {
+                    if (optional) {
+                        return;
+                    } else {
+                        throw new Error(`missing parameter '${paramName}'`);
                     }
                 }
+                if (isInvalid(value)) {
+                    throw new Error(`parameter '${paramName}' is invalid: ${errorMessage}`);
+                }
             }
         }
         const runtimeCheckString = runtimeCheck("not a string", v => typeof v !== "string");
diff --git a/test/Helpers.spec.ts b/test/Helpers.spec.ts
index 46872b4..a194c39 100644
--- a/test/Helpers.spec.ts
+++ b/test/Helpers.spec.ts
@@ -108,8 +108,12 @@
     const contextFile = await MC.ide.getContextFile();
     const exerciseFile = Helpers.contextFileToExerciseFile(contextFile);
 
+    MC.ide.navigator.navigateTo("www.google.de");
+    MC.ide.navigator.navigateToExercise(exerciseFile);
     MC.ide.navigator.navigateTo("www.google.de", true);
     MC.ide.navigator.navigateToExercise(exerciseFile, true);
+    MC.ide.navigator.navigateTo("www.google.de", false);
+    MC.ide.navigator.navigateToExercise(exerciseFile, false);
 
     expectThrows(t, () => MC.ide.navigator.navigateTo(null as any));
     expectThrows(t, () => MC.ide.navigator.navigateTo(42 as any));

--
Gitblit v1.10.0-SNAPSHOT