Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exam mode: Add quiz pool configuration #6612

Merged
merged 120 commits into from
Oct 18, 2023

Conversation

rriyaldhi
Copy link
Contributor

@rriyaldhi rriyaldhi commented May 20, 2023

Checklist

General

Server

  • Important: I implemented the changes with a very good performance and prevented too many (unnecessary) database calls.
  • I followed the coding and design guidelines.
  • I added multiple integration tests (Spring) related to the features (with a high test coverage).
  • I added pre-authorization annotations according to the guidelines and checked the course groups for all new REST Calls (security).
  • I documented the Java code using JavaDoc style.

Client

  • Important: I implemented the changes with a very good performance, prevented too many (unnecessary) REST calls and made sure the UI is responsive, even with large data.
  • I followed the coding and design guidelines.
  • Following the theming guidelines, I specified colors only in the theming variable files and checked that the changes look consistent in both the light and the dark theme.
  • I added multiple integration tests (Jest) related to the features (with a high test coverage), while following the test guidelines.
  • I added authorities to all new routes and checked the course groups for displaying navigation elements (links, buttons).
  • I documented the TypeScript code using JSDoc style.
  • I added multiple screenshots/screencasts of my UI changes.
  • I translated all newly inserted strings into English and German.

Motivation and Context

Currently, if an instructor wants to have a high variance of quiz questions for an exam, the instructor needs to create a huge number of quiz exercises. Quiz Pool is created to improve the user experience for instructors to prepare such requirements by having groups of quiz questions that will be randomly selected for each student exam.

Description

  1. Add a new component QuizPoolMappingComponent to enable the instructor to map quiz questions to groups.
  2. Add a new Quiz Pool Configuration page that uses the QuizPoolMappingComponent and QuizQuestionEditListComponent.
  3. Add a Quiz Pool button to the Exam Detail Page
  4. Add a new entity: QuizPool and QuizGroup.
  5. Add the relationships between Exam, QuizQuestion, QuizGroup, and QuizPool.
  6. Add Quiz Pool API to update and retrieve Quiz Pool Configuration.
  7. Add quiz_pool and quiz_group Tables.
  8. Add the relationships between exam, quiz_pool, quiz_question, and quiz_group Tables.

This is the class diagram that represents the changes. The classes and the lines with green color mean the classes and the relationships are added on this PR.
class

Exam Mode Testing

The feature is hidden by the latest commit, please use this build for testing: https://bamboo.ase.in.tum.de/deploy/viewDeploymentVersion.action?versionId=624558853

Prerequisites:

  • 1 Instructor
  • 1 Course
  • 1 Exam
  1. Log in to Artemis as an Instructor.
  2. Navigate to the Exam.
  3. Add /quiz-pool at the end of the url. (e.g. https://artemis-test1.artemis.in.tum.de/course-management/23/exams/483/quiz-pool)
  4. Add or Import Quiz Questions.
  5. Add Group(s).
  6. Drag the Quiz Question Draggable Item to the Group.
  7. Save the configuration and then refresh the page. Verify that the configuration is saved.
  8. Drag the Quiz Question Draggable Item in a group to the unmap list.
  9. Save the configuration and then refresh the page. Verify that the configuration is saved.
  10. Delete a group, and verify that the Quiz Questions that were mapped to the group were moved to the unmap list.
  11. Save the configuration and then refresh the page. Verify that the configuration is saved.
  12. Back to the Exam checklist page and verify that there is a Quiz Exam entry on the exercise list table.
  13. Click the Quiz Pool Button again and delete all questions and groups.
  14. Back to the Exam checklist page and verify that the Quiz Exam entry on the exercise list table no longer exists.

Review Progress

Performance Review

  • I confirm that the client changes (in particular related to REST calls and UI responsiveness) are implemented with a very good performance
  • I confirm that the server changes (in particular related to database calls) are implemented with a very good performance

Code Review

  • Code Review 1
  • Code Review 2

Exam Mode Test

  • Test 1
  • Test 2

Test Coverage

Client

Class/File Line Coverage Confirmation (assert/expect)
quiz-group.model.ts 100%
quiz-pool.model.ts 100%
quiz-question.model.ts 100%
exam-checklist-exercisegroup-table.component.ts 95.23%
exam-checklist.component.ts 91.66%
quiz-pool-mapping-question-list.component.ts 100%
quiz-pool-mapping.component.ts 100%
quiz-pool.component.ts 92.92%
quiz-pool.service.ts 100%
navbar.component.ts 90.87%

Server

Class/File Line Coverage Confirmation (assert/expect)
QuizGroup.java 47%
QuizPool.java 100%
QuizQuestion.java 97%
QuizPoolService.java 97%
QuizPoolResource.java 100%

Screenshots

test.mov

@github-actions github-actions bot added client Pull requests that update TypeScript code. (Added Automatically!) database Pull requests that update the database. (Added Automatically!). Require a CRITICAL deployment. server Pull requests that update Java code. (Added Automatically!) tests labels May 20, 2023
@rriyaldhi rriyaldhi changed the base branch from refactor/quiz/participation-client to feature/quiz/refactor-quiz-exercise-detail May 20, 2023 17:56
@rriyaldhi rriyaldhi changed the title Feature/exams/quiz pool configuration Exam: Quiz Pool Configuration May 20, 2023
@rriyaldhi rriyaldhi changed the title Exam: Quiz Pool Configuration Exam mode: Quiz Pool Configuration May 20, 2023
@rriyaldhi rriyaldhi force-pushed the feature/exams/quiz-pool-configuration branch 3 times, most recently from 2b8c576 to 35abe48 Compare May 20, 2023 19:12
Base automatically changed from feature/quiz/refactor-quiz-exercise-detail to develop May 24, 2023 00:21
@rriyaldhi rriyaldhi force-pushed the feature/exams/quiz-pool-configuration branch from ca44cd0 to dc5bbb8 Compare May 24, 2023 08:54
@krusche krusche modified the milestones: 6.5.4, 6.6.0 Oct 3, 2023
@krusche krusche modified the milestones: 6.6.0, 6.6.1 Oct 14, 2023
@krusche krusche modified the milestones: 6.6.1, 6.6.2 Oct 18, 2023
@krusche krusche merged commit f259364 into develop Oct 18, 2023
30 of 38 checks passed
@krusche krusche deleted the feature/exams/quiz-pool-configuration branch October 18, 2023 06:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
client Pull requests that update TypeScript code. (Added Automatically!) component:Exam Mode component:Quiz database Pull requests that update the database. (Added Automatically!). Require a CRITICAL deployment. maintainer-approved The feature maintainer has approved the PR ready to merge server Pull requests that update Java code. (Added Automatically!) tests
Projects
None yet
Development

Successfully merging this pull request may close these issues.