Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xblock-drag-and-drop-v2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenEdx
xblock-drag-and-drop-v2
Commits
5a04b713
Commit
5a04b713
authored
Sep 24, 2014
by
Xavier Antoviaque
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #20 from open-craft/eugeny/html-labels
PR for addressing test related notes
parents
94f7841e
05e13b9e
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
140 additions
and
74 deletions
+140
-74
tests/data/test_data.json
+0
-0
tests/data/test_get_data.json
+0
-0
tests/data/test_get_html_data.json
+0
-0
tests/data/test_html_data.json
+0
-0
tests/test_drag_and_drop_v2.py
+140
-74
No files found.
tests/test_data.json
→
tests/
data/
test_data.json
View file @
5a04b713
File moved
tests/test_get_data.json
→
tests/
data/
test_get_data.json
View file @
5a04b713
File moved
tests/test_get_html_data.json
→
tests/
data/
test_get_html_data.json
View file @
5a04b713
File moved
tests/test_html_data.json
→
tests/
data/
test_html_data.json
View file @
5a04b713
File moved
tests/test_drag_and_drop_v2.py
View file @
5a04b713
import
logging
import
json
import
unittest
from
webob
import
Request
from
mock
import
Mock
...
...
@@ -73,81 +75,110 @@ def test_studio_submit():
assert_equals
(
block
.
data
,
{
'foo'
:
1
})
def
do_ajax
(
orig_file
,
get_file
):
assert_equals
.
__self__
.
maxDiff
=
None
block
=
make_block
()
with
open
(
orig_file
)
as
f
:
block
.
data
=
json
.
load
(
f
)
initial_data
=
block
.
data
zoneA
=
initial_data
[
"items"
][
0
][
"zone"
]
zoneB
=
initial_data
[
"items"
][
1
][
"zone"
]
feedback_finish
=
initial_data
[
"feedback"
][
"finish"
]
get_item_feedback
=
lambda
item
,
type
:
initial_data
[
"items"
][
item
][
"feedback"
][
type
]
with
open
(
get_file
)
as
f
:
get_data
=
json
.
loads
(
block
.
handle
(
'get_data'
,
Mock
())
.
body
)
assert_equals
(
json
.
load
(
f
),
get_data
)
# Wrong with feedback
data
=
json
.
dumps
({
"val"
:
0
,
"zone"
:
zoneB
,
"top"
:
"31px"
,
"left"
:
"216px"
})
res
=
json
.
loads
(
block
.
handle
(
'do_attempt'
,
make_request
(
data
))
.
body
)
assert_equals
(
res
,
{
"final_feedback"
:
None
,
"finished"
:
False
,
"correct"
:
False
,
"feedback"
:
get_item_feedback
(
0
,
"incorrect"
)
})
with
open
(
get_file
)
as
f
:
get_data
=
json
.
loads
(
block
.
handle
(
'get_data'
,
Mock
())
.
body
)
assert_equals
(
json
.
load
(
f
),
get_data
)
# Wrong without feedback
data
=
json
.
dumps
({
"val"
:
2
,
"zone"
:
zoneB
,
"top"
:
"42px"
,
"left"
:
"100px"
})
res
=
json
.
loads
(
block
.
handle
(
'do_attempt'
,
make_request
(
data
))
.
body
)
assert_equals
(
res
,
{
"final_feedback"
:
None
,
"finished"
:
False
,
"correct"
:
False
,
"feedback"
:
get_item_feedback
(
2
,
"incorrect"
)
})
with
open
(
get_file
)
as
f
:
get_data
=
json
.
loads
(
block
.
handle
(
'get_data'
,
Mock
())
.
body
)
assert_equals
(
json
.
load
(
f
),
get_data
)
# Correct
data
=
json
.
dumps
({
"val"
:
0
,
"zone"
:
zoneA
,
"top"
:
"11px"
,
"left"
:
"111px"
})
res
=
json
.
loads
(
block
.
handle
(
'do_attempt'
,
make_request
(
data
))
.
body
)
assert_equals
(
res
,
{
"final_feedback"
:
None
,
"finished"
:
False
,
"correct"
:
True
,
"feedback"
:
get_item_feedback
(
0
,
"correct"
)
})
with
open
(
get_file
)
as
f
:
expected
=
json
.
load
(
f
)
class
BaseDragAndDropAjaxFixture
(
object
):
_oldMaxDiff
=
None
ZONE_A
=
None
ZONE_B
=
None
FEEDBACK
=
{
0
:
{
"correct"
:
None
,
"incorrect"
:
None
},
1
:
{
"correct"
:
None
,
"incorrect"
:
None
},
2
:
{
"correct"
:
None
,
"incorrect"
:
None
}
}
FINAL_FEEDBACK
=
None
def
__init__
(
self
,
*
args
,
**
kwargs
):
self
.
_initial_data
=
None
self
.
_block
=
None
super
(
BaseDragAndDropAjaxFixture
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
@classmethod
def
setUpClass
(
cls
):
cls
.
_oldMaxDiff
=
assert_equals
.
__self__
.
maxDiff
assert_equals
.
__self__
.
maxDiff
=
None
@classmethod
def
tearDownClass
(
cls
):
assert_equals
.
__self__
.
maxDiff
=
cls
.
_oldMaxDiff
def
setUp
(
self
):
self
.
_block
=
make_block
()
self
.
_initial_data
=
self
.
initial_data
()
self
.
_block
.
data
=
self
.
_initial_data
def
tearDown
(
self
):
self
.
_block
=
None
def
initial_data
(
self
):
raise
NotImplemented
def
get_data_response
(
self
):
raise
NotImplemented
def
test_get_data_returns_expected_data
(
self
):
expected_response
=
self
.
get_data_response
()
get_data_response
=
json
.
loads
(
self
.
_block
.
handle
(
'get_data'
,
Mock
())
.
body
)
assert_equals
(
expected_response
,
get_data_response
)
def
test_do_attempt_wrong_with_feedback
(
self
):
item_id
,
zone_id
=
0
,
self
.
ZONE_B
data
=
json
.
dumps
({
"val"
:
item_id
,
"zone"
:
zone_id
,
"top"
:
"31px"
,
"left"
:
"216px"
})
res
=
json
.
loads
(
self
.
_block
.
handle
(
'do_attempt'
,
make_request
(
data
))
.
body
)
assert_equals
(
res
,
{
"final_feedback"
:
None
,
"finished"
:
False
,
"correct"
:
False
,
"feedback"
:
self
.
FEEDBACK
[
item_id
][
"incorrect"
]
})
def
test_do_attempt_wrong_without_feedback
(
self
):
item_id
,
zone_id
=
2
,
self
.
ZONE_A
data
=
json
.
dumps
({
"val"
:
item_id
,
"zone"
:
zone_id
,
"top"
:
"42px"
,
"left"
:
"100px"
})
res
=
json
.
loads
(
self
.
_block
.
handle
(
'do_attempt'
,
make_request
(
data
))
.
body
)
assert_equals
(
res
,
{
"final_feedback"
:
None
,
"finished"
:
False
,
"correct"
:
False
,
"feedback"
:
self
.
FEEDBACK
[
item_id
][
"incorrect"
]
})
def
test_do_attempt_correct
(
self
):
item_id
,
zone_id
=
0
,
self
.
ZONE_A
data
=
json
.
dumps
({
"val"
:
item_id
,
"zone"
:
zone_id
,
"top"
:
"11px"
,
"left"
:
"111px"
})
res
=
json
.
loads
(
self
.
_block
.
handle
(
'do_attempt'
,
make_request
(
data
))
.
body
)
assert_equals
(
res
,
{
"final_feedback"
:
None
,
"finished"
:
False
,
"correct"
:
True
,
"feedback"
:
self
.
FEEDBACK
[
item_id
][
"correct"
]
})
def
test_do_attempt_final
(
self
):
data
=
json
.
dumps
({
"val"
:
0
,
"zone"
:
self
.
ZONE_A
,
"top"
:
"11px"
,
"left"
:
"111px"
})
self
.
_block
.
handle
(
'do_attempt'
,
make_request
(
data
))
expected
=
self
.
get_data_response
()
expected
[
"state"
]
=
{
"items"
:
{
"0"
:
[
"11px"
,
"111px"
]
},
"finished"
:
False
}
get_data
=
json
.
loads
(
block
.
handle
(
'get_data'
,
Mock
())
.
body
)
get_data
=
json
.
loads
(
self
.
_
block
.
handle
(
'get_data'
,
Mock
())
.
body
)
assert_equals
(
expected
,
get_data
)
# Final
data
=
json
.
dumps
({
"val"
:
1
,
"zone"
:
zoneB
,
"top"
:
"22px"
,
"left"
:
"222px"
})
res
=
json
.
loads
(
block
.
handle
(
'do_attempt'
,
make_request
(
data
))
.
body
)
assert_equals
(
res
,
{
"final_feedback"
:
feedback_finish
,
"finished"
:
True
,
"correct"
:
True
,
"feedback"
:
get_item_feedback
(
1
,
"correct"
)
})
with
open
(
get_file
)
as
f
:
expected
=
json
.
load
(
f
)
data
=
json
.
dumps
({
"val"
:
1
,
"zone"
:
self
.
ZONE_B
,
"top"
:
"22px"
,
"left"
:
"222px"
})
res
=
json
.
loads
(
self
.
_block
.
handle
(
'do_attempt'
,
make_request
(
data
))
.
body
)
assert_equals
(
res
,
{
"final_feedback"
:
self
.
FINAL_FEEDBACK
,
"finished"
:
True
,
"correct"
:
True
,
"feedback"
:
self
.
FEEDBACK
[
1
][
"correct"
]
})
expected
=
self
.
get_data_response
()
expected
[
"state"
]
=
{
"items"
:
{
"0"
:
[
"11px"
,
"111px"
],
...
...
@@ -155,16 +186,51 @@ def do_ajax(orig_file, get_file):
},
"finished"
:
True
}
expected
[
"feedback"
][
"finish"
]
=
feedback_finish
get_data
=
json
.
loads
(
block
.
handle
(
'get_data'
,
Mock
())
.
body
)
expected
[
"feedback"
][
"finish"
]
=
self
.
FINAL_FEEDBACK
get_data
=
json
.
loads
(
self
.
_
block
.
handle
(
'get_data'
,
Mock
())
.
body
)
assert_equals
(
expected
,
get_data
)
def
test_ajax
():
do_ajax
(
'tests/test_data.json'
,
'tests/test_get_data.json'
)
class
TestDragAndDropHtmlData
(
BaseDragAndDropAjaxFixture
,
unittest
.
TestCase
):
ZONE_A
=
"Zone <i>A</i>"
ZONE_B
=
"Zone <b>B</b>"
FEEDBACK
=
{
0
:
{
"correct"
:
"Yes <b>A</b>"
,
"incorrect"
:
"No <b>A</b>"
},
1
:
{
"correct"
:
"Yes <i>B</i>"
,
"incorrect"
:
"No <i>B</i>"
},
2
:
{
"correct"
:
""
,
"incorrect"
:
""
}
}
FINAL_FEEDBACK
=
"Final <b>Feed</b>"
def
initial_data
(
self
):
with
open
(
'tests/data/test_html_data.json'
)
as
f
:
return
json
.
load
(
f
)
def
get_data_response
(
self
):
with
open
(
'tests/data/test_get_html_data.json'
)
as
f
:
return
json
.
load
(
f
)
class
TestDragAndDropPlainData
(
BaseDragAndDropAjaxFixture
,
unittest
.
TestCase
):
ZONE_A
=
"Zone A"
ZONE_B
=
"Zone B"
FEEDBACK
=
{
0
:
{
"correct"
:
"Yes A"
,
"incorrect"
:
"No A"
},
1
:
{
"correct"
:
"Yes B"
,
"incorrect"
:
"No B"
},
2
:
{
"correct"
:
""
,
"incorrect"
:
""
}
}
FINAL_FEEDBACK
=
"Final Feed"
def
initial_data
(
self
):
with
open
(
'tests/data/test_data.json'
)
as
f
:
return
json
.
load
(
f
)
def
test_html_ajax
():
do_ajax
(
'tests/test_html_data.json'
,
'tests/test_get_html_data.json'
)
def
get_data_response
(
self
):
with
open
(
'tests/data/test_get_data.json'
)
as
f
:
return
json
.
load
(
f
)
def
test_ajax_solve_and_reset
():
block
=
make_block
()
...
...
@@ -178,7 +244,7 @@ def test_ajax_solve_and_reset():
block
.
handle
(
'do_attempt'
,
make_request
(
data
))
assert_true
(
block
.
completed
)
assert_equals
(
block
.
item_state
,
{
0
:
(
"11px"
,
"111px"
),
1
:
(
"22px"
,
"222px"
)})
assert_equals
(
block
.
item_state
,
{
0
:
(
"11px"
,
"111px"
),
1
:
(
"22px"
,
"222px"
)})
block
.
handle
(
'reset'
,
make_request
(
"{}"
))
...
...
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