Compare commits

..

23 Commits

Author SHA1 Message Date
Ben Warzeski
8e19b5774c fix: merge cruft leftover file 2023-05-15 11:32:42 -04:00
Ben Warzeski
f7a4309888 fix: table tests 2023-05-15 11:16:48 -04:00
Omar Al-Ithawi
3e3a73e2bb feat: use atlas in make pull_translations (#325)
Changes
-------
 - Bump frontend-platform to bring `intl-imports.js` script
 - Move all i18n imports into `src/i18n/index.js` so `intl-imports.js` can
   override it with latest translations
 - Add `atlas` into `make pull_translations` when `OPENEDX_ATLAS_PULL`
   environment variable is set.
 - Refactored i18n utils into own file to avoid overwriting them by
   atlas

Refs: [FC-0012 project](https://openedx.atlassian.net/l/cp/XGS0iCcQ) implementing Translation Infrastructure OEP-58.
2023-05-15 10:58:11 -04:00
Ben Warzeski
af8d7182ef fix: date test 2023-05-15 10:57:48 -04:00
Ben Warzeski
d898a9cc2f fix: null renders 2023-05-15 10:57:25 -04:00
Ben Warzeski
f4b839f4d8 fix: lint 2023-05-15 10:57:24 -04:00
Ben Warzeski
f41b237d08 fix: redux transform tests 2023-05-15 10:57:24 -04:00
Ben Warzeski
6dd2fb3dd6 refactor: GradebookFilters component modernization 2023-05-15 10:57:23 -04:00
Ben Warzeski
b173681edb refactor: GradesView component modernization 2023-05-15 10:57:23 -04:00
Ben Warzeski
5fcde3b9e8 refactor: ImportSuccessToast component modernization 2023-05-15 10:57:22 -04:00
Ben Warzeski
35ee68ea9d refactor: SearchControls component modernization 2023-05-15 10:57:22 -04:00
Ben Warzeski
dde8e759b6 refactor: ScoreViewInput component modernization 2023-05-15 10:57:22 -04:00
Ben Warzeski
6b149e9ce0 refactor: PageButtons component modernization 2023-05-15 10:57:21 -04:00
Ben Warzeski
4cf5ba7a07 refactor: FilteredUsersLabel component modernization 2023-05-15 10:57:21 -04:00
Ben Warzeski
7a506324a8 refactor: FilterMenuToggle component modernization 2023-05-15 10:57:20 -04:00
Ben Warzeski
7f54cc4917 refactor: FilterBadges component modernization 2023-05-15 10:57:20 -04:00
Ben Warzeski
134ace9483 refactor: GradebookTable component modernization 2023-05-15 10:57:18 -04:00
Ben Warzeski
0e6f52fca9 refactor: EditModal component updates 2023-05-15 10:50:31 -04:00
Ben Warzeski
ca64cc614a feat: redux hooks 2023-05-15 10:50:19 -04:00
Ben Warzeski
1ad297c46c refactor: testing architecture updates 2023-05-15 10:50:17 -04:00
Ben Warzeski
f2bb0d7c2a refactor: interventsions report component 2023-05-15 10:49:45 -04:00
Ben Warzeski
f76f3d64c9 refactor: bulk management controls component 2023-05-15 10:49:45 -04:00
Ben Warzeski
db56d76d37 refactor: gradebook header component refactor 2023-05-15 10:49:44 -04:00
13 changed files with 10728 additions and 9000 deletions

1
.env
View File

@@ -10,7 +10,6 @@ DATA_API_BASE_URL=''
SEGMENT_KEY='' SEGMENT_KEY=''
FEATURE_FLAGS={} FEATURE_FLAGS={}
ACCESS_TOKEN_COOKIE_NAME='' ACCESS_TOKEN_COOKIE_NAME=''
LANGUAGE_PREFERENCE_COOKIE_NAME=''
NEW_RELIC_APP_ID='' NEW_RELIC_APP_ID=''
NEW_RELIC_LICENSE_KEY='' NEW_RELIC_LICENSE_KEY=''
SITE_NAME='' SITE_NAME=''

View File

@@ -12,7 +12,6 @@ FAVICON_URL=https://edx-cdn.org/v3/default/favicon.ico
CSRF_TOKEN_API_PATH='/csrf/api/v1/token' CSRF_TOKEN_API_PATH='/csrf/api/v1/token'
REFRESH_ACCESS_TOKEN_ENDPOINT='http://localhost:18000/login_refresh' REFRESH_ACCESS_TOKEN_ENDPOINT='http://localhost:18000/login_refresh'
ACCESS_TOKEN_COOKIE_NAME='edx-jwt-cookie-header-payload' ACCESS_TOKEN_COOKIE_NAME='edx-jwt-cookie-header-payload'
LANGUAGE_PREFERENCE_COOKIE_NAME='openedx-language-preference'
USER_INFO_COOKIE_NAME='edx-user-info' USER_INFO_COOKIE_NAME='edx-user-info'
SITE_NAME=localhost SITE_NAME=localhost
DATA_API_BASE_URL='http://localhost:8000' DATA_API_BASE_URL='http://localhost:8000'

View File

@@ -11,21 +11,25 @@ on:
jobs: jobs:
test: test:
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
strategy:
matrix:
node: [16]
npm: [8.5.x]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v3 uses: actions/checkout@v2
- name: Setup Nodejs Env
run: echo "NODE_VER=`cat .nvmrc`" >> $GITHUB_ENV
- name: Setup Nodejs - name: Setup Nodejs
uses: actions/setup-node@v3 uses: actions/setup-node@v1
with: with:
node-version: ${{ env.NODE_VER }} node-version: ${{ matrix.node }}
- name: Install npm 8.5.x
run: npm install -g npm@${{ matrix.npm }}
- name: Install dependencies - name: Install dependencies
run: npm ci --legacy-peer-deps run: npm ci
- name: Unit Tests - name: Unit Tests
run: npm run test run: npm run test

View File

@@ -10,4 +10,4 @@ on:
jobs: jobs:
version-check: version-check:
uses: openedx/.github/.github/workflows/lockfileversion-check-v3.yml@master uses: openedx/.github/.github/workflows/lockfileversion-check.yml@master

View File

@@ -15,13 +15,10 @@ jobs:
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Setup Nodejs Env
run: echo "NODE_VER=`cat .nvmrc`" >> $GITHUB_ENV
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v1 uses: actions/setup-node@v1
with: with:
node-version: ${{ env.NODE_VER }} node-version: 12
- name: Install dependencies - name: Install dependencies
run: npm ci run: npm ci

1
.nvmrc
View File

@@ -1 +0,0 @@
18.15

View File

@@ -68,10 +68,9 @@ pull_translations:
&& atlas pull --filter=$(transifex_langs) \ && atlas pull --filter=$(transifex_langs) \
translations/frontend-component-footer/src/i18n/messages:frontend-component-footer \ translations/frontend-component-footer/src/i18n/messages:frontend-component-footer \
translations/frontend-component-header/src/i18n/messages:frontend-component-header \ translations/frontend-component-header/src/i18n/messages:frontend-component-header \
translations/paragon/src/i18n/messages:paragon \
translations/frontend-app-gradebook/src/i18n/messages:frontend-app-gradebook translations/frontend-app-gradebook/src/i18n/messages:frontend-app-gradebook
$(intl_imports) paragon frontend-component-header frontend-component-footer frontend-app-gradebook $(intl_imports) frontend-component-header frontend-component-footer frontend-app-gradebook
endif endif
# This target is used by CI. # This target is used by CI.

19632
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -29,11 +29,10 @@
], ],
"dependencies": { "dependencies": {
"@edx/brand": "npm:@edx/brand-openedx@^1.2.0", "@edx/brand": "npm:@edx/brand-openedx@^1.2.0",
"@edx/frontend-component-footer": "12.1.0", "@edx/frontend-component-footer": "^12.0.0",
"@edx/frontend-component-header": "4.3.0", "@edx/frontend-component-header": "^4.0.0",
"@edx/frontend-platform": "4.6.0", "@edx/frontend-platform": "^4.2.0",
"@edx/paragon": "20.45.0", "@edx/paragon": "^19.25.4",
"@edx/react-unit-test-utils": "1.7.0",
"@edx/reactifex": "^2.1.1", "@edx/reactifex": "^2.1.1",
"@fortawesome/fontawesome-svg-core": "^1.2.25", "@fortawesome/fontawesome-svg-core": "^1.2.25",
"@fortawesome/free-brands-svg-icons": "^5.11.2", "@fortawesome/free-brands-svg-icons": "^5.11.2",
@@ -50,10 +49,10 @@
"history": "4.10.1", "history": "4.10.1",
"prop-types": "15.8.1", "prop-types": "15.8.1",
"query-string": "6.13.0", "query-string": "6.13.0",
"react": "17.0.2", "react": "16.14.0",
"react-dom": "17.0.2", "react-dom": "16.14.0",
"react-helmet": "^6.1.0", "react-helmet": "^6.1.0",
"react-redux": "^7.2.9", "react-redux": "^7.1.1",
"react-router": "5.2.0", "react-router": "5.2.0",
"react-router-dom": "5.2.0", "react-router-dom": "5.2.0",
"react-router-redux": "^5.0.0-alpha.9", "react-router-redux": "^5.0.0-alpha.9",
@@ -68,18 +67,18 @@
}, },
"devDependencies": { "devDependencies": {
"@edx/browserslist-config": "^1.1.1", "@edx/browserslist-config": "^1.1.1",
"@testing-library/react": "12.1.5", "@edx/frontend-build": "^12.4.15",
"@wojtekmaj/enzyme-adapter-react-17": "0.8.0", "@testing-library/react": "^12.1.0",
"@edx/frontend-build": "12.9.0-alpha.6",
"axios": "0.21.2", "axios": "0.21.2",
"axios-mock-adapter": "^1.17.0", "axios-mock-adapter": "^1.17.0",
"enzyme-adapter-react-16": "^1.14.0",
"es-check": "^2.3.0", "es-check": "^2.3.0",
"fetch-mock": "^6.5.2", "fetch-mock": "^6.5.2",
"husky": "2.7.0", "husky": "2.7.0",
"identity-obj-proxy": "^3.0.0", "identity-obj-proxy": "^3.0.0",
"jest": "^26.6.3", "jest": "^26.6.3",
"react-dev-utils": "^12.0.1", "react-dev-utils": "^12.0.1",
"react-test-renderer": "17.0.2", "react-test-renderer": "^16.10.1",
"reactifex": "1.1.1", "reactifex": "1.1.1",
"redux-mock-store": "^1.5.3", "redux-mock-store": "^1.5.3",
"semantic-release": "^19.0.3" "semantic-release": "^19.0.3"

View File

@@ -1,24 +1,5 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`ImportGradesButton component render Form 1`] = `
<Form
action="test-grade-export-url"
method="post"
>
<Form.Group
controlId="csv"
>
<Form.Control
className="d-none"
data-testid="file-control"
label="Upload Grade CSV"
onChange={[MockFunction props.handleFileInputChange]}
type="file"
/>
</Form.Group>
</Form>
`;
exports[`ImportGradesButton component render snapshot 1`] = ` exports[`ImportGradesButton component render snapshot 1`] = `
<Fragment> <Fragment>
<Form <Form
@@ -32,7 +13,7 @@ exports[`ImportGradesButton component render snapshot 1`] = `
className="d-none" className="d-none"
data-testid="file-control" data-testid="file-control"
label="Upload Grade CSV" label="Upload Grade CSV"
onChange={[MockFunction props.handleFileInputChange]} onChange={[MockFunction]}
type="file" type="file"
/> />
</Form.Group> </Form.Group>
@@ -47,7 +28,7 @@ exports[`ImportGradesButton component render snapshot 1`] = `
"id": "gradebook.GradesView.importGradesBtnText", "id": "gradebook.GradesView.importGradesBtnText",
} }
} }
onClick={[MockFunction props.handleClickImportGrades]} onClick={[MockFunction]}
/> />
</Fragment> </Fragment>
`; `;

View File

@@ -1,5 +1,5 @@
import React from 'react'; import React from 'react';
import { shallow } from '@edx/react-unit-test-utils'; import { shallow } from 'enzyme';
import { useIntl } from '@edx/frontend-platform/i18n'; import { useIntl } from '@edx/frontend-platform/i18n';
import { Form } from '@edx/paragon'; import { Form } from '@edx/paragon';
@@ -18,8 +18,8 @@ describe('ImportGradesButton component', () => {
props = { props = {
fileInputRef: { current: null }, fileInputRef: { current: null },
gradeExportUrl: 'test-grade-export-url', gradeExportUrl: 'test-grade-export-url',
handleClickImportGrades: jest.fn().mockName('props.handleClickImportGrades'), handleClickImportGrades: jest.fn(),
handleFileInputChange: jest.fn().mockName('props.handleFileInputChange'), handleFileInputChange: jest.fn(),
}; };
useImportGradesButtonData.mockReturnValue(props); useImportGradesButtonData.mockReturnValue(props);
el = shallow(<ImportGradesButton />); el = shallow(<ImportGradesButton />);
@@ -32,15 +32,14 @@ describe('ImportGradesButton component', () => {
}); });
describe('render', () => { describe('render', () => {
test('snapshot', () => { test('snapshot', () => {
expect(el.snapshot).toMatchSnapshot(); expect(el).toMatchSnapshot();
}); });
test('Form', () => { test('Form', () => {
expect(el.instance.findByType(Form)[0].snapshot).toMatchSnapshot(); expect(el.find(Form).props().action).toEqual(props.gradeExportUrl);
expect(el.instance.findByType(Form)[0].props.action).toEqual(props.gradeExportUrl); expect(el.find(Form.Control).props().onChange).toEqual(props.handleFileInputChange);
expect(el.instance.findByType(Form.Control)[0].props.onChange).toEqual(props.handleFileInputChange);
}); });
test('import button', () => { test('import button', () => {
expect(el.instance.findByType(NetworkButton)[0].props.onClick).toEqual(props.handleClickImportGrades); expect(el.find(NetworkButton).props().onClick).toEqual(props.handleClickImportGrades);
}); });
}); });
}); });

View File

@@ -1,6 +1,5 @@
import { messages as footerMessages } from '@edx/frontend-component-footer'; import { messages as footerMessages } from '@edx/frontend-component-footer';
import { messages as headerMessages } from '@edx/frontend-component-header'; import { messages as headerMessages } from '@edx/frontend-component-header';
import { messages as paragonMessages } from '@edx/paragon';
import arMessages from './messages/ar.json'; import arMessages from './messages/ar.json';
import deMessages from './messages/de.json'; import deMessages from './messages/de.json';
@@ -32,7 +31,6 @@ const appMessages = {
}; };
export default [ export default [
paragonMessages,
footerMessages, footerMessages,
headerMessages, headerMessages,
appMessages, appMessages,

View File

@@ -1,7 +1,7 @@
/* eslint-disable import/no-extraneous-dependencies */ /* eslint-disable import/no-extraneous-dependencies */
import Enzyme from 'enzyme'; import Enzyme from 'enzyme';
import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; import Adapter from 'enzyme-adapter-react-16';
Enzyme.configure({ adapter: new Adapter() }); Enzyme.configure({ adapter: new Adapter() });