diff --git a/apps/remix-ide/src/app/tabs/locales/en/index.js b/apps/remix-ide/src/app/tabs/locales/en/index.js index 3cf383bdba..dfef2c32ad 100644 --- a/apps/remix-ide/src/app/tabs/locales/en/index.js +++ b/apps/remix-ide/src/app/tabs/locales/en/index.js @@ -8,6 +8,7 @@ import settingsJson from './settings.json'; import solidityJson from './solidity.json'; import terminalJson from './terminal.json'; import udappJson from './udapp.json'; +import solidityUnitTestingJson from './solidityUnitTesting.json'; export default { ...debuggerJson, @@ -20,4 +21,5 @@ export default { ...solidityJson, ...terminalJson, ...udappJson, + ...solidityUnitTestingJson, } diff --git a/apps/remix-ide/src/app/tabs/locales/en/solidityUnitTesting.json b/apps/remix-ide/src/app/tabs/locales/en/solidityUnitTesting.json new file mode 100644 index 0000000000..f1080804b6 --- /dev/null +++ b/apps/remix-ide/src/app/tabs/locales/en/solidityUnitTesting.json @@ -0,0 +1,35 @@ +{ + "solidityUnitTesting.displayName": "Solidity unit testing", + "solidityUnitTesting.testDirectory": "Test directory", + "solidityUnitTesting.testYourSmartContract": "Test your smart contract in Solidity.", + "solidityUnitTesting.selectDirectory": "Select directory to load and generate test files.", + "solidityUnitTesting.uiPathInputTooltip": "Press 'Enter' to change the path for test files.", + "solidityUnitTesting.uiPathInputButtonTooltip": "Create a test folder", + "solidityUnitTesting.create": "Create", + "solidityUnitTesting.generateTestsButtonTooltip": "Generate a sample test file", + "solidityUnitTesting.generate": "Generate", + "solidityUnitTesting.generateTestsLinkTooltip": "Check out documentation.", + "solidityUnitTesting.howToUse": "How to use...", + "solidityUnitTesting.runButtonTitle1": "Run tests", + "solidityUnitTesting.runButtonTitle2": "Please select Solidity compiler version greater than 0.4.12.", + "solidityUnitTesting.runButtonTitle3": "No solidity file selected", + "solidityUnitTesting.runButtonTitle4": "The \"Solidity Plugin\" should be activated", + "solidityUnitTesting.runButtonTitle5": "No test file selected", + "solidityUnitTesting.stopButtonLabel1": "Stop", + "solidityUnitTesting.stopButtonLabel2": "Stopping", + "solidityUnitTesting.run": "Run", + "solidityUnitTesting.runTestsTabStopActionTooltip": "Stop running tests", + "solidityUnitTesting.selectAll": "Select all", + "solidityUnitTesting.testTabTestsExecutionStopped": "The test execution has been stopped", + "solidityUnitTesting.testTabTestsExecutionStoppedError": "The test execution has been stopped because of error(s) in your test file", + "solidityUnitTesting.progress": "Progress: {readyTestsNumber} finished (of {runningTestsNumber})", + "solidityUnitTesting.resultFor": "Result for", + "solidityUnitTesting.passed": "Passed", + "solidityUnitTesting.failed": "Failed", + "solidityUnitTesting.timeTaken": "Time Taken", + "solidityUnitTesting.errorMessage": "Error Message", + "solidityUnitTesting.assertion": "Assertion", + "solidityUnitTesting.expectedValueShouldBe": "Expected value should be", + "solidityUnitTesting.receivedValue": "Received value", + "solidityUnitTesting.skippingTheRemainingTests": "Skipping the remaining tests of the function." +} diff --git a/apps/remix-ide/src/app/tabs/locales/zh/index.js b/apps/remix-ide/src/app/tabs/locales/zh/index.js index fa1ac3f56e..80d7b18c97 100644 --- a/apps/remix-ide/src/app/tabs/locales/zh/index.js +++ b/apps/remix-ide/src/app/tabs/locales/zh/index.js @@ -8,6 +8,7 @@ import settingsJson from './settings.json'; import solidityJson from './solidity.json'; import terminalJson from './terminal.json'; import udappJson from './udapp.json'; +import solidityUnitTestingJson from './solidityUnitTesting.json'; import enJson from '../en'; // There may have some un-translated content. Always fill in the gaps with EN JSON. @@ -23,4 +24,5 @@ export default Object.assign({}, enJson, { ...solidityJson, ...terminalJson, ...udappJson, + ...solidityUnitTestingJson, }) diff --git a/apps/remix-ide/src/app/tabs/locales/zh/solidityUnitTesting.json b/apps/remix-ide/src/app/tabs/locales/zh/solidityUnitTesting.json new file mode 100644 index 0000000000..e590e33e5d --- /dev/null +++ b/apps/remix-ide/src/app/tabs/locales/zh/solidityUnitTesting.json @@ -0,0 +1,35 @@ +{ + "solidityUnitTesting.displayName": "Solidity 单元测试", + "solidityUnitTesting.testDirectory": "测试目录", + "solidityUnitTesting.testYourSmartContract": "在 Solidity 中测试您的智能合约。", + "solidityUnitTesting.selectDirectory": "选择要加载和生成测试文件的目录。", + "solidityUnitTesting.uiPathInputTooltip": "按 \"Enter\" 键更改测试文件的路径。", + "solidityUnitTesting.uiPathInputButtonTooltip": "创建一个测试目录", + "solidityUnitTesting.create": "创建", + "solidityUnitTesting.generateTestsButtonTooltip": "生成示例测试文件", + "solidityUnitTesting.generate": "生成", + "solidityUnitTesting.generateTestsLinkTooltip": "查看文档。", + "solidityUnitTesting.howToUse": "如何使用...", + "solidityUnitTesting.runButtonTitle1": "运行测试", + "solidityUnitTesting.runButtonTitle2": "请选择大于 0.4.12 的 Solidity 编译器版本。", + "solidityUnitTesting.runButtonTitle3": "未选择 solidity 文件", + "solidityUnitTesting.runButtonTitle4": "应该激活 \"Solidity Plugin\"", + "solidityUnitTesting.runButtonTitle5": "未选择测试文件", + "solidityUnitTesting.stopButtonLabel1": "停止", + "solidityUnitTesting.stopButtonLabel2": "正在停止", + "solidityUnitTesting.run": "执行", + "solidityUnitTesting.runTestsTabStopActionTooltip": "停止运行测试", + "solidityUnitTesting.selectAll": "全选", + "solidityUnitTesting.testTabTestsExecutionStopped": "测试执行已停止", + "solidityUnitTesting.testTabTestsExecutionStoppedError": "由于测试文件中的错误,测试执行已停止", + "solidityUnitTesting.progress": "进度:{readyTestsNumber} 已完成(共 {runningTestsNumber})", + "solidityUnitTesting.resultFor": "测试结果", + "solidityUnitTesting.passed": "通过", + "solidityUnitTesting.failed": "失败", + "solidityUnitTesting.timeTaken": "耗时", + "solidityUnitTesting.errorMessage": "错误信息", + "solidityUnitTesting.assertion": "断言", + "solidityUnitTesting.expectedValueShouldBe": "期望值应该是", + "solidityUnitTesting.receivedValue": "实际值", + "solidityUnitTesting.skippingTheRemainingTests": "跳过该方法的其余测试。" +} diff --git a/libs/remix-ui/solidity-unit-testing/src/lib/solidity-unit-testing.tsx b/libs/remix-ui/solidity-unit-testing/src/lib/solidity-unit-testing.tsx index 5b114499dd..58acc7421d 100644 --- a/libs/remix-ui/solidity-unit-testing/src/lib/solidity-unit-testing.tsx +++ b/libs/remix-ui/solidity-unit-testing/src/lib/solidity-unit-testing.tsx @@ -1,4 +1,5 @@ import React, { useState, useRef, useEffect, ReactElement } from 'react' // eslint-disable-line +import { FormattedMessage, useIntl } from 'react-intl' import * as semver from 'semver' import { eachOfSeries } from 'async' // eslint-disable-line import type Web3 from 'web3' @@ -45,14 +46,16 @@ export const SolidityUnitTesting = (props: Record) => { // eslint-d const { helper, testTab, initialPath } = props const { testTabLogic } = testTab + const intl = useIntl() + const [toasterMsg, setToasterMsg] = useState('') const [disableCreateButton, setDisableCreateButton] = useState(true) const [disableGenerateButton, setDisableGenerateButton] = useState(false) const [disableStopButton, setDisableStopButton] = useState(true) const [disableRunButton, setDisableRunButton] = useState(false) - const [runButtonTitle, setRunButtonTitle] = useState('Run tests') - const [stopButtonLabel, setStopButtonLabel] = useState('Stop') + const [runButtonTitle, setRunButtonTitle] = useState(intl.formatMessage({ id: 'solidityUnitTesting.runButtonTitle1' })) + const [stopButtonLabel, setStopButtonLabel] = useState(intl.formatMessage({ id: 'solidityUnitTesting.stopButtonLabel1' })) const [checkSelectAll, setCheckSelectAll] = useState(true) const [testsOutput, setTestsOutput] = useState([]) @@ -170,7 +173,7 @@ export const SolidityUnitTesting = (props: Record) => { // eslint-d if (!semver.gt(truncateVersion(currentVersion), '0.4.12')) { setDisableRunButton(true) - setRunButtonTitle('Please select Solidity compiler version greater than 0.4.12.') + setRunButtonTitle(intl.formatMessage({ id: 'solidityUnitTesting.runButtonTitle2' })) } }) @@ -395,17 +398,17 @@ export const SolidityUnitTesting = (props: Record) => { // eslint-d ✘ {test.value} {debugBtn} - Error Message: + : "{test.errMsg}" - Assertion: + :
- Expected value should be +
{method}
{preposition} {expected}
- Received value: + : {test.returned} - Skipping the remaining tests of the function. + ) setTestsOutput(prevCards => ([...prevCards, testFailCard2])) } @@ -457,10 +460,10 @@ export const SolidityUnitTesting = (props: Record) => { // eslint-d const testSummary = fileTestsResult['summary'] if (testSummary && testSummary.filename && !testSummary.rendered) { const summaryCard: ReactElement = (
- Result for {testSummary.filename} - Passed: {testSummary.passed} - Failed: {testSummary.failed} - Time Taken: {testSummary.timeTaken}s + {testSummary.filename} + : {testSummary.passed} + : {testSummary.failed} + : {testSummary.timeTaken}s
) setTestsOutput(prevCards => ([...prevCards, summaryCard])) fileTestsResult['summary']['rendered'] = true @@ -523,7 +526,7 @@ export const SolidityUnitTesting = (props: Record) => { // eslint-d if (_errors || hasBeenStopped.current || readyTestsNumber === runningTestsNumber) { // All tests are ready or the operation has been canceled or there was a compilation error in one of the test files. setDisableStopButton(true) - setStopButtonLabel('Stop') + setStopButtonLabel(intl.formatMessage({ id: 'solidityUnitTesting.stopButtonLabel1' })) if (selectedTests.current?.length !== 0) { setDisableRunButton(false) } @@ -598,16 +601,16 @@ export const SolidityUnitTesting = (props: Record) => { // eslint-d if (!isSolidityActive || !selectedTests.current.length) { setDisableRunButton(true) if (!currentFile || (currentFile && currentFile.split('.').pop().toLowerCase() !== 'sol')) { - setRunButtonTitle('No solidity file selected') + setRunButtonTitle(intl.formatMessage({ id: 'solidityUnitTesting.runButtonTitle3' })) } else { - setRunButtonTitle('The "Solidity Plugin" should be activated') + setRunButtonTitle(intl.formatMessage({ id: 'solidityUnitTesting.runButtonTitle4' })) } } else setDisableRunButton(false) } const stopTests = () => { hasBeenStopped.current = true - setStopButtonLabel('Stopping') + setStopButtonLabel(intl.formatMessage({ id: 'solidityUnitTesting.stopButtonLabel2' })) setDisableStopButton(true) setDisableRunButton(true) } @@ -625,12 +628,12 @@ export const SolidityUnitTesting = (props: Record) => { // eslint-d setCheckSelectAll(true) setDisableRunButton(false) if ((readyTestsNumber === runningTestsNumber || hasBeenStopped.current) && stopButtonLabel.trim() === 'Stop') { - setRunButtonTitle('Run tests') + setRunButtonTitle(intl.formatMessage({ id: 'solidityUnitTesting.runButtonTitle1' })) } } else if (!selectedTests.current.length) { setCheckSelectAll(false) setDisableRunButton(true) - setRunButtonTitle('No test file selected') + setRunButtonTitle(intl.formatMessage({ id: 'solidityUnitTesting.runButtonTitle5' })) } else setCheckSelectAll(false) } @@ -661,9 +664,9 @@ export const SolidityUnitTesting = (props: Record) => { // eslint-d
-

Test your smart contract in Solidity.

-

Select directory to load and generate test files.

- +

+

+
{ @@ -676,7 +679,7 @@ export const SolidityUnitTesting = (props: Record) => { // eslint-d placement="top-end" tooltipClasses="text-nowrap" tooltipId="uiPathInputtooltip" - tooltipText={"Press 'Enter' to change the path for test files."} + tooltipText={} > ) => { // eslint-d placement="top-end" tooltipClasses="text-nowrap" tooltipId="uiPathInputButtontooltip" - tooltipText="Create a test folder" + tooltipText={} >
@@ -714,7 +717,7 @@ export const SolidityUnitTesting = (props: Record) => { // eslint-d } placement={'bottom-start'} > } placement={'bottom-start'} > - +
@@ -749,7 +752,7 @@ export const SolidityUnitTesting = (props: Record) => { // eslint-d >
{testFiles.length ? testFiles.map((testFileObj: TestObject, index) => { const elemId = `singleTest${testFileObj.fileName}` @@ -787,9 +790,9 @@ export const SolidityUnitTesting = (props: Record) => { // eslint-d }) : "No test file available"}
- - - + + +
{testsOutput}