Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
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
edx
edx-platform
Commits
f730936d
Commit
f730936d
authored
Mar 30, 2016
by
sanfordstudent
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #11937 from edx/sstudent/MA-2164-followup
followup to MA-2164, cleaning up unused steps
parents
79f44357
a8c77f8d
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
4 additions
and
192 deletions
+4
-192
cms/djangoapps/contentstore/features/video.py
+4
-192
No files found.
cms/djangoapps/contentstore/features/video.py
View file @
f730936d
...
...
@@ -4,14 +4,6 @@ from lettuce import world, step
from
selenium.webdriver.common.keys
import
Keys
from
xmodule.modulestore.django
import
modulestore
VIDEO_BUTTONS
=
{
'CC'
:
'.hide-subtitles'
,
'volume'
:
'.volume'
,
'play'
:
'.video_control.play'
,
'pause'
:
'.video_control.pause'
,
'handout'
:
'.video-handout.video-download-button a'
,
}
SELECTORS
=
{
'spinner'
:
'.video-wrapper .spinner'
,
'controls'
:
'section.video-controls'
,
...
...
@@ -21,15 +13,10 @@ SELECTORS = {
DELAY
=
0.5
@step
(
'youtube stub server (.*) YouTube API'
)
def
configure_youtube_api
(
_step
,
action
):
action
=
action
.
strip
()
if
action
==
'proxies'
:
world
.
youtube
.
config
[
'youtube_api_blocked'
]
=
False
elif
action
==
'blocks'
:
world
.
youtube
.
config
[
'youtube_api_blocked'
]
=
True
else
:
raise
ValueError
(
'Parameter `action` should be one of "proxies" or "blocks".'
)
@step
(
'I have uploaded subtitles "([^"]*)"$'
)
def
i_have_uploaded_subtitles
(
_step
,
sub_id
):
_step
.
given
(
'I go to the files and uploads page'
)
_step
.
given
(
'I upload the test file "subs_{}.srt.sjson"'
.
format
(
sub_id
.
strip
()))
@step
(
'I have created a Video component$'
)
...
...
@@ -80,178 +67,3 @@ def i_created_a_video_with_subs_with_name(_step, sub_id):
world
.
wait_for_present
(
'.is-initialized'
)
world
.
wait_for_invisible
(
SELECTORS
[
'spinner'
])
@step
(
'I have uploaded subtitles "([^"]*)"$'
)
def
i_have_uploaded_subtitles
(
_step
,
sub_id
):
_step
.
given
(
'I go to the files and uploads page'
)
_step
.
given
(
'I upload the test file "subs_{}.srt.sjson"'
.
format
(
sub_id
.
strip
()))
@step
(
'when I view the (.*) it does not have autoplay enabled$'
)
def
does_not_autoplay
(
_step
,
video_type
):
world
.
wait
(
DELAY
)
world
.
wait_for_ajax_complete
()
actual
=
world
.
css_find
(
'.
%
s'
%
video_type
)[
0
][
'data-autoplay'
]
expected
=
[
u'False'
,
u'false'
,
False
]
assert
actual
in
expected
assert
world
.
css_has_class
(
'.video_control'
,
'play'
)
@step
(
'creating a video takes a single click$'
)
def
video_takes_a_single_click
(
_step
):
component_css
=
'.xmodule_VideoModule'
assert
world
.
is_css_not_present
(
component_css
)
world
.
css_click
(
"a[data-category='video']"
)
assert
world
.
is_css_present
(
component_css
)
@step
(
'I edit the component$'
)
def
i_edit_the_component
(
_step
):
world
.
edit_component
()
@step
(
'I have (hidden|toggled) captions$'
)
def
hide_or_show_captions
(
step
,
shown
):
button_css
=
'a.hide-subtitles'
if
shown
==
'hidden'
:
world
.
css_click
(
button_css
)
if
shown
==
'toggled'
:
world
.
css_click
(
button_css
)
# When we click the first time, a tooltip shows up. We want to
# click the button rather than the tooltip, so move the mouse
# away to make it disappear.
button
=
world
.
css_find
(
button_css
)
# mouse_out is not implemented on firefox with selenium
if
not
world
.
is_firefox
:
button
.
mouse_out
()
world
.
css_click
(
button_css
)
@step
(
'I have created a video with only XML data$'
)
def
xml_only_video
(
step
):
# Create a new video *without* metadata. This requires a certain
# amount of rummaging to make sure all the correct data is present
step
.
given
(
'I have clicked the new unit button'
)
# Wait for the new unit to be created and to load the page
world
.
wait
(
1
)
course
=
world
.
scenario_dict
[
'COURSE'
]
store
=
modulestore
()
parent_location
=
store
.
get_items
(
course
.
id
,
qualifiers
=
{
'category'
:
'vertical'
})[
0
]
.
location
youtube_id
=
'ABCDEFG'
world
.
scenario_dict
[
'YOUTUBE_ID'
]
=
youtube_id
# Create a new Video component, but ensure that it doesn't have
# metadata. This allows us to test that we are correctly parsing
# out XML
world
.
ItemFactory
.
create
(
parent_location
=
parent_location
,
category
=
'video'
,
data
=
'<video youtube="1.00:
%
s"></video>'
%
youtube_id
,
modulestore
=
store
,
user_id
=
world
.
scenario_dict
[
"USER"
]
.
id
)
@step
(
'The correct Youtube video is shown$'
)
def
the_youtube_video_is_shown
(
_step
):
ele
=
world
.
css_find
(
'.video'
)
.
first
assert
ele
[
'data-streams'
]
.
split
(
':'
)[
1
]
==
world
.
scenario_dict
[
'YOUTUBE_ID'
]
@step
(
'Make sure captions are (.+)$'
)
def
set_captions_visibility_state
(
_step
,
captions_state
):
SELECTOR
=
'.closed .subtitles'
world
.
wait_for_visible
(
'.hide-subtitles'
)
if
captions_state
==
'closed'
:
if
world
.
is_css_not_present
(
SELECTOR
):
world
.
css_find
(
'.hide-subtitles'
)
.
click
()
else
:
if
world
.
is_css_present
(
SELECTOR
):
world
.
css_find
(
'.hide-subtitles'
)
.
click
()
@step
(
'I hover over button "([^"]*)"$'
)
def
hover_over_button
(
_step
,
button
):
world
.
css_find
(
VIDEO_BUTTONS
[
button
.
strip
()])
.
mouse_over
()
@step
(
'Captions (?:are|become) "([^"]*)"$'
)
def
check_captions_visibility_state
(
_step
,
visibility_state
):
if
visibility_state
==
'visible'
:
assert
world
.
css_visible
(
'.subtitles'
)
else
:
assert
not
world
.
css_visible
(
'.subtitles'
)
def
find_caption_line_by_data_index
(
index
):
SELECTOR
=
".subtitles > li[data-index='{index}']"
.
format
(
index
=
index
)
return
world
.
css_find
(
SELECTOR
)
.
first
@step
(
'I focus on caption line with data-index "([^"]*)"$'
)
def
focus_on_caption_line
(
_step
,
index
):
world
.
wait_for_present
(
'.video.is-captions-rendered'
)
world
.
wait_for
(
lambda
_
:
world
.
css_text
(
'.subtitles'
),
timeout
=
30
)
find_caption_line_by_data_index
(
int
(
index
.
strip
()))
.
_element
.
send_keys
(
Keys
.
TAB
)
@step
(
'I press "enter" button on caption line with data-index "([^"]*)"$'
)
def
click_on_the_caption
(
_step
,
index
):
world
.
wait_for_present
(
'.video.is-captions-rendered'
)
world
.
wait_for
(
lambda
_
:
world
.
css_text
(
'.subtitles'
),
timeout
=
30
)
find_caption_line_by_data_index
(
int
(
index
.
strip
()))
.
_element
.
send_keys
(
Keys
.
ENTER
)
@step
(
'I see caption line with data-index "([^"]*)" has class "([^"]*)"$'
)
def
caption_line_has_class
(
_step
,
index
,
className
):
SELECTOR
=
".subtitles > li[data-index='{index}']"
.
format
(
index
=
int
(
index
.
strip
()))
assert
world
.
css_has_class
(
SELECTOR
,
className
.
strip
())
@step
(
'I see a range on slider$'
)
def
see_a_range_slider_with_proper_range
(
_step
):
world
.
wait_for_visible
(
VIDEO_BUTTONS
[
'pause'
])
assert
world
.
css_visible
(
".slider-range"
)
@step
(
'I (.*) see video button "([^"]*)"$'
)
def
do_not_see_or_not_button_video
(
_step
,
action
,
button_type
):
world
.
wait
(
DELAY
)
world
.
wait_for_ajax_complete
()
action
=
action
.
strip
()
button
=
button_type
.
strip
()
if
action
==
'do not'
:
assert
not
world
.
is_css_present
(
VIDEO_BUTTONS
[
button
])
elif
action
==
'can'
:
assert
world
.
css_visible
(
VIDEO_BUTTONS
[
button
])
else
:
raise
ValueError
(
'Parameter `action` should be one of "do not" or "can".'
)
@step
(
'I click video button "([^"]*)"$'
)
def
click_button_video
(
_step
,
button_type
):
world
.
wait
(
DELAY
)
world
.
wait_for_ajax_complete
()
button
=
button_type
.
strip
()
world
.
css_click
(
VIDEO_BUTTONS
[
button
])
@step
(
'I seek video to "([^"]*)" seconds$'
)
def
seek_video_to_n_seconds
(
_step
,
seconds
):
time
=
float
(
seconds
.
strip
())
jsCode
=
"$('.video').data('video-player-state').videoPlayer.onSlideSeek({{time: {0:f}}})"
.
format
(
time
)
world
.
browser
.
execute_script
(
jsCode
)
@step
(
'I see video starts playing from "([^"]*)" position$'
)
def
start_playing_video_from_n_seconds
(
_step
,
position
):
world
.
wait_for
(
func
=
lambda
_
:
world
.
css_html
(
'.vidtime'
)[:
4
]
==
position
.
strip
(),
timeout
=
5
)
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