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
26684be3
Commit
26684be3
authored
Mar 21, 2017
by
Jeff LaJoie
Committed by
GitHub
Mar 21, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #14681 from edx/jlajoie/TNL-6011
TNL-6011: Removes onChange save for dropdowns
parents
8ee620a7
bf955988
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
34 additions
and
15 deletions
+34
-15
common/test/acceptance/pages/lms/fields.py
+2
-2
common/test/acceptance/pages/lms/learner_profile.py
+4
-1
common/test/acceptance/tests/helpers.py
+7
-3
common/test/acceptance/tests/lms/test_account_settings.py
+7
-4
common/test/acceptance/tests/lms/test_learner_profile.py
+4
-4
lms/static/js/spec/student_account/account_settings_fields_spec.js
+5
-0
lms/static/js/spec/views/fields_helpers.js
+4
-0
lms/static/js/spec/views/fields_spec.js
+1
-0
lms/static/js/views/fields.js
+0
-1
No files found.
common/test/acceptance/pages/lms/fields.py
View file @
26684be3
...
...
@@ -192,7 +192,7 @@ class FieldsMixin(object):
return
self
.
q
(
css
=
'.u-field-{} .u-field-value .u-field-value-readonly'
.
format
(
field_id
))
.
text
[
0
]
def
value_for_dropdown_field
(
self
,
field_id
,
value
=
None
):
def
value_for_dropdown_field
(
self
,
field_id
,
value
=
None
,
focus_out
=
False
):
"""
Get or set the value in a dropdown field.
"""
...
...
@@ -205,7 +205,7 @@ class FieldsMixin(object):
return
None
if
value
is
not
None
:
select_option_by_text
(
query
,
value
)
select_option_by_text
(
query
,
value
,
focus_out
)
if
self
.
mode_for_field
(
field_id
)
==
'edit'
:
return
get_selected_option_text
(
query
)
...
...
common/test/acceptance/pages/lms/learner_profile.py
View file @
26684be3
...
...
@@ -8,10 +8,12 @@ from bok_choy.page_object import PageObject
from
common.test.acceptance.pages.lms.fields
import
FieldsMixin
from
bok_choy.promise
import
EmptyPromise
from
common.test.acceptance.pages.lms.instructor_dashboard
import
InstructorDashboardPage
from
common.test.acceptance.tests.helpers
import
select_option_by_value
from
selenium.webdriver
import
ActionChains
PROFILE_VISIBILITY_SELECTOR
=
'#u-field-select-account_privacy option[value="{}"]'
PROFILE_VISIBILITY_INPUT
=
'#u-field-select-account_privacy'
FIELD_ICONS
=
{
'country'
:
'fa-map-marker'
,
'language_proficiencies'
:
'fa-comment'
,
...
...
@@ -146,7 +148,8 @@ class LearnerProfilePage(FieldsMixin, PageObject):
self
.
wait_for_element_visibility
(
'select#u-field-select-account_privacy'
,
'Privacy dropdown is visible'
)
if
privacy
!=
self
.
privacy
:
self
.
q
(
css
=
PROFILE_VISIBILITY_SELECTOR
.
format
(
privacy
))
.
first
.
click
()
query
=
self
.
q
(
css
=
PROFILE_VISIBILITY_INPUT
)
select_option_by_value
(
query
,
privacy
,
focus_out
=
True
)
EmptyPromise
(
lambda
:
privacy
==
self
.
privacy
,
'Privacy is set to {}'
.
format
(
privacy
))
.
fulfill
()
self
.
wait_for_ajax
()
...
...
common/test/acceptance/tests/helpers.py
View file @
26684be3
...
...
@@ -26,6 +26,7 @@ from openedx.core.lib.tests.assertions.events import assert_event_matches, is_ma
from
xmodule.partitions.partitions
import
UserPartition
from
xmodule.partitions.tests.test_partitions
import
MockUserPartitionScheme
from
selenium.common.exceptions
import
StaleElementReferenceException
from
selenium.webdriver.common.keys
import
Keys
from
selenium.webdriver.support.select
import
Select
from
selenium.webdriver.support.ui
import
WebDriverWait
from
selenium.webdriver.support
import
expected_conditions
as
EC
...
...
@@ -213,7 +214,7 @@ def enable_css_animations(page):
"""
)
def
select_option_by_text
(
select_browser_query
,
option_text
):
def
select_option_by_text
(
select_browser_query
,
option_text
,
focus_out
=
False
):
"""
Chooses an option within a select by text (helper method for Select's select_by_visible_text method).
...
...
@@ -225,6 +226,8 @@ def select_option_by_text(select_browser_query, option_text):
try
:
select
=
Select
(
query
.
first
.
results
[
0
])
select
.
select_by_visible_text
(
value
)
if
focus_out
:
query
.
first
.
results
[
0
]
.
send_keys
(
Keys
.
TAB
)
return
True
except
StaleElementReferenceException
:
return
False
...
...
@@ -267,7 +270,7 @@ def generate_course_key(org, number, run):
return
CourseLocator
(
org
,
number
,
run
,
deprecated
=
(
default_store
==
'draft'
))
def
select_option_by_value
(
browser_query
,
value
):
def
select_option_by_value
(
browser_query
,
value
,
focus_out
=
False
):
"""
Selects a html select element by matching value attribute
"""
...
...
@@ -288,9 +291,10 @@ def select_option_by_value(browser_query, value):
if
not
opt
.
is_selected
():
all_options_selected
=
False
opt
.
click
()
# if value is not an option choice then it should return false
if
all_options_selected
and
not
has_option
:
all_options_selected
=
False
if
focus_out
:
browser_query
.
first
.
results
[
0
]
.
send_keys
(
Keys
.
TAB
)
return
all_options_selected
# Make sure specified option is actually selected
...
...
common/test/acceptance/tests/lms/test_account_settings.py
View file @
26684be3
...
...
@@ -226,10 +226,13 @@ class AccountSettingsPageTest(AccountSettingsTestMixin, AcceptanceTest):
Test behaviour of a dropdown field.
"""
self
.
assertEqual
(
self
.
account_settings_page
.
title_for_field
(
field_id
),
title
)
self
.
assertEqual
(
self
.
account_settings_page
.
value_for_dropdown_field
(
field_id
),
initial_value
)
self
.
assertEqual
(
self
.
account_settings_page
.
value_for_dropdown_field
(
field_id
,
focus_out
=
True
),
initial_value
)
for
new_value
in
new_values
:
self
.
assertEqual
(
self
.
account_settings_page
.
value_for_dropdown_field
(
field_id
,
new_value
),
new_value
)
self
.
assertEqual
(
self
.
account_settings_page
.
value_for_dropdown_field
(
field_id
,
new_value
,
focus_out
=
True
),
new_value
)
# An XHR request is made when changing the field
self
.
account_settings_page
.
wait_for_ajax
()
if
reloads_on_save
:
...
...
@@ -237,7 +240,7 @@ class AccountSettingsPageTest(AccountSettingsTestMixin, AcceptanceTest):
else
:
self
.
browser
.
refresh
()
self
.
account_settings_page
.
wait_for_page
()
self
.
assertEqual
(
self
.
account_settings_page
.
value_for_dropdown_field
(
field_id
),
new_value
)
self
.
assertEqual
(
self
.
account_settings_page
.
value_for_dropdown_field
(
field_id
,
focus_out
=
True
),
new_value
)
def
_test_link_field
(
self
,
field_id
,
title
,
link_title
,
field_type
,
success_message
):
"""
...
...
@@ -387,7 +390,7 @@ class AccountSettingsPageTest(AccountSettingsTestMixin, AcceptanceTest):
Test behaviour of "Year of Birth" field.
"""
# Note that when we clear the year_of_birth here we're firing an event.
self
.
assertEqual
(
self
.
account_settings_page
.
value_for_dropdown_field
(
'year_of_birth'
,
''
),
''
)
self
.
assertEqual
(
self
.
account_settings_page
.
value_for_dropdown_field
(
'year_of_birth'
,
''
,
focus_out
=
True
),
''
)
expected_events
=
[
self
.
expected_settings_changed_event
(
'year_of_birth'
,
None
,
1980
),
...
...
common/test/acceptance/tests/lms/test_learner_profile.py
View file @
26684be3
...
...
@@ -44,8 +44,8 @@ class LearnerProfileTestMixin(EventsTestMixin):
"""
Fill in the public profile fields of a user.
"""
profile_page
.
value_for_dropdown_field
(
'language_proficiencies'
,
'English'
)
profile_page
.
value_for_dropdown_field
(
'country'
,
'United Arab Emirates'
)
profile_page
.
value_for_dropdown_field
(
'language_proficiencies'
,
'English'
,
focus_out
=
True
)
profile_page
.
value_for_dropdown_field
(
'country'
,
'United Arab Emirates'
,
focus_out
=
True
)
profile_page
.
set_value_for_textarea_field
(
'bio'
,
'Nothing Special'
)
# Waits here for text to appear/save on bio field
profile_page
.
wait_for_ajax
()
...
...
@@ -91,7 +91,7 @@ class LearnerProfileTestMixin(EventsTestMixin):
account_settings_page
.
visit
()
account_settings_page
.
wait_for_page
()
self
.
assertEqual
(
account_settings_page
.
value_for_dropdown_field
(
'year_of_birth'
,
str
(
birth_year
)),
account_settings_page
.
value_for_dropdown_field
(
'year_of_birth'
,
str
(
birth_year
)
,
focus_out
=
True
),
str
(
birth_year
)
)
...
...
@@ -322,7 +322,7 @@ class OwnLearnerProfilePageTest(LearnerProfileTestMixin, AcceptanceTest):
"""
Test behaviour of a dropdown field.
"""
profile_page
.
value_for_dropdown_field
(
field_id
,
new_value
)
profile_page
.
value_for_dropdown_field
(
field_id
,
new_value
,
focus_out
=
True
)
self
.
assertEqual
(
profile_page
.
get_non_editable_mode_value
(
field_id
),
displayed_value
)
self
.
assertTrue
(
profile_page
.
mode_for_field
(
field_id
),
mode
)
...
...
lms/static/js/spec/student_account/account_settings_fields_spec.js
View file @
26684be3
...
...
@@ -86,6 +86,7 @@ define(['backbone',
// change country
countryView
.
$
(
baseSelector
).
val
(
countryChange
[
countryData
.
valueAttribute
]).
change
();
countryView
.
$
(
baseSelector
).
focusout
();
FieldViewsSpecHelpers
.
expectAjaxRequestWithData
(
requests
,
countryChange
);
AjaxHelpers
.
respondWithJson
(
requests
,
{
success
:
'true'
});
...
...
@@ -106,6 +107,7 @@ define(['backbone',
// select time zone option from option
timeZoneView
.
$
(
baseSelector
).
val
(
timeZoneChange
[
timeZoneData
.
valueAttribute
]).
change
();
timeZoneView
.
$
(
baseSelector
).
focusout
();
FieldViewsSpecHelpers
.
expectAjaxRequestWithData
(
requests
,
timeZoneChange
);
AjaxHelpers
.
respondWithJson
(
requests
,
{
success
:
'true'
});
timeZoneView
.
render
();
...
...
@@ -130,6 +132,7 @@ define(['backbone',
var
data
=
{
'language'
:
FieldViewsSpecHelpers
.
SELECT_OPTIONS
[
2
][
0
]};
view
.
$
(
selector
).
val
(
data
[
fieldData
.
valueAttribute
]).
change
();
view
.
$
(
selector
).
focusout
();
FieldViewsSpecHelpers
.
expectAjaxRequestWithData
(
requests
,
data
);
AjaxHelpers
.
respondWithNoContent
(
requests
);
...
...
@@ -144,6 +147,7 @@ define(['backbone',
data
=
{
'language'
:
FieldViewsSpecHelpers
.
SELECT_OPTIONS
[
1
][
0
]};
view
.
$
(
selector
).
val
(
data
[
fieldData
.
valueAttribute
]).
change
();
view
.
$
(
selector
).
focusout
();
FieldViewsSpecHelpers
.
expectAjaxRequestWithData
(
requests
,
data
);
AjaxHelpers
.
respondWithNoContent
(
requests
);
...
...
@@ -177,6 +181,7 @@ define(['backbone',
var
data
=
{
'language_proficiencies'
:
[{
'code'
:
FieldViewsSpecHelpers
.
SELECT_OPTIONS
[
1
][
0
]}]};
view
.
$
(
selector
).
val
(
FieldViewsSpecHelpers
.
SELECT_OPTIONS
[
1
][
0
]).
change
();
view
.
$
(
selector
).
focusout
();
FieldViewsSpecHelpers
.
expectAjaxRequestWithData
(
requests
,
data
);
AjaxHelpers
.
respondWithNoContent
(
requests
);
});
...
...
lms/static/js/spec/views/fields_helpers.js
View file @
26684be3
...
...
@@ -184,6 +184,7 @@ define(['backbone',
}
view
.
$
(
data
.
valueInputSelector
).
val
(
data
.
validValue
).
change
();
view
.
$
(
data
.
valueInputSelector
).
focusout
();
// When the value in the field is changed
expect
(
view
.
fieldValue
()).
toBe
(
data
.
validValue
);
expectMessageContains
(
view
,
view
.
indicators
.
inProgress
);
...
...
@@ -203,6 +204,7 @@ define(['backbone',
}
view
.
$
(
data
.
valueInputSelector
).
val
(
data
.
invalidValue1
).
change
();
view
.
$
(
data
.
valueInputSelector
).
focusout
();
request_data
[
data
.
valueAttribute
]
=
data
.
invalidValue1
;
AjaxHelpers
.
expectJsonRequest
(
requests
,
'PATCH'
,
url
,
request_data
...
...
@@ -214,6 +216,7 @@ define(['backbone',
expect
(
view
.
el
).
toHaveClass
(
'mode-edit'
);
view
.
$
(
data
.
valueInputSelector
).
val
(
data
.
invalidValue2
).
change
();
view
.
$
(
data
.
valueInputSelector
).
focusout
();
request_data
[
data
.
valueAttribute
]
=
data
.
invalidValue2
;
AjaxHelpers
.
expectJsonRequest
(
requests
,
'PATCH'
,
url
,
request_data
...
...
@@ -225,6 +228,7 @@ define(['backbone',
expect
(
view
.
el
).
toHaveClass
(
'mode-edit'
);
view
.
$
(
data
.
valueInputSelector
).
val
(
''
).
change
();
view
.
$
(
data
.
valueInputSelector
).
focusout
();
// When the value in the field is changed
expect
(
view
.
fieldValue
()).
toBe
(
data
.
defaultValue
);
request_data
[
data
.
valueAttribute
]
=
data
.
defaultValue
;
...
...
lms/static/js/spec/views/fields_spec.js
View file @
26684be3
...
...
@@ -231,6 +231,7 @@ define(['backbone', 'jquery', 'underscore', 'edx-ui-toolkit/js/utils/spec-helper
}
expect
(
view
.
$
(
dropdownSelectClass
).
length
).
toBe
(
1
);
view
.
$
(
dropdownSelectClass
).
val
(
FieldViewsSpecHelpers
.
SELECT_OPTIONS
[
0
]).
change
();
view
.
$
(
dropdownSelectClass
).
focusout
();
expect
(
view
.
fieldValue
()).
toBe
(
FieldViewsSpecHelpers
.
SELECT_OPTIONS
[
0
][
0
]);
AjaxHelpers
.
respondWithNoContent
(
requests
);
...
...
lms/static/js/views/fields.js
View file @
26684be3
...
...
@@ -364,7 +364,6 @@
events
:
{
'click'
:
'startEditing'
,
'change select'
:
'finishEditing'
,
'focusout select'
:
'finishEditing'
},
...
...
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