From 7e4524edd53141cbb80d3e50eff5f241072e03ef Mon Sep 17 00:00:00 2001
From: Albin Henriksson <albhe428@student.liu.se>
Date: Tue, 16 Feb 2021 16:14:11 +0100
Subject: [PATCH] Issue/2 test front end

---
 .gitlab-ci.yml               |  6 ++++--
 .gitlab/client.gitlab-ci.yml | 23 +++++++++++++++++++++++
 .gitlab/server.gitlab-ci.yml | 24 +++++++++++-------------
 client/package-lock.json     | 32 +++++++++++++++++++++++---------
 client/package.json          | 14 +++++++++++---
 5 files changed, 72 insertions(+), 27 deletions(-)
 create mode 100644 .gitlab/client.gitlab-ci.yml

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 1c7b2a5c..bc3e1186 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,8 @@
 stages:
-  - setup
-  - test
+  - server-test
+  - client-install
+  - client-test
 
 include:
   - local: .gitlab/server.gitlab-ci.yml
+  - local: .gitlab/client.gitlab-ci.yml
diff --git a/.gitlab/client.gitlab-ci.yml b/.gitlab/client.gitlab-ci.yml
new file mode 100644
index 00000000..42d3266e
--- /dev/null
+++ b/.gitlab/client.gitlab-ci.yml
@@ -0,0 +1,23 @@
+image: node:10
+
+install:
+  stage: client-install
+  script:
+    - cd client
+    - npm install
+  artifacts:
+    name: "artifacts"
+    untracked: true
+    expire_in: 60 mins
+    paths:
+      - client/.npm/
+      - client/node_modules/
+
+test:unit:
+  stage: client-test
+  script:
+    - cd client
+    - npm run test:coverage
+  dependencies:
+    - install
+  coverage: /All files\s*\|\s*([\d\.]+)/
diff --git a/.gitlab/server.gitlab-ci.yml b/.gitlab/server.gitlab-ci.yml
index 481e31bb..33d3934c 100644
--- a/.gitlab/server.gitlab-ci.yml
+++ b/.gitlab/server.gitlab-ci.yml
@@ -1,18 +1,16 @@
-image: python
 
-cache:
-  paths:
-    - server/env/
-
-before_script:
-  - python --version
-  - pip install virtualenv
-  - cd server/
-  - python -m venv env
-  - source env/bin/activate
-  - pip install -r requirements.txt
 
 test-server:
-  stage: test
+  image: python
+  cache:
+    paths:
+      - server/env/
+  stage: server-test
   script:
+    - python --version
+    - pip install virtualenv
+    - cd server/
+    - python -m venv env
+    - source env/bin/activate
+    - pip install -r requirements.txt
     - pytest --cov app tests/
diff --git a/client/package-lock.json b/client/package-lock.json
index 597032d7..c8b2a048 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -5567,11 +5567,11 @@
       }
     },
     "eslint": {
-      "version": "7.19.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.19.0.tgz",
-      "integrity": "sha512-CGlMgJY56JZ9ZSYhJuhow61lMPPjUzWmChFya71Z/jilVos7mR/jPgaEfVGgMBY5DshbKdG8Ezb8FDCHcoMEMg==",
+      "version": "7.20.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.20.0.tgz",
+      "integrity": "sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw==",
       "requires": {
-        "@babel/code-frame": "^7.0.0",
+        "@babel/code-frame": "7.12.11",
         "@eslint/eslintrc": "^0.3.0",
         "ajv": "^6.10.0",
         "chalk": "^4.0.0",
@@ -5583,7 +5583,7 @@
         "eslint-utils": "^2.1.0",
         "eslint-visitor-keys": "^2.0.0",
         "espree": "^7.3.1",
-        "esquery": "^1.2.0",
+        "esquery": "^1.4.0",
         "esutils": "^2.0.2",
         "file-entry-cache": "^6.0.0",
         "functional-red-black-tree": "^1.0.1",
@@ -5610,6 +5610,14 @@
         "v8-compile-cache": "^2.0.3"
       },
       "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.12.11",
+          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
+          "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
+          "requires": {
+            "@babel/highlight": "^7.10.4"
+          }
+        },
         "ansi-styles": {
           "version": "4.3.0",
           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -5806,6 +5814,12 @@
         "confusing-browser-globals": "^1.0.10"
       }
     },
+    "eslint-config-strongloop": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/eslint-config-strongloop/-/eslint-config-strongloop-2.1.0.tgz",
+      "integrity": "sha1-dj3Rmt/OiNewBR5uJV8a43eDtMY=",
+      "dev": true
+    },
     "eslint-import-resolver-node": {
       "version": "0.3.4",
       "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz",
@@ -14471,9 +14485,9 @@
       },
       "dependencies": {
         "ajv": {
-          "version": "7.0.4",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.4.tgz",
-          "integrity": "sha512-xzzzaqgEQfmuhbhAoqjJ8T/1okb6gAzXn/eQRNpAN1AEUoHJTNF9xCDRTtf/s3SKldtZfa+RJeTs+BQq+eZ/sw==",
+          "version": "7.1.0",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.1.0.tgz",
+          "integrity": "sha512-svS9uILze/cXbH0z2myCK2Brqprx/+JJYK5pHicT/GQiBfzzhUVAIT6MwqJg8y4xV/zoGsUeuPuwtoiKSGE15g==",
           "requires": {
             "fast-deep-equal": "^3.1.1",
             "json-schema-traverse": "^1.0.0",
@@ -16762,4 +16776,4 @@
       "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
     }
   }
-}
+}
\ No newline at end of file
diff --git a/client/package.json b/client/package.json
index 70f2bf2e..f85e71cc 100644
--- a/client/package.json
+++ b/client/package.json
@@ -37,7 +37,8 @@
     "build": "react-scripts build",
     "test": "react-scripts test",
     "eject": "react-scripts eject",
-    "lint": "eslint \"./src/**/*.{js,ts,tsx}\""
+    "lint": "eslint \"./src/**/*.{js,ts,tsx}\"",
+    "test:coverage": "react-scripts test --coverage"
   },
   "browserslist": {
     "production": [
@@ -51,5 +52,12 @@
       "last 1 safari version"
     ]
   },
-  "proxy": "http://localhost:5000/api/"
-}
+  "proxy": "http://localhost:5000/api/",
+  "devDependencies": {
+    "@typescript-eslint/eslint-plugin": "^4.15.1",
+    "@typescript-eslint/parser": "^4.15.1",
+    "eslint": "^7.20.0",
+    "eslint-config-strongloop": "^2.1.0",
+    "eslint-plugin-react": "^7.22.0"
+  }
+}
\ No newline at end of file
-- 
GitLab