Skip to content

Commit 4c349f7

Browse files
remo5000ning-y
authored andcommitted
Distinguish between open and closed assessments (#181)
* Add a beforeNow helper function Uses es6 Date * Filter missions displayed by open * Add closed assessment overviews - Defined a DEFAULT_QUESTION_ID constant - Moved the rendering of an individual card into a function * Move background image back to html * Refactor display method and add Collapse * Add optional className for controlButton * Use className for collapse buttons * Add style to left-align buttons * Format and update tests * Add pretty representation for overview date * Fix positioning of due date icon * Format and update tests * Add check for closed date, for save button * Add mock assessment for closed mission * Add test for closed assessment * Format and add test snapshot * Bump version 0.1.3 -> 0.1.4
1 parent 83c39d4 commit 4c349f7

File tree

12 files changed

+503
-442
lines changed

12 files changed

+503
-442
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"private": true,
33
"name": "cadet-frontend",
4-
"version": "0.1.3",
4+
"version": "0.1.4",
55
"scripts-info": {
66
"format": "Format source code",
77
"start": "Start the Webpack development server",

src/components/assessment/AssessmentWorkspace.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { IconNames } from '@blueprintjs/icons'
33
import * as React from 'react'
44

55
import { InterpreterOutput } from '../../reducers/states'
6+
import { beforeNow } from '../../utils/dateHelpers'
67
import { history } from '../../utils/history'
78
import { assessmentCategoryLink } from '../../utils/paramParseHelpers'
89
import Workspace, { WorkspaceProps } from '../workspace'
@@ -32,6 +33,7 @@ export type StateProps = {
3233
export type OwnProps = {
3334
assessmentId: number
3435
questionId: number
36+
closeDate: string
3537
}
3638

3739
export type DispatchProps = {
@@ -162,7 +164,7 @@ class AssessmentWorkspace extends React.Component<
162164
hasDoneButton: questionId === this.props.assessment!.questions.length - 1,
163165
hasNextButton: questionId < this.props.assessment!.questions.length - 1,
164166
hasPreviousButton: questionId > 0,
165-
hasSaveButton: true,
167+
hasSaveButton: !beforeNow(this.props.closeDate),
166168
hasShareButton: false,
167169
isRunning: this.props.isRunning,
168170
onClickDone: () => history.push(listingPath),

src/components/assessment/__tests__/AssessmentWorkspace.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import AssessmentWorkspace, { AssessmentWorkspaceProps } from '../AssessmentWork
77
const defaultProps: AssessmentWorkspaceProps = {
88
activeTab: 0,
99
assessmentId: 0,
10+
closeDate: '2048-06-18T05:24:26.026Z',
1011
editorWidth: '50%',
1112
handleAssessmentFetch: (assessmentId: number) => {},
1213
handleChangeActiveTab: (activeTab: number) => {},
@@ -36,6 +37,11 @@ const mockProgrammingAssessmentWorkspaceProps: AssessmentWorkspaceProps = {
3637
questionId: 0
3738
}
3839

40+
const mockClosedProgrammingAssessmentWorkspaceProps: AssessmentWorkspaceProps = {
41+
...mockProgrammingAssessmentWorkspaceProps,
42+
closeDate: '2008-06-18T05:24:26.026Z'
43+
}
44+
3945
const mockMcqAssessmentWorkspaceProps: AssessmentWorkspaceProps = {
4046
...defaultProps,
4147
assessment: mockAssessments[0],
@@ -55,6 +61,12 @@ test('AssessmentWorkspace page with programming question renders correctly', ()
5561
expect(tree.debug()).toMatchSnapshot()
5662
})
5763

64+
test('AssessmentWorkspace page with overdue assessment renders correctly', () => {
65+
const app = <AssessmentWorkspace {...mockClosedProgrammingAssessmentWorkspaceProps} />
66+
const tree = shallow(app)
67+
expect(tree.debug()).toMatchSnapshot()
68+
})
69+
5870
test('AssessmentWorkspace page with MCQ question renders correctly', () => {
5971
const app = <AssessmentWorkspace {...mockMcqAssessmentWorkspaceProps} />
6072
const tree = shallow(app)

src/components/assessment/__tests__/__snapshots__/AssessmentWorkspace.tsx.snap

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,22 @@ exports[`AssessmentWorkspace page with MCQ question renders correctly 1`] = `
1818
</div>"
1919
`;
2020

21+
exports[`AssessmentWorkspace page with overdue assessment renders correctly 1`] = `
22+
"<div className=\\"AssessmentWorkspace pt-dark\\">
23+
<Blueprint2.Dialog className=\\"assessment-briefing\\" isOpen={true} canOutsideClickClose={true}>
24+
<Blueprint2.Card elevation={0} interactive={false}>
25+
<Text>
26+
27+
This is the mission briefing. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas viverra, sem scelerisque ultricies ullamcorper, sem nibh sollicitudin enim, at ultricies sem orci eget odio. Pellentesque varius et mauris quis vestibulum. Etiam in egestas dolor. Nunc consectetur, sapien sodales accumsan convallis, lectus mi tempus ipsum, vel ornare metus turpis sed justo. Vivamus at tellus sed ex convallis commodo at in lectus. Pellentesque pharetra pulvinar sapien pellentesque facilisis. Curabitur efficitur malesuada urna sed aliquam. Quisque massa metus, aliquam in sagittis non, cursus in sem. Morbi vel nunc at nunc pharetra lobortis. Aliquam feugiat ultricies ipsum vel sollicitudin. Vivamus nulla massa, hendrerit sit amet nibh quis, porttitor convallis nisi.
28+
29+
</Text>
30+
<Blueprint2.Button className=\\"assessment-briefing-button\\" onClick={[Function: onClick]} text=\\"Continue\\" />
31+
</Blueprint2.Card>
32+
</Blueprint2.Dialog>
33+
<Workspace controlBarProps={{...}} editorProps={{...}} editorWidth=\\"50%\\" handleEditorWidthChange={[Function: handleEditorWidthChange]} handleSideContentHeightChange={[Function: handleSideContentHeightChange]} mcq={{...}} sideContentHeight={[undefined]} sideContentProps={{...}} replProps={{...}} />
34+
</div>"
35+
`;
36+
2137
exports[`AssessmentWorkspace page with programming question renders correctly 1`] = `
2238
"<div className=\\"AssessmentWorkspace pt-dark\\">
2339
<Blueprint2.Dialog className=\\"assessment-briefing\\" isOpen={true} canOutsideClickClose={true}>

0 commit comments

Comments
 (0)