feat(scripts): seed exams when seeding database (#52269)

This commit is contained in:
Tom
2023-11-08 03:27:22 -06:00
committed by GitHub
parent 09da18f7a1
commit 517b4b622e
5 changed files with 34 additions and 24 deletions
+2 -2
View File
@@ -261,7 +261,6 @@ By default, you will be signed in as a new user without any completed certificat
```bash
pnpm run seed:certified-user
pnpm run seed:exams
```
> [!WARNING]
@@ -295,8 +294,9 @@ A quick reference to the commands that you will need when working locally.
| command | description |
| ----------------- | ----------------------------------------------------------------------------- |
| `pnpm install` | Installs / re-installs all dependencies and bootstraps the different services. |
| `pnpm run seed` | Creates authorized test users and inserts them into MongoDB. |
| `pnpm run seed` | Creates authorized test users and inserts them into MongoDB. Also runs `seed:exams` and `seed:surveys` below. |
| `pnpm run seed:certified-user` | Creates authorized test users with certifications fully completed, and inserts them into MongoDB. |
| `pnpm run seed:exams` | Creates exams and inserts them into MongoDB. |
| `pnpm run seed:surveys` | Creates surveys for defaults users and inserts them into MongoDB. |
| `pnpm run develop` | Starts the freeCodeCamp API Server and Client Applications. |
| `pnpm run clean` | Uninstalls all dependencies and cleans up caches. |
+3 -3
View File
@@ -69,9 +69,9 @@
"preseed": "npm-run-all create:shared",
"playwright:install-build-tools": "cd ./e2e && npm i && npx playwright install && npx playwright install-deps",
"playwright:install-build-tools-linux": "sh ./playwright-install.sh",
"seed": "cross-env DEBUG=fcc:* node ./tools/scripts/seed/seed-demo-user && pnpm seed:surveys",
"seed:certified-user": "cross-env DEBUG=fcc:* node ./tools/scripts/seed/seed-demo-user certified-user && pnpm seed:surveys",
"seed:exams": "cd tools/scripts/seed-exams && cross-env node ./create-exams.js",
"seed": "cross-env DEBUG=fcc:* node ./tools/scripts/seed/seed-demo-user && pnpm seed:surveys && pnpm seed:exams",
"seed:certified-user": "cross-env DEBUG=fcc:* node ./tools/scripts/seed/seed-demo-user certified-user && pnpm seed:surveys && pnpm seed:exams",
"seed:exams": "cross-env DEBUG=fcc:* node tools/scripts/seed-exams/create-exams",
"seed:surveys": "cross-env DEBUG=fcc:* node ./tools/scripts/seed/seed-surveys",
"serve:client": "cd ./client && pnpm run serve",
"serve:client-ci": "cd ./client && pnpm run serve-ci",
+21 -17
View File
@@ -1401,6 +1401,9 @@ importers:
tools/scripts/seed-exams:
devDependencies:
debug:
specifier: 4.3.4
version: 4.3.4(supports-color@8.1.1)
dotenv:
specifier: 16.3.1
version: 16.3.1
@@ -15740,6 +15743,7 @@ packages:
dependencies:
ms: 2.1.3
supports-color: 8.1.1
dev: true
/debug@4.3.1:
resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==}
@@ -16075,7 +16079,7 @@ packages:
'@types/tmp': 0.0.33
application-config-path: 0.1.1
command-exists: 1.2.9
debug: 3.2.7(supports-color@8.1.1)
debug: 3.2.7(supports-color@5.5.0)
eol: 0.9.1
get-port: 3.2.0
glob: 7.2.3
@@ -16935,7 +16939,7 @@ packages:
/eslint-import-resolver-node@0.3.9:
resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
dependencies:
debug: 3.2.7(supports-color@8.1.1)
debug: 3.2.7(supports-color@5.5.0)
is-core-module: 2.13.1
resolve: 1.22.6
transitivePeerDependencies:
@@ -16986,7 +16990,7 @@ packages:
optional: true
dependencies:
'@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@5.2.2)
debug: 3.2.7(supports-color@8.1.1)
debug: 3.2.7(supports-color@5.5.0)
eslint: 7.32.0
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@6.10.0)(eslint-plugin-import@2.29.0)(eslint@8.53.0)
@@ -17015,7 +17019,7 @@ packages:
optional: true
dependencies:
'@typescript-eslint/parser': 6.10.0(eslint@8.53.0)(typescript@5.2.2)
debug: 3.2.7(supports-color@8.1.1)
debug: 3.2.7(supports-color@5.5.0)
eslint: 8.53.0
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@6.10.0)(eslint-plugin-import@2.29.0)(eslint@8.53.0)
@@ -17075,7 +17079,7 @@ packages:
array.prototype.findlastindex: 1.2.3
array.prototype.flat: 1.3.2
array.prototype.flatmap: 1.3.2
debug: 3.2.7(supports-color@8.1.1)
debug: 3.2.7(supports-color@5.5.0)
doctrine: 2.1.0
eslint: 7.32.0
eslint-import-resolver-node: 0.3.9
@@ -17109,7 +17113,7 @@ packages:
array.prototype.findlastindex: 1.2.3
array.prototype.flat: 1.3.2
array.prototype.flatmap: 1.3.2
debug: 3.2.7(supports-color@8.1.1)
debug: 3.2.7(supports-color@5.5.0)
doctrine: 2.1.0
eslint: 8.53.0
eslint-import-resolver-node: 0.3.9
@@ -18353,7 +18357,7 @@ packages:
debug:
optional: true
dependencies:
debug: 3.2.7(supports-color@8.1.1)
debug: 3.2.7(supports-color@5.5.0)
/follow-redirects@1.15.3(debug@4.3.4):
resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==}
@@ -19201,7 +19205,7 @@ packages:
css-minimizer-webpack-plugin: 2.0.0(webpack@5.89.0)
css.escape: 1.5.1
date-fns: 2.30.0
debug: 3.2.7(supports-color@8.1.1)
debug: 3.2.7(supports-color@5.5.0)
deepmerge: 4.3.1
del: 5.1.0
detect-port: 1.5.1
@@ -22858,7 +22862,7 @@ packages:
dependencies:
async: 0.9.2
commondir: 1.0.1
debug: 3.2.7(supports-color@8.1.1)
debug: 3.2.7(supports-color@5.5.0)
lodash: 4.17.21
semver: 5.7.2
strong-globalize: 4.1.3
@@ -22871,7 +22875,7 @@ packages:
resolution: {integrity: sha512-vDRR4gqkvGOEXh5yL383xGuGxUW9xtF+NCY6/lJu1VAgupKltZxEx3Vw+L3nsGvQrlkJTSmiK3jk72qxkoBtbw==}
engines: {node: '>=6'}
dependencies:
debug: 3.2.7(supports-color@8.1.1)
debug: 3.2.7(supports-color@5.5.0)
lodash: 4.17.21
loopback-swagger: 5.9.0
strong-globalize: 4.1.3
@@ -22886,7 +22890,7 @@ packages:
dependencies:
async: 2.6.4
bson: 1.1.6
debug: 3.2.7(supports-color@8.1.1)
debug: 3.2.7(supports-color@5.5.0)
loopback-connector: 4.11.1
mongodb: 3.6.9
strong-globalize: 4.1.3
@@ -22930,7 +22934,7 @@ packages:
dependencies:
async: 2.6.4
bluebird: 3.7.2
debug: 3.2.7(supports-color@8.1.1)
debug: 3.2.7(supports-color@5.5.0)
depd: 1.1.2
inflection: 1.13.4
lodash: 4.17.21
@@ -22954,7 +22958,7 @@ packages:
resolution: {integrity: sha512-p0qSzuuX7eATe5Bxy+RqCj3vSfSFfdCtqyf3yuC+DpchMvgal33XlhEi2UmywyK/Ym28oVnZxxWmfrwFMzSwLQ==}
engines: {node: '>=4.0.0'}
dependencies:
debug: 3.2.7(supports-color@8.1.1)
debug: 3.2.7(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
dev: false
@@ -22964,7 +22968,7 @@ packages:
engines: {node: '>=8.9'}
dependencies:
async: 2.6.4
debug: 3.2.7(supports-color@8.1.1)
debug: 3.2.7(supports-color@5.5.0)
strong-globalize: 4.1.3
transitivePeerDependencies:
- supports-color
@@ -22975,7 +22979,7 @@ packages:
engines: {node: '>=8'}
dependencies:
async: 2.6.4
debug: 3.2.7(supports-color@8.1.1)
debug: 3.2.7(supports-color@5.5.0)
ejs: 2.7.4
lodash: 4.17.21
strong-globalize: 4.1.3
@@ -31874,7 +31878,7 @@ packages:
/webpack-virtual-modules@0.2.2:
resolution: {integrity: sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA==}
dependencies:
debug: 3.2.7(supports-color@8.1.1)
debug: 3.2.7(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
dev: true
@@ -31882,7 +31886,7 @@ packages:
/webpack-virtual-modules@0.3.2:
resolution: {integrity: sha512-RXQXioY6MhzM4CNQwmBwKXYgBs6ulaiQ8bkNQEl2J6Z+V+s7lgl/wGvaI/I0dLnYKB8cKsxQc17QOAVIphPLDw==}
dependencies:
debug: 3.2.7(supports-color@8.1.1)
debug: 3.2.7(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
+7 -2
View File
@@ -1,6 +1,7 @@
import { readFileSync } from 'fs';
import path, { join } from 'path';
import { fileURLToPath } from 'url';
import debug from 'debug';
import dotenv from 'dotenv';
import yaml from 'js-yaml';
import { MongoClient, ObjectId } from 'mongodb';
@@ -10,6 +11,8 @@ import { validateExamSchema } from './exam-schema.js';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const log = debug('fcc:tools:seedExams');
dotenv.config({ path: path.resolve(__dirname, '../../../.env') });
const { MONGOHQ_URL } = process.env;
@@ -21,6 +24,8 @@ const examFilenames = [
const client = new MongoClient(MONGOHQ_URL, { useUnifiedTopology: true });
log('Connected successfully to mongo');
const db = client.db('freecodecamp');
const exams = db.collection('Exam');
@@ -62,13 +67,13 @@ const seed = async () => {
{ upsert: true }
);
console.log(`'${examJson.title}' added to exams database.`);
log(`'${examJson.title}' added to exams database.`);
} catch (err) {
handleError(err, client);
}
}
console.log('Finished seeding exams.');
log('Finished seeding exams.');
};
seed()
+1
View File
@@ -19,6 +19,7 @@
"author": "freeCodeCamp <team@freecodecamp.org>",
"main": "none",
"devDependencies": {
"debug": "4.3.4",
"dotenv": "16.3.1",
"joi": "17.11.0",
"joi-objectid": "3.0.1",