Compare commits
1 Commits
open-relea
...
Ali-Abbas/
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
141518f890 |
2
Makefile
2
Makefile
@@ -3,7 +3,7 @@ npm-install-%: ## install specified % npm package
|
||||
git add package.json
|
||||
|
||||
transifex_resource = frontend-app-ora-grading
|
||||
transifex_langs = "ar,de_DE,es_419,fa_IR,fr,fr_CA,hi,it_IT,pt_PT,uk,ru,zh_CN"
|
||||
transifex_langs = "ar,fr,es_419,zh_CN,fr_CA,it_IT,pt_PT,de_DE,uk,ru,hi"
|
||||
|
||||
intl_imports = ./node_modules/.bin/intl-imports.js
|
||||
transifex_utils = ./node_modules/.bin/transifex-utils.js
|
||||
|
||||
119
README.rst
119
README.rst
@@ -1,8 +1,7 @@
|
||||
frontend-app-ora-grading
|
||||
#############################
|
||||
|
||||
|license-badge| |status-badge| |ci-badge| |codecov-badge|
|
||||
########################
|
||||
|
||||
|ci-badge| |codecov-badge| |doc-badge| |license-badge| |status-badge|
|
||||
|
||||
Purpose
|
||||
*******
|
||||
@@ -23,56 +22,25 @@ app in ``edx-platform``.
|
||||
Getting Started
|
||||
***************
|
||||
|
||||
Prerequisites
|
||||
=============
|
||||
|
||||
The `devstack`_ is currently recommended as a development environment for your
|
||||
new MFE. If you start it with ``make dev.up.lms`` that should give you
|
||||
everything you need as a companion to this frontend.
|
||||
|
||||
Note that it is also possible to use `Tutor`_ to develop an MFE. You can refer
|
||||
to the `relevant tutor-mfe documentation`_ to get started using it.
|
||||
|
||||
.. _Devstack: https://github.com/openedx/devstack
|
||||
|
||||
.. _Tutor: https://github.com/overhangio/tutor
|
||||
|
||||
.. _relevant tutor-mfe documentation: https://github.com/overhangio/tutor-mfe#mfe-development
|
||||
|
||||
Developing
|
||||
==========
|
||||
|
||||
Cloning and Startup
|
||||
One Time Setup
|
||||
--------------
|
||||
|
||||
First, clone the repo, install code prerequisites, and start the app.
|
||||
|
||||
.. code-block::
|
||||
|
||||
# Clone the repository
|
||||
git clone git@github.com:openedx/frontend-app-ora-grading.git
|
||||
cd frontend-app-ora-grading
|
||||
|
||||
1. Clone your new repo:
|
||||
# Install prerequisites
|
||||
npm install
|
||||
|
||||
``git clone git@github.com:openedx/frontend-app-ora-grading.git``
|
||||
|
||||
2. Use node v18.x.
|
||||
|
||||
The current version of the micro-frontend build scripts support node 18.
|
||||
Using other major versions of node *may* work, but this is unsupported. For
|
||||
convenience, this repository includes an .nvmrc file to help in setting the
|
||||
correct node version via `nvm <https://github.com/nvm-sh/nvm>`_.
|
||||
|
||||
3. Install npm dependencies:
|
||||
|
||||
``cd frontend-app-ora-grading && npm install``
|
||||
|
||||
4. Update the application port to use for local development:
|
||||
|
||||
Default port is 1993. If this does not work for you, update the line
|
||||
`PORT=1993` to your port in all .env.* files
|
||||
|
||||
5. Start the dev server:
|
||||
|
||||
``npm start``
|
||||
# Start the MFE
|
||||
npm run start
|
||||
|
||||
The app will, by default, run on `http://localhost:1993` unless otherwise
|
||||
specified in ``.env.development:PORT`` and ``.env.development:BASE_URL``.
|
||||
@@ -144,24 +112,24 @@ the `MFE production deployment guide`_
|
||||
|
||||
.. _MFE production deployment guide: https://openedx.github.io/frontend-platform/#production-deployment-strategy
|
||||
|
||||
Internationalization
|
||||
====================
|
||||
|
||||
Please see refer to the `frontend-platform i18n howto`_ for documentation on
|
||||
internationalization.
|
||||
|
||||
.. _frontend-platform i18n howto: https://github.com/openedx/frontend-platform/blob/master/docs/how_tos/i18n.rst
|
||||
|
||||
Getting Help
|
||||
************
|
||||
|
||||
Documentation
|
||||
=============
|
||||
|
||||
See `ORA Staff Grading on ReadTheDocs`_ for more in-depth usage information.
|
||||
|
||||
.. _ORA Staff Grading on ReadTheDocs: https://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/exercises_tools/open_response_assessments/ORA_Staff_Grading.html#ora-staff-grading
|
||||
|
||||
More Help
|
||||
=========
|
||||
|
||||
If you're having trouble, we have discussion forums at
|
||||
https://discuss.openedx.org where you can connect with others in the community.
|
||||
|
||||
Our real-time conversations are on Slack. You can request a `Slack
|
||||
invitation`_, then join our `community Slack workspace`_. Because this is a
|
||||
frontend repository, the best place to discuss it would be in the `#wg-frontend
|
||||
channel`_.
|
||||
invitation`_, then join our `community Slack workspace`_.
|
||||
|
||||
For anything non-trivial, the best path is to open an issue in this repository
|
||||
with as many details about the issue you are facing as you can provide.
|
||||
@@ -172,30 +140,27 @@ For more information about these options, see the `Getting Help`_ page.
|
||||
|
||||
.. _Slack invitation: https://openedx.org/slack
|
||||
.. _community Slack workspace: https://openedx.slack.com/
|
||||
.. _#wg-frontend channel: https://openedx.slack.com/archives/C04BM6YC7A6
|
||||
.. _Getting Help: https://openedx.org/community/connect
|
||||
.. _Getting Help: https://openedx.org/getting-help
|
||||
|
||||
License
|
||||
*******
|
||||
|
||||
The code in this repository is licensed under the AGPLv3 unless otherwise
|
||||
noted.
|
||||
The code in this repository is licensed under the GNU Affero General Public
|
||||
License v3.0 unless otherwise noted.
|
||||
|
||||
Please see `LICENSE <LICENSE>`_ for details.
|
||||
|
||||
Contributing
|
||||
************
|
||||
|
||||
Contributions are very welcome. Please read `How To Contribute`_ for details.
|
||||
This project is currently only accepting bug fixes, security fixes, and
|
||||
maintenance work. New features should be discussed in advance with the owning
|
||||
team and added to the public roadmap or they may not be accepted. You can start
|
||||
a conversation by creating a new issue on this repo summarizing your feature
|
||||
idea.
|
||||
|
||||
.. _How To Contribute: https://openedx.org/r/how-to-contribute
|
||||
|
||||
This project is currently accepting all types of contributions, bug fixes,
|
||||
security fixes, maintenance work, or new features. However, please make sure
|
||||
to have a discussion about your new feature idea with the maintainers prior to
|
||||
beginning development to maximize the chances of your change being accepted.
|
||||
You can start a conversation by creating a new issue on this repo summarizing
|
||||
your idea.
|
||||
Please read `How To Contribute <https://openedx.org/r/how-to-contribute>`_ for
|
||||
details.
|
||||
|
||||
The Open edX Code of Conduct
|
||||
****************************
|
||||
@@ -216,18 +181,22 @@ file in this repo.
|
||||
Reporting Security Issues
|
||||
*************************
|
||||
|
||||
Please do not report security issues in public, and email security@openedx.org instead.
|
||||
Please do not report security issues in public. Please email security@openedx.org.
|
||||
|
||||
.. |ci-badge| image:: https://github.com/openedx/frontend-app-ora-grading/actions/workflows/ci.yml/badge.svg
|
||||
:target: https://github.com/openedx/frontend-app-ora-grading/actions/workflows/ci.yml
|
||||
:alt: CI
|
||||
|
||||
.. |codecov-badge| image:: https://codecov.io/github/openedx/frontend-app-ora-grading/coverage.svg?branch=master
|
||||
:target: https://codecov.io/github/openedx/frontend-app-ora-grading?branch=master
|
||||
:alt: Codecov
|
||||
|
||||
.. |doc-badge| image:: https://readthedocs.org/projects/frontend-app-ora-grading/badge/?version=latest
|
||||
:target: https://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/exercises_tools/open_response_assessments/ORA_Staff_Grading.html
|
||||
:alt: Documentation
|
||||
|
||||
.. |license-badge| image:: https://img.shields.io/github/license/openedx/frontend-app-ora-grading.svg
|
||||
:target: https://github.com/openedx/frontend-app-ora-grading/blob/master/LICENSE
|
||||
:alt: License
|
||||
|
||||
.. |status-badge| image:: https://img.shields.io/badge/Status-Maintained-brightgreen
|
||||
|
||||
.. |ci-badge| image:: https://github.com/openedx/frontend-app-ora-grading/actions/workflows/ci.yml/badge.svg
|
||||
:target: https://github.com/openedx/frontend-app-ora-grading/actions/workflows/ci.yml
|
||||
:alt: Continuous Integration
|
||||
|
||||
.. |codecov-badge| image:: https://codecov.io/github/openedx/frontend-app-ora-grading/coverage.svg?branch=master
|
||||
:target: https://codecov.io/github/openedx/frontend-app-ora-grading?branch=master
|
||||
:alt: Codecov
|
||||
|
||||
@@ -26,3 +26,4 @@ There are only two requirements for a good `make target` name
|
||||
What `make validate-no-uncommitted-package-lock-changes` does is `git diff`s for any `package-lock.json` file changes in your project.
|
||||
|
||||
This is important because `npm` uses the pinned dependencies in your `package-lock.json` file to build the `node_modules` directory. However, the dependencies defined within the `package.json` file can be modified manually, for example, to become misaligned with the dependencies defined within the `package-lock.json`. So when `npm install` executes, the `package-lock.json` file will be updated to mirror the modified `package.json` changes.
|
||||
|
||||
|
||||
12477
package-lock.json
generated
12477
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
30
package.json
30
package.json
@@ -24,11 +24,11 @@
|
||||
"access": "public"
|
||||
},
|
||||
"dependencies": {
|
||||
"@edx/brand": "npm:@edx/brand-openedx@^1.2.0",
|
||||
"@edx/frontend-component-footer": "12.2.1",
|
||||
"@edx/frontend-component-header": "4.6.0",
|
||||
"@edx/frontend-platform": "4.6.1",
|
||||
"@edx/paragon": "^20.44.0",
|
||||
"@edx/brand": "npm:@edx/brand-edx.org@^2.0.3",
|
||||
"@edx/frontend-component-footer": "^12.0.0",
|
||||
"@edx/frontend-component-header": "^4.2.2",
|
||||
"@edx/frontend-platform": "^4.6.1",
|
||||
"@edx/paragon": "^20.30.0",
|
||||
"@fortawesome/fontawesome-svg-core": "^1.2.36",
|
||||
"@fortawesome/free-brands-svg-icons": "^5.15.4",
|
||||
"@fortawesome/free-solid-svg-icons": "^5.15.4",
|
||||
@@ -39,7 +39,7 @@
|
||||
"@zip.js/zip.js": "^2.4.6",
|
||||
"axios": "^0.27.0",
|
||||
"classnames": "^2.3.1",
|
||||
"core-js": "3.32.1",
|
||||
"core-js": "3.31.1",
|
||||
"dompurify": "^2.3.1",
|
||||
"email-prop-type": "^3.0.1",
|
||||
"enzyme": "^3.11.0",
|
||||
@@ -53,12 +53,12 @@
|
||||
"moment": "^2.29.3",
|
||||
"prop-types": "15.8.1",
|
||||
"query-string": "7.1.3",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"react": "^16.14.0",
|
||||
"react-dom": "^16.14.0",
|
||||
"react-helmet": "^6.1.0",
|
||||
"react-intl": "^5.20.9",
|
||||
"react-pdf": "^5.5.0",
|
||||
"react-redux": "^7.2.9",
|
||||
"react-redux": "^7.2.4",
|
||||
"react-router": "5.3.4",
|
||||
"react-router-dom": "5.3.4",
|
||||
"react-router-redux": "^5.0.0-alpha.9",
|
||||
@@ -67,26 +67,26 @@
|
||||
"redux-devtools-extension": "2.13.9",
|
||||
"redux-logger": "3.0.6",
|
||||
"redux-thunk": "2.4.2",
|
||||
"regenerator-runtime": "^0.14.0",
|
||||
"regenerator-runtime": "^0.13.9",
|
||||
"reselect": "^4.0.0",
|
||||
"util": "^0.12.4",
|
||||
"whatwg-fetch": "^3.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@edx/browserslist-config": "^1.2.0",
|
||||
"@edx/frontend-build": "^12.7.0",
|
||||
"@edx/frontend-build": "^12.9.0-alpha.1",
|
||||
"@edx/reactifex": "^2.1.1",
|
||||
"@testing-library/jest-dom": "^5.14.1",
|
||||
"@testing-library/react": "12.1.5",
|
||||
"@wojtekmaj/enzyme-adapter-react-17": "0.8.0",
|
||||
"@testing-library/react": "^12.1.5",
|
||||
"axios-mock-adapter": "^1.20.0",
|
||||
"enzyme-adapter-react-16": "^1.15.6",
|
||||
"fetch-mock": "^9.11.0",
|
||||
"husky": "^7.0.0",
|
||||
"identity-obj-proxy": "^3.0.0",
|
||||
"jest": "29.6.4",
|
||||
"jest": "29.6.1",
|
||||
"jest-expect-message": "^1.0.2",
|
||||
"react-dev-utils": "^12.0.1",
|
||||
"react-test-renderer": "^17.0.2",
|
||||
"react-test-renderer": "^16.14.0",
|
||||
"reactifex": "1.1.1",
|
||||
"redux-mock-store": "^1.5.4",
|
||||
"semantic-release": "^19.0.3"
|
||||
|
||||
@@ -10,7 +10,6 @@ $fa-font-path: "~font-awesome/fonts";
|
||||
$input-focus-box-shadow: $input-box-shadow; // hack to get upgrade to paragon 4.0.0 to work
|
||||
|
||||
@import "~@edx/frontend-component-footer/dist/_footer";
|
||||
@import "~@edx/frontend-component-header/dist/index";
|
||||
|
||||
#root {
|
||||
display: flex;
|
||||
|
||||
@@ -19,7 +19,7 @@ export const ErrorBanner = ({ actions, headingMessage, children }) => {
|
||||
return (
|
||||
<Alert variant="danger" icon={Info} actions={actionButtons}>
|
||||
<Alert.Heading>
|
||||
{headingMessage ? <FormattedMessage {...headingMessage} /> : null}
|
||||
<FormattedMessage {...headingMessage} />
|
||||
</Alert.Heading>
|
||||
{children}
|
||||
</Alert>
|
||||
|
||||
@@ -28,6 +28,6 @@
|
||||
|
||||
@include media-breakpoint-down(sm) {
|
||||
.file-card-title {
|
||||
width: calc(map-get($container-max-widths, "sm")/2);
|
||||
width: map-get($container-max-widths, "sm")/2;
|
||||
}
|
||||
}
|
||||
@@ -163,7 +163,7 @@ describe('Criterion Feedback', () => {
|
||||
});
|
||||
|
||||
describe('mapStateToProps', () => {
|
||||
const testState = { arbitraryState: 'some data' };
|
||||
const testState = { abitaryState: 'some data' };
|
||||
const ownProps = { orderNum: props.orderNum };
|
||||
let mapped;
|
||||
beforeEach(() => {
|
||||
|
||||
@@ -40,14 +40,14 @@ describe('Radio Criterion Container', () => {
|
||||
feedback: 'feedback mock',
|
||||
options: [
|
||||
{
|
||||
explanation: 'explanation',
|
||||
explanation: 'explaination',
|
||||
feedback: 'option feedback',
|
||||
label: 'this label',
|
||||
name: 'option name',
|
||||
points: 1,
|
||||
},
|
||||
{
|
||||
explanation: 'explanation 2',
|
||||
explanation: 'explaination 2',
|
||||
feedback: 'option feedback 2',
|
||||
label: 'this label 2',
|
||||
name: 'option name 2',
|
||||
@@ -129,7 +129,7 @@ describe('Radio Criterion Container', () => {
|
||||
});
|
||||
|
||||
describe('mapStateToProps', () => {
|
||||
const testState = { arbitrary: 'some data' };
|
||||
const testState = { arbitary: 'some data' };
|
||||
const ownProps = { orderNum: props.orderNum };
|
||||
let mapped;
|
||||
beforeEach(() => {
|
||||
|
||||
@@ -29,14 +29,14 @@ describe('Review Crition Container', () => {
|
||||
feedback: 'feedback mock',
|
||||
options: [
|
||||
{
|
||||
explanation: 'explanation',
|
||||
explanation: 'explaination',
|
||||
feedback: 'option feedback',
|
||||
label: 'this label',
|
||||
name: 'option name',
|
||||
points: 1,
|
||||
},
|
||||
{
|
||||
explanation: 'explanation 2',
|
||||
explanation: 'explaination 2',
|
||||
feedback: 'option feedback 2',
|
||||
label: 'this label 2',
|
||||
name: 'option name 2',
|
||||
@@ -78,7 +78,7 @@ describe('Review Crition Container', () => {
|
||||
});
|
||||
|
||||
describe('mapStateToProps', () => {
|
||||
const testState = { arbitrary: 'some data' };
|
||||
const testState = { arbitary: 'some data' };
|
||||
const ownProps = { orderNum: props.orderNum };
|
||||
let mapped;
|
||||
beforeEach(() => {
|
||||
|
||||
@@ -19,7 +19,7 @@ exports[`Criterion Container snapshot is graded and is not grading 1`] = `
|
||||
this label
|
||||
</strong>
|
||||
<br />
|
||||
explanation
|
||||
explaination
|
||||
</div>
|
||||
<div
|
||||
className="help-popover-option"
|
||||
@@ -29,7 +29,7 @@ exports[`Criterion Container snapshot is graded and is not grading 1`] = `
|
||||
this label 2
|
||||
</strong>
|
||||
<br />
|
||||
explanation 2
|
||||
explaination 2
|
||||
</div>
|
||||
</InfoPopover>
|
||||
</Form.Label>
|
||||
@@ -67,7 +67,7 @@ exports[`Criterion Container snapshot is ungraded and is grading 1`] = `
|
||||
this label
|
||||
</strong>
|
||||
<br />
|
||||
explanation
|
||||
explaination
|
||||
</div>
|
||||
<div
|
||||
className="help-popover-option"
|
||||
@@ -77,7 +77,7 @@ exports[`Criterion Container snapshot is ungraded and is grading 1`] = `
|
||||
this label 2
|
||||
</strong>
|
||||
<br />
|
||||
explanation 2
|
||||
explaination 2
|
||||
</div>
|
||||
</InfoPopover>
|
||||
</Form.Label>
|
||||
@@ -115,7 +115,7 @@ exports[`Criterion Container snapshot is ungraded and is not grading 1`] = `
|
||||
this label
|
||||
</strong>
|
||||
<br />
|
||||
explanation
|
||||
explaination
|
||||
</div>
|
||||
<div
|
||||
className="help-popover-option"
|
||||
@@ -125,7 +125,7 @@ exports[`Criterion Container snapshot is ungraded and is not grading 1`] = `
|
||||
this label 2
|
||||
</strong>
|
||||
<br />
|
||||
explanation 2
|
||||
explaination 2
|
||||
</div>
|
||||
</InfoPopover>
|
||||
</Form.Label>
|
||||
|
||||
@@ -34,14 +34,14 @@ describe('Criterion Container', () => {
|
||||
feedback: 'feedback mock',
|
||||
options: [
|
||||
{
|
||||
explanation: 'explanation',
|
||||
explanation: 'explaination',
|
||||
feedback: 'option feedback',
|
||||
label: 'this label',
|
||||
name: 'option name',
|
||||
points: 2,
|
||||
},
|
||||
{
|
||||
explanation: 'explanation 2',
|
||||
explanation: 'explaination 2',
|
||||
feedback: 'option feedback 2',
|
||||
label: 'this label 2',
|
||||
name: 'option name 2',
|
||||
@@ -89,16 +89,16 @@ describe('Criterion Container', () => {
|
||||
});
|
||||
|
||||
test('is ungraded and is grading (Radio criterion get render)', () => {
|
||||
const rubricCriteria = el.find('.rubric-criteria');
|
||||
expect(rubricCriteria.children(0).name()).toEqual('RadioCriterion');
|
||||
const rubricCritera = el.find('.rubric-criteria');
|
||||
expect(rubricCritera.children(0).name()).toEqual('RadioCriterion');
|
||||
});
|
||||
|
||||
test('is ungraded and is not grading (Review criterion get render)', () => {
|
||||
el.setProps({
|
||||
isGrading: false,
|
||||
});
|
||||
const rubricCriteria = el.find('.rubric-criteria');
|
||||
expect(rubricCriteria.children(0).name()).toEqual('ReviewCriterion');
|
||||
const rubricCritera = el.find('.rubric-criteria');
|
||||
expect(rubricCritera.children(0).name()).toEqual('ReviewCriterion');
|
||||
});
|
||||
|
||||
test('is graded and is not grading (Radio criterion get render)', () => {
|
||||
@@ -106,13 +106,13 @@ describe('Criterion Container', () => {
|
||||
isGrading: false,
|
||||
gradeStatus: gradeStatuses.graded,
|
||||
});
|
||||
const rubricCriteria = el.find('.rubric-criteria');
|
||||
expect(rubricCriteria.children(0).name()).toEqual('RadioCriterion');
|
||||
const rubricCritera = el.find('.rubric-criteria');
|
||||
expect(rubricCritera.children(0).name()).toEqual('RadioCriterion');
|
||||
});
|
||||
});
|
||||
|
||||
describe('mapStateToProps', () => {
|
||||
const testState = { arbitraryState: 'some data' };
|
||||
const testState = { abitaryState: 'some data' };
|
||||
const ownProps = { orderNum: props.orderNum };
|
||||
let mapped;
|
||||
beforeEach(() => {
|
||||
|
||||
@@ -14,7 +14,7 @@ const messages = defineMessages({
|
||||
optional: {
|
||||
id: 'ora-grading.CriterionFeedback.optional',
|
||||
defaultMessage: '(Optional)',
|
||||
description: 'additional label for optional feedback field',
|
||||
description: 'addtional label for optional feedback field',
|
||||
},
|
||||
optionPoints: {
|
||||
id: 'ora-grading.RadioCriterion.optionPoints',
|
||||
|
||||
@@ -63,8 +63,8 @@ export class SubmissionsTable extends React.Component {
|
||||
translate = (...args) => this.props.intl.formatMessage(...args);
|
||||
|
||||
handleViewAllResponsesClick = (data) => () => {
|
||||
const getSubmissionUUID = (row) => row.original.submissionUUID;
|
||||
this.props.loadSelectionForReview(data.map(getSubmissionUUID));
|
||||
const getsubmissionUUID = (row) => row.original.submissionUUID;
|
||||
this.props.loadSelectionForReview(data.map(getsubmissionUUID));
|
||||
};
|
||||
|
||||
render() {
|
||||
|
||||
@@ -43,7 +43,7 @@ exports[`FileDownload component snapshot download is completed 1`] = `
|
||||
/>,
|
||||
"pending": <FormattedMessage
|
||||
defaultMessage="Downloading"
|
||||
description="Download files pending state label"
|
||||
description="Download files penging state label"
|
||||
id="ora-grading.ResponseDisplay.SubmissionFiles.downloading"
|
||||
/>,
|
||||
}
|
||||
@@ -96,7 +96,7 @@ exports[`FileDownload component snapshot download is failed 1`] = `
|
||||
/>,
|
||||
"pending": <FormattedMessage
|
||||
defaultMessage="Downloading"
|
||||
description="Download files pending state label"
|
||||
description="Download files penging state label"
|
||||
id="ora-grading.ResponseDisplay.SubmissionFiles.downloading"
|
||||
/>,
|
||||
}
|
||||
@@ -149,7 +149,7 @@ exports[`FileDownload component snapshot download is inactive 1`] = `
|
||||
/>,
|
||||
"pending": <FormattedMessage
|
||||
defaultMessage="Downloading"
|
||||
description="Download files pending state label"
|
||||
description="Download files penging state label"
|
||||
id="ora-grading.ResponseDisplay.SubmissionFiles.downloading"
|
||||
/>,
|
||||
}
|
||||
@@ -202,7 +202,7 @@ exports[`FileDownload component snapshot download is pending 1`] = `
|
||||
/>,
|
||||
"pending": <FormattedMessage
|
||||
defaultMessage="Downloading"
|
||||
description="Download files pending state label"
|
||||
description="Download files penging state label"
|
||||
id="ora-grading.ResponseDisplay.SubmissionFiles.downloading"
|
||||
/>,
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ const messages = defineMessages({
|
||||
downloading: {
|
||||
id: 'ora-grading.ResponseDisplay.SubmissionFiles.downloading',
|
||||
defaultMessage: 'Downloading',
|
||||
description: 'Download files pending state label',
|
||||
description: 'Download files penging state label',
|
||||
},
|
||||
downloaded: {
|
||||
id: 'ora-grading.ResponseDisplay.SubmissionFiles.downloaded',
|
||||
|
||||
@@ -19,7 +19,7 @@ jest.mock('data/redux/grading/selectors', () => ({
|
||||
doesExist: (state) => ({ nextDoesExist: state }),
|
||||
},
|
||||
activeIndex: (state) => ({ activeIndex: state }),
|
||||
selectionLength: (state) => ({ selectionLength: state }),
|
||||
selectionLength: (state) => ({ selectionlength: state }),
|
||||
}));
|
||||
jest.mock('data/redux/requests/selectors', () => ({
|
||||
allowNavigation: (state) => ({ allowNavigation: state }),
|
||||
|
||||
@@ -53,7 +53,7 @@ describe('ReviewContent component', () => {
|
||||
test('isFailed loads from requests.isFailed(fetchSubmission)', () => {
|
||||
expect(mapped.isFailed).toEqual(selectors.requests.isFailed(testState, { requestKey }));
|
||||
});
|
||||
test('isLoaded loads from requests.isCompleted(fetchSubmission)', () => {
|
||||
test('isLoadeed loads from requests.isCompleted(fetchSubmission)', () => {
|
||||
expect(mapped.isLoaded).toEqual(selectors.requests.isCompleted(testState, { requestKey }));
|
||||
});
|
||||
});
|
||||
|
||||
@@ -62,7 +62,7 @@ describe('DownloadErrors component', () => {
|
||||
});
|
||||
describe('behavior', () => {
|
||||
describe('clearState', () => {
|
||||
it('calls props.clearState with requestKey: downloadFiles', () => {
|
||||
it('calls props.clearState with requestKey: downladFiles', () => {
|
||||
el.instance().cancelAction();
|
||||
expect(props.clearState).toHaveBeenCalledWith({ requestKey: RequestKeys.downloadFiles });
|
||||
});
|
||||
|
||||
@@ -16,7 +16,7 @@ import ReviewError from './ReviewError';
|
||||
*/
|
||||
export class LockErrors extends React.Component {
|
||||
get errorProp() {
|
||||
if (this.props.errorStatus === ErrorStatuses.conflict) {
|
||||
if (this.props.errorStatus === ErrorStatuses.forbidden) {
|
||||
return {
|
||||
heading: messages.errorLockContestedHeading,
|
||||
message: messages.errorLockContested,
|
||||
|
||||
@@ -42,7 +42,7 @@ describe('LockErrors component', () => {
|
||||
expect(el.instance().render()).toMatchSnapshot();
|
||||
});
|
||||
test('snapshot: error with conflicted lock', () => {
|
||||
el.setProps({ errorStatus: ErrorStatuses.conflict });
|
||||
el.setProps({ errorStatus: ErrorStatuses.forbidden });
|
||||
expect(el.instance().render()).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -106,7 +106,7 @@ describe('Review Modal Submit Error hooks', () => {
|
||||
errorStatus = 'test-status';
|
||||
const mockErrorProps = (args) => ({
|
||||
confirm: { confirm: args },
|
||||
headingMessage: { headingMessage: args },
|
||||
headingMessag: { headingMessage: args },
|
||||
contentMessage: { contentMessage: args },
|
||||
});
|
||||
const mockProps = mockErrorProps({ dispatch, errorStatus });
|
||||
|
||||
@@ -32,7 +32,7 @@ jest.mock('data/redux/grading/selectors', () => ({
|
||||
overallFeedback: jest.fn((...args) => ({
|
||||
selectedOverallFeedback: args,
|
||||
})),
|
||||
isGrading: jest.fn((...args) => ({ isGrading: args })),
|
||||
isGrading: jest.fn((...args) => ({ isGragrding: args })),
|
||||
},
|
||||
validation: {
|
||||
overallFeedbackIsInvalid: jest.fn((...args) => ({
|
||||
@@ -44,7 +44,7 @@ jest.mock('data/redux/grading/selectors', () => ({
|
||||
describe('Rubric Feedback component', () => {
|
||||
const props = {
|
||||
intl: { formatMessage },
|
||||
config: 'config string',
|
||||
config: 'config stirng',
|
||||
isGrading: true,
|
||||
value: 'some value',
|
||||
isInvalid: false,
|
||||
@@ -135,7 +135,7 @@ describe('Rubric Feedback component', () => {
|
||||
});
|
||||
|
||||
describe('mapStateToProps', () => {
|
||||
const testState = { arbitraryState: 'some data' };
|
||||
const testState = { abitaryState: 'some data' };
|
||||
let mapped;
|
||||
beforeEach(() => {
|
||||
mapped = mapStateToProps(testState);
|
||||
|
||||
@@ -10,7 +10,7 @@ exports[`Rubric Feedback component snapshot feedback value is invalid 1`] = `
|
||||
>
|
||||
<FormattedMessage
|
||||
defaultMessage="Overall comments"
|
||||
description="Rubric overall comments label"
|
||||
description="Rubric overall commnents label"
|
||||
id="ora-grading.Rubric.overallComments"
|
||||
/>
|
||||
</span>
|
||||
@@ -53,7 +53,7 @@ exports[`Rubric Feedback component snapshot is graded 1`] = `
|
||||
>
|
||||
<FormattedMessage
|
||||
defaultMessage="Overall comments"
|
||||
description="Rubric overall comments label"
|
||||
description="Rubric overall commnents label"
|
||||
id="ora-grading.Rubric.overallComments"
|
||||
/>
|
||||
</span>
|
||||
@@ -84,7 +84,7 @@ exports[`Rubric Feedback component snapshot is grading 1`] = `
|
||||
>
|
||||
<FormattedMessage
|
||||
defaultMessage="Overall comments"
|
||||
description="Rubric overall comments label"
|
||||
description="Rubric overall commnents label"
|
||||
id="ora-grading.Rubric.overallComments"
|
||||
/>
|
||||
</span>
|
||||
|
||||
@@ -43,7 +43,7 @@ describe('Rubric hooks', () => {
|
||||
afterEach(state.restore);
|
||||
describe('redux values', () => {
|
||||
beforeEach(() => { hook = hooks.reduxValues(); });
|
||||
test('loads gradeIsPending from isPending requests selector on submitGrade request', () => {
|
||||
test('loads gradeIsPending from isPending requests selectror on submitGrade request', () => {
|
||||
expect(hook.gradeIsPending.useSelector(testState)).toEqual(
|
||||
selectors.requests.isPending(testState, { requestKey: RequestKeys.submitGrade }),
|
||||
);
|
||||
@@ -51,7 +51,7 @@ describe('Rubric hooks', () => {
|
||||
test('loads criteriaIndices from rubric selector', () => {
|
||||
expect(hook.criteriaIndices).toEqual(useSelector(selectors.app.rubric.criteriaIndices));
|
||||
});
|
||||
test('loads isCompleted from requests selector on submitGrade request', () => {
|
||||
test('loads isCompleted from requests selectror on submitGrade request', () => {
|
||||
expect(hook.isCompleted.useSelector(testState)).toEqual(
|
||||
selectors.requests.isCompleted(testState, { requestKey: RequestKeys.submitGrade }),
|
||||
);
|
||||
@@ -62,7 +62,7 @@ describe('Rubric hooks', () => {
|
||||
test('loads isGrading from grading selector for selected submission', () => {
|
||||
expect(hook.isGrading).toEqual(useSelector(selectors.grading.selected.isGrading));
|
||||
});
|
||||
test('loads lockIsPending from isPending requests selector on setLock request', () => {
|
||||
test('loads lockIsPending from isPending requests selectror on setLock request', () => {
|
||||
expect(hook.lockIsPending.useSelector(testState)).toEqual(
|
||||
selectors.requests.isPending(testState, { requestKey: RequestKeys.setLock }),
|
||||
);
|
||||
|
||||
@@ -24,7 +24,7 @@ const messages = defineMessages({
|
||||
overallComments: {
|
||||
id: 'ora-grading.Rubric.overallComments',
|
||||
defaultMessage: 'Overall comments',
|
||||
description: 'Rubric overall comments label',
|
||||
description: 'Rubric overall commnents label',
|
||||
},
|
||||
addComments: {
|
||||
id: 'ora-grading.Rubric.addComments',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { getConfig } from '@edx/frontend-platform';
|
||||
|
||||
export const routePath = () => `${getConfig().PUBLIC_PATH}:courseId`;
|
||||
export const locationId = () => decodeURIComponent(window.location.pathname).replace(getConfig().PUBLIC_PATH, '');
|
||||
export const locationId = () => window.location.pathname.replace(getConfig().PUBLIC_PATH, '');
|
||||
|
||||
@@ -15,29 +15,10 @@ describe('app constants', () => {
|
||||
test('route path draws from public path and adds courseId', () => {
|
||||
expect(constants.routePath()).toEqual(`${platform.PUBLIC_PATH}:courseId`);
|
||||
});
|
||||
describe('locationId', () => {
|
||||
const domain = 'https://example.com';
|
||||
|
||||
test('returns trimmed pathname', () => {
|
||||
const old = window.location;
|
||||
Object.defineProperty(window, 'location', {
|
||||
value: new URL(`${domain}${platform.PUBLIC_PATH}somePath.jpg`),
|
||||
writable: true,
|
||||
});
|
||||
expect(constants.locationId()).toEqual(window.location.pathname.replace(platform.PUBLIC_PATH, ''));
|
||||
window.location = old;
|
||||
});
|
||||
test('handle none-standard characters pathName', () => {
|
||||
const old = window.location;
|
||||
const noneStandardPath = `${platform.PUBLIC_PATH}ORG+%C4%90+2023`;
|
||||
const expectedPath = `${platform.PUBLIC_PATH}ORG+Đ+2023`;
|
||||
Object.defineProperty(window, 'location', {
|
||||
value: new URL(`${domain}${noneStandardPath}`),
|
||||
writable: true,
|
||||
});
|
||||
expect(noneStandardPath).not.toEqual(expectedPath);
|
||||
expect(constants.locationId()).toEqual(expectedPath.replace(platform.PUBLIC_PATH, ''));
|
||||
window.location = old;
|
||||
});
|
||||
test('locationId returns trimmed pathname', () => {
|
||||
const old = window.location;
|
||||
window.location = { pathName: `${platform.PUBLIC_PATH}somePath.jpg` };
|
||||
expect(constants.locationId()).toEqual(window.location.pathname.replace(platform.PUBLIC_PATH, ''));
|
||||
window.location = old;
|
||||
});
|
||||
});
|
||||
|
||||
@@ -111,7 +111,7 @@ describe('app selectors unit tests', () => {
|
||||
test('rubricConfig selector returns rubricConfig from oraMetadata', () => {
|
||||
testOraSelector(selectors.rubric.config, oraMetadata.rubricConfig);
|
||||
});
|
||||
test('fileUploadResponseConfig returns fileUploadResponseConfig from oraMetadata', () => {
|
||||
test('fileUploadResponseConfig returns fileUploadResponseconfig from oraMetadata', () => {
|
||||
testOraSelector(
|
||||
selectors.ora.fileUploadResponseConfig,
|
||||
oraMetadata.fileUploadResponseConfig,
|
||||
@@ -184,11 +184,11 @@ describe('app selectors unit tests', () => {
|
||||
});
|
||||
});
|
||||
describe('shouldIncludeFeedback', () => {
|
||||
it('returns true if the passed feedback is optional or required', () => {
|
||||
it('returns true iff the passed feedback is optional or required', () => {
|
||||
expect(selectors.shouldIncludeFeedback(feedbackRequirement.optional)).toEqual(true);
|
||||
expect(selectors.shouldIncludeFeedback(feedbackRequirement.required)).toEqual(true);
|
||||
expect(selectors.shouldIncludeFeedback(feedbackRequirement.disabled)).toEqual(false);
|
||||
expect(selectors.shouldIncludeFeedback('arbitrary')).toEqual(false);
|
||||
expect(selectors.shouldIncludeFeedback('aribitrary')).toEqual(false);
|
||||
});
|
||||
});
|
||||
describe('fillGradeData selector', () => {
|
||||
|
||||
@@ -62,7 +62,7 @@ const initialState = {
|
||||
};
|
||||
|
||||
/**
|
||||
* Updates the state's gradingData entry for the selected submission,
|
||||
* Updates the state's gradingData entry for the seleted submission,
|
||||
* overlaying the passed data on top of the existing data for the that
|
||||
* submission.
|
||||
* @return {object} - new state
|
||||
@@ -82,7 +82,7 @@ export const updateGradingData = (state, data) => {
|
||||
};
|
||||
|
||||
/**
|
||||
* Updates the given state's gradingData entry for the selected submission,
|
||||
* Updates the given state's gradingData entry for the seleted submission,
|
||||
* overlaying the passed data on top of the existing data for the criterion
|
||||
* at the given index (orderNum) for the rubric.
|
||||
* @return {object} - new state
|
||||
|
||||
@@ -218,7 +218,7 @@ describe('app reducer', () => {
|
||||
describe('setCriterionFeedback', () => {
|
||||
it('loads feedback by orderNum', () => {
|
||||
expect(reducer(testState, actions.setCriterionFeedback(testState, args))).toEqual(
|
||||
mocks.updateCriterion(testState, orderNum, { feedback: testValue }),
|
||||
mocks.updateCriterion(testState, orderNum, { feecback: testValue }),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -21,7 +21,7 @@ export const next = {
|
||||
module.hasNext,
|
||||
),
|
||||
/**
|
||||
* Returns the submissionUUID for the next submission in the selection queue
|
||||
* Returns the submissionUUID for the next submission in the selection queu
|
||||
* @return {string} next submission id (null if there isn't one)
|
||||
*/
|
||||
submissionUUID: createSelector(
|
||||
|
||||
@@ -183,7 +183,7 @@ describe('selected submission grading selectors unit tests', () => {
|
||||
const { userDisplay } = selectors.selected;
|
||||
const username = 'USERname';
|
||||
const teamName = 'teamNAME';
|
||||
it('is a reselect selector based on the username, teamName, and whether the ORA is individual', () => {
|
||||
it('is a reselect selector based on the username, teamname, and whether the ORA is individual', () => {
|
||||
expect(userDisplay.preSelectors).toEqual([
|
||||
appSelectors.ora.isIndividual,
|
||||
selectors.selected.username,
|
||||
|
||||
@@ -131,8 +131,8 @@ describe('validation grading selectors unit tests', () => {
|
||||
let show;
|
||||
let criterionFeedback;
|
||||
const selector = selectors.validation.criterionFeedbackIsInvalid;
|
||||
const mockMethods = (showValue, feedback) => {
|
||||
selectors.validation.show = () => showValue;
|
||||
const mockMethods = (showvalue, feedback) => {
|
||||
selectors.validation.show = () => showvalue;
|
||||
selectors.validation.criterionFeedback = () => feedback;
|
||||
};
|
||||
beforeAll(() => {
|
||||
@@ -168,8 +168,8 @@ describe('validation grading selectors unit tests', () => {
|
||||
describe('validation.criterionSelectedOptionIsInvalid selector', () => {
|
||||
const testState = { some: 'state' };
|
||||
let show;
|
||||
const mockMethods = (showValue, selectedValue) => {
|
||||
selectors.validation.show = () => showValue;
|
||||
const mockMethods = (showvalue, selectedValue) => {
|
||||
selectors.validation.show = () => showvalue;
|
||||
selectors.validation.criterionSelectedOption.mockReturnValueOnce(selectedValue);
|
||||
};
|
||||
const selector = selectors.validation.criterionSelectedOptionIsInvalid;
|
||||
|
||||
@@ -72,7 +72,7 @@ describe('requests selectors unit tests', () => {
|
||||
expect(select(selectors.errorCode, { error: { response: { data: testValue } } }))
|
||||
.toEqual(testValue);
|
||||
});
|
||||
test('data returns the request data', () => {
|
||||
test('data reurns the request data', () => {
|
||||
expect(select(selectors.data, { data: testValue })).toEqual(testValue);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -75,7 +75,7 @@ describe('submission selectors unit tests', () => {
|
||||
);
|
||||
});
|
||||
});
|
||||
test('returns gradingStatus as GradeStatus iff lockStatus is lock, else lockStatus', () => {
|
||||
test('returns gradingStatus as GradeStatus iff lockstatus is lock, else lockStatus', () => {
|
||||
expect(output[0].gradingStatus).toEqual(submissions[1].gradeStatus);
|
||||
expect(output[1].gradingStatus).toEqual(submissions[2].lockStatus);
|
||||
expect(output[2].gradingStatus).toEqual(submissions[0].lockStatus);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { StrictDict } from 'utils';
|
||||
// eslint-disable-next-line import/no-cycle
|
||||
|
||||
import { selectors, actions } from 'data/redux';
|
||||
import { locationId } from 'data/constants/app';
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ import * as zip from '@zip.js/zip.js';
|
||||
import FileSaver from 'file-saver';
|
||||
|
||||
import { RequestKeys } from 'data/constants/requests';
|
||||
// eslint-disable-next-line import/no-cycle
|
||||
import { selectors } from 'data/redux';
|
||||
import { locationId } from 'data/constants/app';
|
||||
import api from 'data/services/lms/api';
|
||||
|
||||
@@ -182,7 +182,7 @@ describe('download thunkActions', () => {
|
||||
expect(download.zipFiles).toHaveBeenCalledWith(files, blobs, username);
|
||||
});
|
||||
it('network request catch all of the errors', () => {
|
||||
const blobsErrors = ['arbitrary', 'error'];
|
||||
const blobsErrors = ['arbitary', 'error'];
|
||||
download.downloadBlobs = () => Promise.reject(blobsErrors);
|
||||
|
||||
download.downloadFiles()(dispatch, getState);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { StrictDict } from 'utils';
|
||||
// eslint-disable-next-line import/no-cycle
|
||||
|
||||
import { actions, selectors } from 'data/redux';
|
||||
import { RequestKeys, ErrorStatuses } from 'data/constants/requests';
|
||||
|
||||
@@ -60,7 +60,7 @@ export const loadSubmission = () => (dispatch, getState) => {
|
||||
|
||||
/**
|
||||
* Start grading the current submission.
|
||||
* Attempts to lock the submission, and on a success, sets the local grading state to
|
||||
* Attempts to lock the submisison, and on a success, sets the local grading state to
|
||||
* True, and then loads initializes the grading process with GradeData associated with
|
||||
* the current submission. If there is no grade data, generates an empty grade entry
|
||||
* based on the rubric config.
|
||||
@@ -85,7 +85,7 @@ export const startGrading = () => (dispatch, getState) => {
|
||||
};
|
||||
|
||||
/**
|
||||
* Cancels the grading process for the current submission.
|
||||
* Cancels the grading process for the current submisison.
|
||||
* Releases the lock and dispatches stopGrading on success.
|
||||
*/
|
||||
export const cancelGrading = () => (dispatch, getState) => {
|
||||
|
||||
@@ -24,7 +24,7 @@ jest.mock('data/redux/grading/selectors', () => ({
|
||||
gradeData: jest.fn((state) => ({ gradeData: state })),
|
||||
gradingData: jest.fn((state) => ({ gradingData: state })),
|
||||
isGrading: jest.fn((state) => ({ isGrading: state })),
|
||||
submissionUUID: jest.fn((state) => ({ selectedSubmissionUUID: state })),
|
||||
submissionUUID: jest.fn((state) => ({ selectedsubmissionUUID: state })),
|
||||
lockStatus: jest.fn((state) => ({ lockStatus: state })),
|
||||
},
|
||||
validation: {
|
||||
@@ -62,7 +62,7 @@ describe('grading thunkActions', () => {
|
||||
expect(actionArgs).not.toEqual(undefined);
|
||||
});
|
||||
describe('fetchSubmissionArgs', () => {
|
||||
test('submissionUUID: selectors.grading.selected.submissionUUID', () => {
|
||||
test('submissionUUID: selectors.grading.selected.submisssionUUID', () => {
|
||||
expect(actionArgs.submissionUUID).toEqual(
|
||||
selectedUUID,
|
||||
);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { StrictDict } from 'utils';
|
||||
// eslint-disable-next-line import/no-cycle
|
||||
|
||||
import app from './app';
|
||||
import download from './download';
|
||||
import grading from './grading';
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { StrictDict } from 'utils';
|
||||
|
||||
import { RequestKeys } from 'data/constants/requests';
|
||||
// eslint-disable-next-line import/no-cycle
|
||||
import { actions } from 'data/redux';
|
||||
import api from 'data/services/lms/api';
|
||||
|
||||
@@ -51,7 +50,7 @@ export const initializeApp = ({ locationId, ...rest }) => (dispatch) => {
|
||||
|
||||
/**
|
||||
* Tracked fetchSubmissionStatus api method.
|
||||
* Tracked to the `fetchSubmissionStatus` request key.
|
||||
* Tracked to the `fetchSubmissinStatus` request key.
|
||||
* @param {string} submissionUUID - target submission id
|
||||
* @param {[func]} onSuccess - onSuccess method ((response) => { ... })
|
||||
* @param {[func]} onFailure - onFailure method ((error) => { ... })
|
||||
|
||||
@@ -81,7 +81,7 @@ describe('requests thunkActions module', () => {
|
||||
[actions.requests.completeRequest({ requestKey, response: testData })],
|
||||
]);
|
||||
});
|
||||
it('on failure dispatches completeRequest', async () => {
|
||||
it('on failure disaptches completeRequest', async () => {
|
||||
await requests.networkRequest({ requestKey, promise: Promise.reject(testData) })(dispatch);
|
||||
expect(dispatch.mock.calls).toEqual([
|
||||
[actions.requests.startRequest(requestKey)],
|
||||
|
||||
@@ -40,7 +40,7 @@ const initializeApp = () => get(
|
||||
/**
|
||||
* get('/api/submission', { oraLocation, submissionUUID })
|
||||
* @return {
|
||||
* submission: {
|
||||
* submision: {
|
||||
* gradeData,
|
||||
* gradeStatus,
|
||||
* response: { files: [{}], text: <html> },
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Simple selector factory.
|
||||
* Takes a list of string keys, and returns a simple selector for each.
|
||||
* Takes a list of string keys, and returns a simple slector for each.
|
||||
*
|
||||
* @function
|
||||
* @param {Object|string[]} keys - If passed as object, Object.keys(keys) is used.
|
||||
|
||||
@@ -1,38 +1,36 @@
|
||||
import { messages as footerMessages } from '@edx/frontend-component-footer';
|
||||
import { messages as headerMessages } from '@edx/frontend-component-header';
|
||||
import { messages as headerMesssages } from '@edx/frontend-component-header';
|
||||
import { messages as paragonMessages } from '@edx/paragon';
|
||||
|
||||
import arMessages from './messages/ar.json';
|
||||
import deDEMessages from './messages/de_DE.json';
|
||||
// no need to import en messages-- they are in the defaultMessage field
|
||||
import es419Messages from './messages/es_419.json';
|
||||
import faIRMessages from './messages/fa_IR.json';
|
||||
import frMessages from './messages/fr.json';
|
||||
import frCAMessages from './messages/fr_CA.json';
|
||||
import zhcnMessages from './messages/zh_CN.json';
|
||||
import dedeMessages from './messages/de_DE.json';
|
||||
import frcaMessages from './messages/fr_CA.json';
|
||||
import hiMessages from './messages/hi.json';
|
||||
import itITMessages from './messages/it_IT.json';
|
||||
import ptPTMessages from './messages/pt_PT.json';
|
||||
import ititMessages from './messages/it_IT.json';
|
||||
import ptptMessages from './messages/pt_PT.json';
|
||||
import ruMessages from './messages/ru.json';
|
||||
import ukMessages from './messages/uk.json';
|
||||
import zhCNMessages from './messages/zh_CN.json';
|
||||
// no need to import en messages-- they are in the defaultMessage field
|
||||
|
||||
const appMessages = {
|
||||
ar: arMessages,
|
||||
'de-de': deDEMessages,
|
||||
'es-419': es419Messages,
|
||||
'fa-ir': faIRMessages,
|
||||
fr: frMessages,
|
||||
'fr-ca': frCAMessages,
|
||||
'zh-cn': zhcnMessages,
|
||||
'de-de': dedeMessages,
|
||||
'fr-ca': frcaMessages,
|
||||
hi: hiMessages,
|
||||
'it-it': itITMessages,
|
||||
'pt-pt': ptPTMessages,
|
||||
'it-it': ititMessages,
|
||||
'pt-pt': ptptMessages,
|
||||
ru: ruMessages,
|
||||
uk: ukMessages,
|
||||
'zh-cn': zhCNMessages,
|
||||
};
|
||||
|
||||
export default [
|
||||
headerMessages,
|
||||
headerMesssages,
|
||||
footerMessages,
|
||||
paragonMessages,
|
||||
appMessages,
|
||||
|
||||
@@ -1,105 +0,0 @@
|
||||
{
|
||||
"ora-grading.demoAlert.warningMessage": "ارسال نمره در حالت نمایشی از ORA Staff Grader جدید غیرفعال است.",
|
||||
"ora-grading.demoAlert.confirm": "تایید",
|
||||
"ora-grading.demoAlert.title": "از ارسال نسخه نمایشی ممانعت به عمل آمد",
|
||||
"ora-grading.FilePopoverContent.filePopoverNameTitle": "نام پرونده",
|
||||
"ora-grading.FilePopoverCellContent.filePopoverDescriptionTitle": "توصیف پرونده",
|
||||
"ora-grading.FilePopoverCellContent.fileSizeTitle": "اندازه پرونده ",
|
||||
"ora-grading.InfoPopover.fileInfo": "اطلاعات پرونده",
|
||||
"ora-grading.ResponseDisplay.FileRenderer.retryButton": "تلاش دوباره",
|
||||
"ora-grading.ResponseDisplay.FileRenderer.fileNotFound": "پرونده یافت نشد",
|
||||
"ora-grading.ResponseDisplay.FileRenderer.unknownError": "خطاهای ناشناخته",
|
||||
"PageTitle": "درجه بندی کارکنان ORA | {siteName}",
|
||||
"ora-grading.InfoPopover.alt-text": "نمایش اطلاعات بیشتر",
|
||||
"ora-grading.CriterionFeedback.addCommentsLabel": "نظردهی",
|
||||
"ora-grading.CriterionFeedback.commentsLabel": "نظرات",
|
||||
"ora-grading.CriterionFeedback.optional": "(اختیاری)",
|
||||
"ora-grading.RadioCriterion.optionPoints": "{points} نمره",
|
||||
"ora-grading.RadioCriterion.rubricSelectedError": "راهنمای امتیازدهی ضروری است",
|
||||
"ora-grading.CriterionFeedback.criterionFeedbackError": "ارائه بازخورد ضروری است",
|
||||
"ora-grading.CTA.feedbackMessage": "از اینکه از تجربه جدید درجهبندی کارکنان ORA استفاده میکنید تشکر می کنیم.",
|
||||
"ora-grading.CTA.linkMessage": "ارائه بازخورد",
|
||||
"ora-grading.CTA.letUsKnowMessage": "و به ما بگویید که نظر شما چیست!",
|
||||
"ora-grading.ReviewModal.demoHeading": "حالت نسخهنمایشی",
|
||||
"ora-grading.ReviewModal.demoMessage": "شما در حال نمایش تجربه جدید رتبهبندی کارکنان ORA هستید. تا زمانی که این ویژگی را فعال نکنید، امکان ارسال نمرات را نخواهید داشت. این مورد به تجربه رتبهبندی پیشفرض در 9 مه (2022/05/09) خواهد شد. برای انتخاب زودهنگام یا انصراف، لطفاً با پشتیبانی تماس بگیرید.",
|
||||
"ora-grading.ListView.ListViewBreadcrumbs.backToResponses": "بازگشت به همه پاسخهای باز",
|
||||
"ora-grading.ListView.noResultsFoundTitle": "اینجا هنوز چیزی نیست",
|
||||
"ora-grading.ListView.noResultsFoundBody": "هنگامی که افراد پاسخها را ارسال کنند، در اینجا ظاهر میشوند",
|
||||
"ora-grading.ListView.viewAllResponses": "مشاهده همه پاسخها",
|
||||
"ora-grading.ListView.viewSelectedResponses": "مشاهده همه پاسخها ({value})",
|
||||
"ora-grading.ListView.tableHeaders.username": "نامکاربری",
|
||||
"ora-grading.ListView.tableHeaders.teamName": "نام تیم",
|
||||
"ora-grading.ListView.tableHeaders.learnerSubmissionDate": "تاریخ ارسال یادگیرنده",
|
||||
"ora-grading.ListView.tableHeaders.teamSubmissionDate": "تاریخ ارسال تیم",
|
||||
"ora-grading.ListView.tableHeaders.grade": "نمره",
|
||||
"ora-grading.ListView.tableHeaders.gradingStatus": "وضعیت نمرهدهی",
|
||||
"ora-grading.ListView.loadErrorHeading": "خطایی در هنگام بارگیری موارد ارسالی رخ داد",
|
||||
"ora-grading.ListView.loadErrorMessage1": "هنگام بارگیری موارد ارسالی برای این پاسخ، خطایی روی داد. صفحه را دوباره بارگیری کنید یا به {backToResponses} بروید.",
|
||||
"ora-grading.ListView.backToResponsesLowercase": "بازگشت به همه پاسخهای باز",
|
||||
"ora-grading.ListView.reloadSubmissions": "بارگیری مجدد موارد ارسالی",
|
||||
"ora-grading.ListView.loadingResponses": "بارگیری پاسخها",
|
||||
"ora-grading.ResponseDisplay.FilePopoverCell.filePopoverNameTitle": "نام پرونده",
|
||||
"ora-grading.ResponseDisplay.FilePopoverCell.filePopoverDescriptionTitle": "توصیف پرونده",
|
||||
"ora-grading.ResponseDisplay.SubmissionFiles.tableNameHeader": "نام",
|
||||
"ora-grading.ResponseDisplay.SubmissionFiles.tableExtensionHeader": "پسوند پرونده",
|
||||
"ora-grading.ResponseDisplay.SubmissionFiles.tablePopoverHeader": "فراداده پرونده",
|
||||
"ora-grading.ResponseDisplay.SubmissionFiles.downloadFiles": "پروندههای بارگیریشده",
|
||||
"ora-grading.ResponseDisplay.SubmissionFiles.downloading": "در حال بارگیری",
|
||||
"ora-grading.ResponseDisplay.SubmissionFiles.downloaded": "بارگیری شد!",
|
||||
"ora-grading.ResponseDisplay.SubmissionFiles.retryDownload": "تلاش دوباره برای بارگیری",
|
||||
"ora-grading.ResponseDisplay.SubmissionFiles.submissionFile": "پروندههای ارسالی",
|
||||
"ora-grading.ResponseDisplay.SubmissionFiles.fileSizeExceed": "از اندازه مجاز بارگیری فراتر رفت",
|
||||
"ora-grading.ReviewActions.overrideConfirmTitle": "آیا از لغو این نمره اطمینان دارید؟",
|
||||
"ora-grading.ReviewActions.overrideConfirmWarning": "این عمل،قابل بازگشت نیست. ممکن است یادگیرنده پیش از این، نمره خود را دریافت کرده باشد.",
|
||||
"ora-grading.ReviewActions.overrideConfirmContinue": "ادامه لغو نمره",
|
||||
"ora-grading.ReviewActions.StartGradingButton.startGrading": "آغاز نمرهدهی",
|
||||
"ora-grading.ReviewActions.StartGradingButton.overrideGrade": "لغو نمره",
|
||||
"ora-grading.ReviewActions.StartGradingButton.stopGrading": "توقف نمرهدهی به این پاسخ",
|
||||
"ora-grading.ReviewActions.StopGradingConfirmModal.override.title": "آیا از توقف لغو نمره اطمینان دارید؟",
|
||||
"ora-grading.ReviewActions.StopGradingConfirmModal.title": "آیا از توقف نمرهدهی این پاسخ اطمینان دارید؟",
|
||||
"ora-grading.ReviewActions.StopGradingConfirmModal.warning": "پیشرفت شما از بین خواهد رفت.",
|
||||
"ora-grading.ReviewActions.StopGradingConfirmModal.override.confirmText": "توقف لغو نمره",
|
||||
"ora-grading.ReviewActions.StopGradingConfirmModal.confirmText": "لغو نمرهدهی",
|
||||
"ora-grading.ReviewActions.goBack": "بازگشت",
|
||||
"ora-grading.ReviewActions.loadPrevious": "بارگیری ارسالی قبل",
|
||||
"ora-grading.ReviewActions.loadNext": "بارگیری ارسالی بعد",
|
||||
"ora-grading.ReviewActions.navigationLabel": "{current} از {total}",
|
||||
"ora-grading.ReviewActions.pointsDisplay": "امتیاز: {pointsEarned}/{pointsPossible}",
|
||||
"ora-grading.ReviewActions.hideRubric": "پنهانسازی راهنمای امتیازدهی",
|
||||
"ora-grading.ReviewActions.showRubric": "نمایش راهنمای امتیازدهی",
|
||||
"ora-grading.ReviewModal.closeReviewConfirm.title": "از بستن این مودال اطمینان دارید؟",
|
||||
"ora-grading.ReviewModal.closeReviewConfirmWarning": "این کار، قابل بازگشت نیست. با این کار، فعالیتهای ذخیرهنشده کنار گذاشته می شوند و این روند رتبهبندی متوقف میشود.",
|
||||
"ora-grading.ReviewModal.goBack": "بازگشت",
|
||||
"ora-grading.ReviewModal.CloseReviewConfirmModal.confirmText": "بستن مودال",
|
||||
"ora-grading.ReviewModal.loadingResponse": "بارگیری پاسخ",
|
||||
"ora-grading.ReviewModal.demoTitleMessage": "نسخهنمایشی بارمبندی",
|
||||
"ora-grading.ReviewModal.loadErrorHeading": "خطایی در هنگام بارگیری موارد ارسالی رخ داد",
|
||||
"ora-grading.ReviewModal.loadErrorMessage1": "هنگام بارگیری این ارسال خطایی روی داد. دوباره ارسال کنید.",
|
||||
"ora-grading.ReviewModal.reloadSubmission": "بارگیری مجدد ارسال",
|
||||
"ora-grading.ReviewModal.gradeNotSubmitted.heading": "نمره ارسال نشد",
|
||||
"ora-grading.ReviewModal.gradeNotSubmitted.Content": "متأسفیم، در هنگام تلاش برای ارسال این نمره، مشکلی پیش آمد. لطفا دوباره تلاش کنید.",
|
||||
"ora-grading.ReviewModal.resubmitGrade": "نمره را دوباره ارسال کنید",
|
||||
"ora-grading.ReviewModal.dismiss": "نادیده بگیر",
|
||||
"ora-grading.ReviewModal.errorSubmittingGrade.Heading": "خطایی در ارسال نمره رخ داد",
|
||||
"ora-grading.ReviewModal.errorSubmittingGrade.Content": "به نظر می رسد اول شخص دیگری به اینجا رسیده است! نمره ارسالی شما رد شدهاست",
|
||||
"ora-grading.ReviewModal.errorLockContestedHeading": "قفل متعلق به کاربر دیگری است",
|
||||
"ora-grading.ReviewModal.errorLockContested": "قفل متعلق به کاربر دیگری است",
|
||||
"ora-grading.ReviewModal.errorLockBadRequestHeading": "درخواست معتبر نیست. لطفا ورودی خود را بررسی کنید.",
|
||||
"ora-grading.ReviewModal.errorLockBadRequest": "درخواست معتبر نیست. لطفا ورودی خود را بررسی کنید.",
|
||||
"ora-grading.ReviewModal.errorDownloadFailed": "امکان بارگیری پروندهها وجود ندارد",
|
||||
"ora-grading.ReviewModal.errorDownloadFailedContent": "متأسفیم، هنگام دانلود این پروندهها مشکلی پیش آمد. لطفا دوباره تلاش کنید.",
|
||||
"ora-grading.ReviewModal.errorRetryDownload": "تلاش دوباره برای بارگیری",
|
||||
"ora-grading.ReviewModal.errorDownloadFailedFiles": "پروندههای ناموفق:",
|
||||
"ora-grading.Rubric.gradeSubmitted": "نمره ارائه شد",
|
||||
"ora-grading.Rubric.rubric": "راهنمای امتیازدهی",
|
||||
"ora-grading.Rubric.submitGrade": "ارائه نمره",
|
||||
"ora-grading.Rubric.submittingGrade": "ارائه نمره",
|
||||
"ora-grading.Rubric.overallComments": "نظرات کلی",
|
||||
"ora-grading.Rubric.addComments": "افزودن نظر (اختیاری)",
|
||||
"ora-grading.Rubric.comments": "نظرات (اختیاری)",
|
||||
"ora-grading.RubricFeedback.error": "ارائه بازخورد کلی ضروری است",
|
||||
"ora-grading.lms-api.gradingStatusDisplay.ungraded": "بدون نمره",
|
||||
"ora-grading.lms-api.gradingStatusDisplay.locked": "اکنون بهدست فرد دیگری نمرهدهی میشود",
|
||||
"ora-grading.lms-api.gradingStatusDisplay.graded": "نمرهدهی تکمیل شد",
|
||||
"ora-grading.lms-api.gradingStatusDisplay.inProgress": "شما در حال ارزیابی و نمرهدهی این پاسخ هستید"
|
||||
}
|
||||
@@ -67,10 +67,10 @@
|
||||
"ora-grading.ReviewActions.pointsDisplay": "Résultat : {pointsEarned}/{pointsPossible}",
|
||||
"ora-grading.ReviewActions.hideRubric": "Masquer la rubrique",
|
||||
"ora-grading.ReviewActions.showRubric": "Afficher la rubrique",
|
||||
"ora-grading.ReviewModal.closeReviewConfirm.title": "Voulez-vous vraiment fermer cette fenêtre modale?",
|
||||
"ora-grading.ReviewModal.closeReviewConfirm.title": "Voulez-vous vraiment fermer ce modal?",
|
||||
"ora-grading.ReviewModal.closeReviewConfirmWarning": "Ça ne peut pas être annulé. Cela supprimera le travail non enregistré et arrêtera ce processus de notation.",
|
||||
"ora-grading.ReviewModal.goBack": "Retour",
|
||||
"ora-grading.ReviewModal.CloseReviewConfirmModal.confirmText": "Fermer la fenêtre modale",
|
||||
"ora-grading.ReviewModal.CloseReviewConfirmModal.confirmText": "Fermer Modal",
|
||||
"ora-grading.ReviewModal.loadingResponse": "Chargement de la réponse",
|
||||
"ora-grading.ReviewModal.demoTitleMessage": "Démonstration de correcteur",
|
||||
"ora-grading.ReviewModal.loadErrorHeading": "Erreur lors du chargement des soumissions",
|
||||
@@ -84,8 +84,8 @@
|
||||
"ora-grading.ReviewModal.errorSubmittingGrade.Content": "Il semble que quelqu'un d'autre soit arrivé le premier! Votre soumission de note a été rejetée",
|
||||
"ora-grading.ReviewModal.errorLockContestedHeading": "La serrure appartenant à un autre utilisateur",
|
||||
"ora-grading.ReviewModal.errorLockContested": "La serrure appartenant à un autre utilisateur",
|
||||
"ora-grading.ReviewModal.errorLockBadRequestHeading": "Demande invalide. Veuillez vérifier votre entrée.",
|
||||
"ora-grading.ReviewModal.errorLockBadRequest": "Demande invalide. Veuillez vérifier votre entrée.",
|
||||
"ora-grading.ReviewModal.errorLockBadRequestHeading": "Requête invalide. Veuillez vérifier votre entrée.",
|
||||
"ora-grading.ReviewModal.errorLockBadRequest": "Requête invalide. Veuillez vérifier votre entrée.",
|
||||
"ora-grading.ReviewModal.errorDownloadFailed": "Impossible de télécharger les fichiers",
|
||||
"ora-grading.ReviewModal.errorDownloadFailedContent": "Nous sommes désolés, une erreur s'est produite lorsque nous avons essayé de télécharger ces fichiers. Veuillez réessayer.",
|
||||
"ora-grading.ReviewModal.errorRetryDownload": "Réessayez le téléchargement",
|
||||
|
||||
@@ -16,10 +16,10 @@ jest.mock('react-dom', () => ({
|
||||
}));
|
||||
|
||||
jest.mock('@edx/frontend-component-footer', () => ({
|
||||
messages: 'frontend-footer-messages',
|
||||
messages: 'frotnend-footer-messages',
|
||||
}));
|
||||
jest.mock('@edx/frontend-component-header', () => ({
|
||||
messages: 'frontend-header-messages',
|
||||
messages: 'frotnend-header-messages',
|
||||
}));
|
||||
|
||||
jest.mock('@edx/frontend-platform', () => ({
|
||||
|
||||
@@ -3,7 +3,7 @@ import '@testing-library/jest-dom';
|
||||
import '@testing-library/jest-dom/extend-expect';
|
||||
|
||||
import Enzyme from 'enzyme';
|
||||
import Adapter from '@wojtekmaj/enzyme-adapter-react-17';
|
||||
import Adapter from 'enzyme-adapter-react-16';
|
||||
|
||||
Enzyme.configure({ adapter: new Adapter() });
|
||||
|
||||
|
||||
Reference in New Issue
Block a user