Skip to content

Commit

Permalink
MOBILE-4272 workshop: Fix assessment
Browse files Browse the repository at this point in the history
  • Loading branch information
NoelDeMartin committed Jul 25, 2023
1 parent a07ae84 commit 7b5fd67
Show file tree
Hide file tree
Showing 7 changed files with 129 additions and 13 deletions.
2 changes: 1 addition & 1 deletion src/addons/mod/forum/components/post/post.ts
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ export class AddonModForumPostComponent implements OnInit, OnDestroy, OnChanges
* @param text The new text.
*/
onMessageChange(text?: string | null): void {
this.formData.message = text ?? '';
this.formData.message = text ?? null;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -512,7 +512,7 @@ export class AddonModForumNewDiscussionPage implements OnInit, OnDestroy, CanLea
* @param text The new text.
*/
onMessageChange(text?: string | null): void {
this.newDiscussion.message = text ?? '';
this.newDiscussion.message = text ?? null;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,9 +129,7 @@ export class AddonModWorkshopAssessmentStrategyAccumulativeHandlerService implem
hasErrors = true;
}

if (currentValues[idx].peercomment) {
data['peercomment__idx_' + idx] = currentValues[idx].peercomment;
}
data['peercomment__idx_' + idx] = currentValues[idx].peercomment ?? '';

data['gradeid__idx_' + idx] = parseInt(form.current[idx].gradeid, 10) || 0;
data['dimensionid__idx_' + idx] = parseInt(field.dimensionid, 10);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,7 @@ export class AddonModWorkshopAssessmentStrategyNumErrorsHandlerService implement
hasErrors = true;
}

if (currentValues[idx].peercomment) {
data['peercomment__idx_' + idx] = currentValues[idx].peercomment;
}
data['peercomment__idx_' + idx] = currentValues[idx].peercomment ?? '';

data['gradeid__idx_' + idx] = parseInt(form.current[idx].gradeid, 10) || 0;
data['dimensionid__idx_' + idx] = parseInt(field.dimensionid, 10);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,16 @@ <h2 class="ion-text-wrap">{{ phases[workshop!.phase].title }}</h2>
phases[workshop!.phase].tasks.length">
<ion-item button class="ion-text-wrap" *ngFor="let task of phases[workshop!.phase].tasks"
[class.item-dimmed]="task.code == 'submit' && !showSubmit" (click)="runTask(task)" detail="false">
<ion-icon slot="start" name="far-circle" *ngIf="task.completed == null" aria-hidden="true"></ion-icon>
<ion-icon slot="start" name="fas-circle-xmark" color="danger" *ngIf="task.completed == ''" aria-hidden="true">
<ion-icon slot="start" name="far-circle" *ngIf="task.completed == null"
[attr.aria-label]="'addon.mod_workshop.tasktodo' | translate"></ion-icon>
<ion-icon slot="start" name="fas-circle-xmark" color="danger" *ngIf="task.completed == ''"
[attr.aria-label]="'addon.mod_workshop.taskfail' | translate">
</ion-icon>
<ion-icon slot="start" name="fas-circle-info" color="info" *ngIf="task.completed == 'info'" aria-hidden="true">
<ion-icon slot="start" name="fas-circle-info" color="info" *ngIf="task.completed == 'info'"
[attr.aria-label]="'addon.mod_workshop.taskinfo' | translate">
</ion-icon>
<ion-icon slot="start" name="fas-circle-check" color="success" *ngIf="task.completed == '1'" aria-hidden="true">
<ion-icon slot="start" name="fas-circle-check" color="success" *ngIf="task.completed == '1'"
[attr.aria-label]="'addon.mod_workshop.taskdone' | translate">
</ion-icon>
<ion-label>
<p class="item-heading">{{task.title}}</p>
Expand Down
3 changes: 2 additions & 1 deletion src/addons/mod/workshop/services/workshop-helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import { FileEntry } from '@ionic-native/file/ngx';
import { CoreFile } from '@services/file';
import { CoreFileEntry } from '@services/file-helper';
import { CoreSites } from '@services/sites';
import { CoreTextUtils } from '@services/utils/text';
import { CoreTextUtils, CoreTextFormat } from '@services/utils/text';
import { CoreUtils } from '@services/utils/utils';
import { makeSingleton, Translate } from '@singletons';
import { CoreFormFields } from '@singletons/form';
Expand Down Expand Up @@ -531,6 +531,7 @@ export class AddonModWorkshopHelperProvider {
(await AddonWorkshopAssessmentStrategyDelegate.prepareAssessmentData(workshop.strategy ?? '', selectedValues, form)) ||
{};
data.feedbackauthor = feedbackText;
data.feedbackauthorformat = CoreTextFormat.FORMAT_HTML;
data.feedbackauthorattachmentsid = attachmentsId;
data.nodims = form.dimenssionscount;

Expand Down
115 changes: 115 additions & 0 deletions src/addons/mod/workshop/tests/behat/basic_usage.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
@mod @mod_workshop @app @javascript
Feature: Test basic usage of workshop activity in app

Background:
Given the following "courses" exist:
| fullname | shortname |
| Course 1 | C1 |
And the following "users" exist:
| username | firstname | lastname |
| student1 | First | Student |
| student2 | Second | Student |
| teacher1 | First | Teacher |
And the following "course enrolments" exist:
| user | course | role |
| student1 | C1 | student |
| student2 | C1 | student |
| teacher1 | C1 | editingteacher |
And the following "activities" exist:
| activity | name | intro | course | idnumber |
| workshop | Test workshop | Workshop description | C1 | workshop |

Scenario: Take a workshop

# Setup phase
Given I entered the workshop activity "workshop" on course "Course 1" as "teacher1" in the app
Then I should find "Setup phase" in the app
And I should find "Task done" within "Provide instructions for submission" "ion-item" in the app
And I should find "Task done" within "Set the workshop description" "ion-item" in the app
And I should find "Task to do" within "Edit assessment form" "ion-item" in the app
And I should find "Task to do" within "Switch to the next phase" "ion-item" in the app

When I press "Edit assessment form" in the app
And I press "OK" in the app
And I switch to the browser tab opened by the app
And I log in as "teacher1"
And I set the field "id_description__idx_0_editor" to "Was the submission good?"
And I press "Save and close"
And I change phase in workshop "Test workshop" to "Submission phase"
And I close the browser tab opened by the app
And I pull to refresh in the app
Then I should find "Submission phase" in the app
And I should find "Task done" within "Provide instructions for assessment" "ion-item" in the app
And I should find "Task to do" within "Allocate submissions" "ion-item" in the app
And I should find "expected: 2" within "Allocate submissions" "ion-item" in the app
And I should find "submitted: 0" within "Allocate submissions" "ion-item" in the app
And I should find "to allocate: 0" within "Allocate submissions" "ion-item" in the app

# Submission phase
Given I entered the workshop activity "workshop" on course "Course 1" as "student1" in the app
Then I should find "Task to do" within "Submit your work" "ion-item" in the app

When I press "Edit submission" in the app
And I set the field "Title" to "The Answer" in the app
And I set the field "Submission content" to "42" in the app
And I press "Save" in the app
Then I should find "Task done" within "Submit your work" "ion-item" in the app
And I should find "The Answer" in the app
And I should find "42" in the app

Given I entered the workshop activity "workshop" on course "Course 1" as "teacher1" in the app
When I pull to refresh in the app
Then I should find "Submission phase" in the app
And I should find "Task done" within "Provide instructions for assessment" "ion-item" in the app
And I should find "Task to do" within "Allocate submissions" "ion-item" in the app
And I should find "expected: 2" within "Allocate submissions" "ion-item" in the app
And I should find "submitted: 1" within "Allocate submissions" "ion-item" in the app
And I should find "to allocate: 1" within "Allocate submissions" "ion-item" in the app

When I press "Allocate submissions" in the app
And I press "OK" in the app
And I switch to the browser tab opened by the app
And I allocate submissions in workshop "Test workshop" as:
| Participant | Reviewer |
| First Student | Second Student |
And I change phase in workshop "Test workshop" to "Assessment phase"
And I close the browser tab opened by the app
And I pull to refresh in the app
Then I should find "Assessment phase" in the app

# Assessment phase
Given I entered the workshop activity "workshop" on course "Course 1" as "student2" in the app
Then I should find "Task to do" within "Assess peers" "ion-item" in the app

When I press "The Answer" in the app
And I press "Grade for Aspect 01" in the app
And I press "10 / 10" in the app
And I press "Save" in the app
Then I should find "Assessed submission" in the app

# Grading evaluation phase
Given I entered the workshop activity "workshop" on course "Course 1" as "teacher1" in the app
And I press "Switch to the next phase" in the app
And I press "OK" in the app
And I switch to the browser tab opened by the app
And I press "Continue"
Then I should see "Grading evaluation phase"

When I press "Re-calculate grades"
Then I should see "calculated: 1"

When I close the browser tab opened by the app
And I pull to refresh in the app
Then I should find "Grading evaluation phase" in the app

# Closed
When I press "Switch to the next phase" in the app
And I press "OK" in the app
And I switch to the browser tab opened by the app
And I press "Continue"
Then I should see "Closed"

When I close the browser tab opened by the app
And I pull to refresh in the app
Then I should find "Closed" in the app
And I should find "Conclusion 1" in the app

0 comments on commit 7b5fd67

Please sign in to comment.