diff --git a/.husky/pre-push b/.husky/pre-push new file mode 100755 index 0000000..20d0d06 --- /dev/null +++ b/.husky/pre-push @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npm run lint diff --git a/package.json b/package.json index e881918..b5df41e 100755 --- a/package.json +++ b/package.json @@ -13,7 +13,6 @@ "i18n_extract": "BABEL_ENV=i18n fedx-scripts babel src --quiet > /dev/null", "lint": "fedx-scripts eslint --ext .jsx,.js src/", "lint-fix": "fedx-scripts eslint --fix --ext .jsx,.js src/", - "prepush": "npm run lint", "semantic-release": "semantic-release", "start": "fedx-scripts webpack-dev-server --progress", "test": "TZ=GMT fedx-scripts jest --coverage --passWithNoTests", @@ -77,7 +76,7 @@ "enzyme-adapter-react-16": "^1.15.6", "es-check": "^6.0.0", "fetch-mock": "^9.11.0", - "husky": "7.0.1", + "husky": "^7.0.0", "identity-obj-proxy": "^3.0.0", "jest": "27.0.6", "react-dev-utils": "^11.0.4", diff --git a/src/components/InfoPopover.jsx b/src/components/InfoPopover.jsx index 9a6e4c1..9200474 100644 --- a/src/components/InfoPopover.jsx +++ b/src/components/InfoPopover.jsx @@ -18,11 +18,11 @@ export const InfoPopover = ({ children }) => ( trigger="focus" placement="auto" flip - overlay={ + overlay={( {children} - } + )} > ({ Form: { diff --git a/src/containers/CriterionContainer/RadioCriterion.test.jsx b/src/containers/CriterionContainer/RadioCriterion.test.jsx index de6ae13..fd3965e 100644 --- a/src/containers/CriterionContainer/RadioCriterion.test.jsx +++ b/src/containers/CriterionContainer/RadioCriterion.test.jsx @@ -92,9 +92,7 @@ describe('Radio Crition Container', () => { expect(el.isEmptyRender()).toEqual(false); const optionsEl = el.find('.criteria-option'); expect(optionsEl.length).toEqual(props.config.options.length); - optionsEl.forEach((optionEl) => - expect(optionEl.prop('disabled')).toEqual(false), - ); + optionsEl.forEach((optionEl) => expect(optionEl.prop('disabled')).toEqual(false)); }); test('is not grading (all options are disabled)', () => { @@ -104,9 +102,7 @@ describe('Radio Crition Container', () => { expect(el.isEmptyRender()).toEqual(false); const optionsEl = el.find('.criteria-option'); expect(optionsEl.length).toEqual(props.config.options.length); - optionsEl.forEach((optionEl) => - expect(optionEl.prop('disabled')).toEqual(true), - ); + optionsEl.forEach((optionEl) => expect(optionEl.prop('disabled')).toEqual(true)); }); }); diff --git a/src/containers/CriterionContainer/ReviewCriterion.test.jsx b/src/containers/CriterionContainer/ReviewCriterion.test.jsx index 171b713..19b3fdd 100644 --- a/src/containers/CriterionContainer/ReviewCriterion.test.jsx +++ b/src/containers/CriterionContainer/ReviewCriterion.test.jsx @@ -1,7 +1,6 @@ import React from 'react'; import { shallow } from 'enzyme'; -import actions from 'data/actions'; import selectors from 'data/selectors'; import { ReviewCriterion, mapStateToProps } from './ReviewCriterion'; @@ -76,7 +75,7 @@ describe('Review Crition Container', () => { const optionsEl = el.find('.criteria-option'); expect(optionsEl.length).toEqual(props.config.options.length); optionsEl.forEach((optionEl, i) => { - let option = props.config.options[i]; + const option = props.config.options[i]; expect(optionEl.key()).toEqual(option.name); expect(optionEl.find('.option-label').childAt(0).text()).toEqual( option.label, diff --git a/src/containers/CriterionContainer/index.jsx b/src/containers/CriterionContainer/index.jsx index ad29114..dde5582 100644 --- a/src/containers/CriterionContainer/index.jsx +++ b/src/containers/CriterionContainer/index.jsx @@ -5,45 +5,45 @@ import { connect } from 'react-redux'; import { Form } from '@edx/paragon'; import selectors from 'data/selectors'; +import { gradeStatuses } from 'data/services/lms/constants'; import InfoPopover from 'components/InfoPopover'; import RadioCriterion from './RadioCriterion'; import CriterionFeedback from './CriterionFeedback'; import ReviewCriterion from './ReviewCriterion'; -import { gradeStatuses } from 'data/services/lms/constants'; /** * */ -export class CriterionContainer extends React.Component { - render() { - const { config, isGrading, orderNum, gradeStatus } = this.props; - return ( - - - {config.prompt} - - {config.options.map((option) => ( -
- {option.label} -
- {option.explanation} -
- ))} -
-
-
- {isGrading || gradeStatus === gradeStatuses.graded ? ( - - ) : ( - - )} -
- -
- ); - } -} +export const CriterionContainer = (props) => { + const { + config, isGrading, orderNum, gradeStatus, + } = props; + return ( + + + {config.prompt} + + {config.options.map((option) => ( +
+ {option.label} +
+ {option.explanation} +
+ ))} +
+
+
+ {isGrading || gradeStatus === gradeStatuses.graded ? ( + + ) : ( + + )} +
+ +
+ ); +}; CriterionContainer.defaultProps = {}; diff --git a/src/containers/CriterionContainer/index.test.jsx b/src/containers/CriterionContainer/index.test.jsx index d5cc0e9..f7995ce 100644 --- a/src/containers/CriterionContainer/index.test.jsx +++ b/src/containers/CriterionContainer/index.test.jsx @@ -2,9 +2,10 @@ import React from 'react'; import { shallow } from 'enzyme'; import selectors from 'data/selectors'; -import { CriterionContainer, mapStateToProps } from '.'; import { gradeStatuses } from 'data/services/lms/constants'; +import { CriterionContainer, mapStateToProps } from '.'; + jest.mock('components/InfoPopover', () => 'InfoPopover'); jest.mock('./RadioCriterion', () => 'RadioCriterion'); jest.mock('./CriterionFeedback', () => 'CriterionFeedback'); diff --git a/src/containers/Rubric/RubricFeedback.jsx b/src/containers/Rubric/RubricFeedback.jsx index e4cd57f..fcacfac 100644 --- a/src/containers/Rubric/RubricFeedback.jsx +++ b/src/containers/Rubric/RubricFeedback.jsx @@ -23,7 +23,13 @@ export class RubricFeedback extends React.Component { } render() { - const { isGrading, value, feedbackPrompt, config } = this.props; + const { + isGrading, + value, + feedbackPrompt, + config, + } = this.props; + if (config === feedbackRequirement.disabled) { return null; } diff --git a/src/containers/Rubric/RubricFeedback.test.jsx b/src/containers/Rubric/RubricFeedback.test.jsx index 3dadadc..80775f1 100644 --- a/src/containers/Rubric/RubricFeedback.test.jsx +++ b/src/containers/Rubric/RubricFeedback.test.jsx @@ -3,15 +3,16 @@ import { shallow } from 'enzyme'; import actions from 'data/actions'; import selectors from 'data/selectors'; +import { + feedbackRequirement, + gradeStatuses, +} from 'data/services/lms/constants'; + import { RubricFeedback, mapDispatchToProps, mapStateToProps, } from './RubricFeedback'; -import { - feedbackRequirement, - gradeStatuses, -} from 'data/services/lms/constants'; jest.mock('components/InfoPopover', () => 'InfoPopover');