Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
baas-ide
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
guxukai
baas-ide
Commits
010c9903
Commit
010c9903
authored
Aug 16, 2018
by
yann300
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add generate test file
parent
b84110da
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
75 additions
and
3 deletions
+75
-3
test-tab-styles.js
src/app/tabs/styles/test-tab-styles.js
+4
-0
test-tab.js
src/app/tabs/test-tab.js
+59
-0
style-guide.js
src/app/ui/styles-guide/style-guide.js
+6
-0
helper.js
src/lib/helper.js
+6
-3
No files found.
src/app/tabs/styles/test-tab-styles.js
View file @
010c9903
...
...
@@ -49,6 +49,10 @@ var css = csjs`
.runButton {
${
styles
.
rightPanel
.
testTab
.
button_runTests
}
;
}
.generateTestFile {
${
styles
.
rightPanel
.
testTab
.
button_generateTestFile
}
;
min-width: 100px
}
`
module
.
exports
=
css
src/app/tabs/test-tab.js
View file @
010c9903
var
yo
=
require
(
'yo-yo'
)
var
async
=
require
(
'async'
)
var
helper
=
require
(
'../../lib/helper.js'
)
var
modalDialogCustom
=
require
(
'../ui/modal-dialog-custom'
)
var
globalRegistry
=
require
(
'../../global/registry'
)
var
css
=
require
(
'./styles/test-tab-styles'
)
var
remixTests
=
require
(
'remix-tests'
)
...
...
@@ -129,12 +131,29 @@ module.exports = class TestTab {
async
.
eachOfSeries
(
tests
,
(
value
,
key
,
callback
)
=>
{
runTest
(
value
,
callback
)
})
}
var
generateTestFile
=
function
()
{
var
fileManager
=
self
.
_deps
.
fileManager
var
path
=
fileManager
.
currentPath
()
var
fileProvider
=
fileManager
.
fileProviderOf
(
path
)
if
(
fileProvider
)
{
helper
.
createNonClashingNameWithPrefix
(
path
+
'/test.sol'
,
fileProvider
,
'_test'
,
(
error
,
newFile
)
=>
{
if
(
error
)
return
modalDialogCustom
.
alert
(
'Failed to create file. '
+
newFile
+
' '
+
error
)
if
(
!
fileProvider
.
set
(
newFile
,
testContractSample
))
{
modalDialogCustom
.
alert
(
'Failed to create test file '
+
newFile
)
}
else
{
fileManager
.
switchFile
(
newFile
)
}
})
}
}
var
el
=
yo
`
<div class="
${
css
.
testTabView
}
" id="testView">
<div class="
${
css
.
infoBox
}
">
Test your smart contract by creating a foo_test.sol file.
Open ballot_test.sol to see the example. For more details, see
How to test smart contracts guide in our documentation.
<div class=
${
css
.
generateTestFile
}
onclick=
${
generateTestFile
}
>Generate test file</div>
</div>
<div class="
${
css
.
tests
}
">
<div class=
${
css
.
testList
}
>
${
listTests
()}
</div>
...
...
@@ -150,3 +169,43 @@ module.exports = class TestTab {
return
el
}
}
var
testContractSample
=
`pragma solidity ^0.4.0;
import "remix_tests.sol"; // this import is automatically injected by Remix.
// file name has to end with '_test.sol'
contract test_1 {
function beforeAll () {
// here should instanciate tested contract
}
function check1 () public {
// this function is not constant, use 'Assert' to test the contract
Assert.equal(uint(2), uint(1), "error message");
Assert.equal(uint(2), uint(2), "error message");
}
function check2 () public constant returns (bool) {
// this function is constant, use the return value (true or false) to test the contract
return true;
}
}
contract test_2 {
function beforeAll () {
// here should instanciate tested contract
}
function check1 () public {
// this function is not constant, use 'Assert' to test the contract
Assert.equal(uint(2), uint(1), "error message");
Assert.equal(uint(2), uint(2), "error message");
}
function check2 () public constant returns (bool) {
// this function is constant, use the return value (true or false) to test the contract
return true;
}
}`
src/app/ui/styles-guide/style-guide.js
View file @
010c9903
...
...
@@ -670,6 +670,12 @@ function styleGuide () {
Color
:
appProperties
.
primaryButton_TextColor
}),
button_generateTestFile
:
appProperties
.
uiElements
.
button
({
BackgroundColor
:
appProperties
.
primaryButton_BackgroundColor
,
BorderColor
:
appProperties
.
primaryButton_BorderColor
,
Color
:
appProperties
.
primaryButton_TextColor
}),
color_testPass
:
appProperties
.
success_BackgroundColor
,
color_testFail
:
appProperties
.
danger_BackgroundColor
},
...
...
src/lib/helper.js
View file @
010c9903
...
...
@@ -11,7 +11,7 @@ module.exports = {
var
len
=
data
.
length
return
data
.
slice
(
0
,
5
)
+
'...'
+
data
.
slice
(
len
-
5
,
len
)
},
createNonClashingName
(
name
,
fileProvider
,
cb
)
{
createNonClashingName
WithPrefix
(
name
,
fileProvider
,
prefix
,
cb
)
{
var
counter
=
''
var
ext
=
'sol'
var
reg
=
/
(
.*
)\.([^
.
]
+
)
/g
...
...
@@ -24,7 +24,7 @@ module.exports = {
async
.
whilst
(
()
=>
{
return
exist
},
(
callback
)
=>
{
fileProvider
.
exists
(
name
+
counter
+
'.'
+
ext
,
(
error
,
currentExist
)
=>
{
fileProvider
.
exists
(
name
+
counter
+
prefix
+
'.'
+
ext
,
(
error
,
currentExist
)
=>
{
if
(
error
)
{
callback
(
error
)
}
else
{
...
...
@@ -34,9 +34,12 @@ module.exports = {
}
})
},
(
error
)
=>
{
cb
(
error
,
name
+
counter
+
'.'
+
ext
)
}
(
error
)
=>
{
cb
(
error
,
name
+
counter
+
prefix
+
'.'
+
ext
)
}
)
},
createNonClashingName
(
name
,
fileProvider
,
cb
)
{
this
.
createNonClashingNameWithPrefix
(
name
,
fileProvider
,
''
,
cb
)
},
checkSpecialChars
(
name
)
{
return
name
.
match
(
/
[/
:*?"<>
\\
'|
]
/
)
!=
null
},
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment