Commit 1b5050c9 by JonahStanley

Changed the following:

% to format
css_find().click() to its actual function
A few name changes as well as step changes
Removal of drag testing
A refactoring of login and create user.  Login will no longer create the specified user
parent eb14a078
......@@ -58,6 +58,7 @@ def i_have_opened_a_new_course(step):
####### HELPER FUNCTIONS ##############
def open_new_course():
world.clear_courses()
create_studio_user()
log_into_studio()
create_a_course()
......@@ -90,10 +91,7 @@ def fill_in_course_info(
def log_into_studio(
uname='robot',
email='robot+studio@edx.org',
password='test',
is_staff=False):
create_studio_user(uname=uname, email=email, is_staff=is_staff)
password='test'):
world.browser.cookies.delete()
world.visit('/')
......
......@@ -2,10 +2,10 @@
#pylint: disable=W0621
from lettuce import world, step
from common import create_studio_user, COURSE_NAME
from common import create_studio_user, log_into_studio, COURSE_NAME
PASS = 'test'
EXTENSION = '@edx.org'
PASSWORD = 'test'
EMAIL_EXTENSION = '@edx.org'
@step(u'I am viewing the course team settings')
......@@ -17,49 +17,39 @@ def view_grading_settings(step):
@step(u'The user "([^"]*)" exists$')
def create_other_user(step, name):
create_studio_user(uname=name, password=PASS, email=(name + EXTENSION))
create_studio_user(uname=name, password=PASSWORD, email=(name + EMAIL_EXTENSION))
@step(u'I add "([^"]*)" to the course team')
def add_other_user(step, name):
new_user_css = '.new-user-button'
world.css_find(new_user_css).click()
new_user_css = 'a.new-user-button'
world.css_click(new_user_css)
email_css = '.email-input'
email_css = 'input.email-input'
f = world.css_find(email_css)
f._element.send_keys(name, EXTENSION)
f._element.send_keys(name, EMAIL_EXTENSION)
confirm_css = '#add_user'
world.css_find(confirm_css).click()
world.css_click(confirm_css)
@step(u'I delete "([^"]*)" from the course team')
def delete_other_user(step, name):
to_delete_css = '.remove-user[data-id="%s%s"]' % (name, EXTENSION,)
world.css_find(to_delete_css).click()
to_delete_css = '.remove-user[data-id="{name}{extension}"]'.format(name=name, extension=EMAIL_EXTENSION,)
world.css_click(to_delete_css)
@step(u'"([^"]*)" logs in$')
def other_user_login(step, name):
world.browser.cookies.delete()
world.visit('/')
signin_css = 'a.action-signin'
world.is_css_present(signin_css)
world.css_click(signin_css)
login_form = world.browser.find_by_css('form#login_form')
login_form.find_by_name('email').fill(name + EXTENSION)
login_form.find_by_name('password').fill(PASS)
login_form.find_by_name('submit').click()
log_into_studio(uname=name, password=PASSWORD, email=name + EMAIL_EXTENSION)
@step(u'He does( not)? see the course on his page')
def see_course(step, doesnt):
def see_course(step, doesnt_see_course):
class_css = '.class-name'
all_courses = world.css_find(class_css)
all_names = [item.html for item in all_courses]
if doesnt:
if doesnt_see_course:
assert not COURSE_NAME in all_names
else:
assert COURSE_NAME in all_names
......
......@@ -4,41 +4,34 @@ Feature: Course updates
Scenario: Users can add updates
Given I have opened a new course in Studio
And I go to the course updates page
When I add a new update
And I make the text "Hello"
When I add a new update with the text "Hello"
Then I should see the update "Hello"
Scenario: Users can edit updates
Given I have opened a new course in Studio
And I go to the course updates page
When I add a new update
And I make the text "Hello"
And I click the "edit" button
And I make the text "Goodbye"
When I add a new update with the text "Hello"
And I modify the text to "Goodbye"
Then I should see the update "Goodbye"
Scenario: Users can delete updates
Given I have opened a new course in Studio
And I go to the course updates page
And I add a new update
And I make the text "Hello"
And I add a new update with the text "Hello"
When I will confirm all alerts
And I click the "delete" button
And I delete the update
Then I should not see the update "Hello"
Scenario: Users can edit update dates
Given I have opened a new course in Studio
And I go to the course updates page
And I add a new update
And I make the text "Hello"
When I click the "edit" button
And I make the date "June 1, 2013"
And I add a new update with the text "Hello"
When I edit the date to "June 1, 2013"
Then I should see the date "June 1, 2013"
Scenario: Users can change handouts
Given I have opened a new course in Studio
And I go to the course updates page
When I edit the handouts
And I make the text "<ol>Test</ol>"
When I modify the handout to "<ol>Test</ol>"
Then I see the handout "Test"
......@@ -9,57 +9,51 @@ from selenium.webdriver.common.keys import Keys
def go_to_uploads(step):
menu_css = 'li.nav-course-courseware'
uploads_css = '.nav-course-courseware-updates'
world.css_find(menu_css).click()
world.css_find(uploads_css).click()
world.css_click(menu_css)
world.css_click(uploads_css)
@step(u'I add a new update')
def add_update(step):
@step(u'I add a new update with the text "([^"]*)"$')
def add_update(step, text):
update_css = '.new-update-button'
world.css_find(update_css).click()
@step(u'I make the text "([^"]*)"$')
def change_text(step, text):
text_css = 'div.CodeMirror > div > textarea'
prev_css = 'div.CodeMirror-lines > div > div:last-child > pre'
all_lines = world.css_find(prev_css)
all_text = ''
for i in range(len(all_lines)):
all_text = all_lines[i].html
text_area = world.css_find(text_css)
for i in range(len(all_text)):
text_area._element.send_keys(Keys.END, Keys.BACK_SPACE)
text_area._element.send_keys(text)
save_css = '.save-button'
world.css_find(save_css).click()
world.css_click(update_css)
change_text(text)
@step(u'I should( not)? see the update "([^"]*)"$')
def check_update(step, doesnt, text):
def check_update(step, doesnt_see_update, text):
update_css = '.update-contents'
update = world.css_find(update_css)
if doesnt:
if doesnt_see_update:
assert len(update) == 0 or not text in update.html
else:
assert text in update.html
@step(u'I click the "([^"]*)" button$')
def click_button(step, edit_delete):
button_css = '.post-preview .%s-button' % edit_delete
world.css_find(button_css).click()
@step(u'I modify the text to "([^"]*)"$')
def modify_update(step, text):
button_css = '.post-preview .edit-button'
world.css_click(button_css)
change_text(text)
@step(u'I delete the update$')
def click_button(step):
button_css = '.post-preview .delete-button'
world.css_click(button_css)
@step(u'I make the date "([^"]*)"$')
@step(u'I edit the date to "([^"]*)"$')
def change_date(step, new_date):
button_css = '.post-preview .edit-button'
world.css_click(button_css)
date_css = 'input.date'
date = world.css_find(date_css)
for i in range(len(date.value)):
date._element.send_keys(Keys.END, Keys.BACK_SPACE)
date._element.send_keys(new_date)
save_css = '.save-button'
world.css_find(save_css).click()
world.css_click(save_css)
@step(u'I should see the date "([^"]*)"$')
......@@ -69,10 +63,11 @@ def check_date(step, date):
assert date == date_html.html
@step(u'I edit the handouts')
def edit_handouts(step):
@step(u'I modify the handout to "([^"]*)"$')
def edit_handouts(step, text):
edit_css = '.course-handouts > .edit-button'
world.css_find(edit_css).click()
world.css_click(edit_css)
change_text(text)
@step(u'I see the handout "([^"]*)"$')
......@@ -80,3 +75,18 @@ def check_handout(step, handout):
handout_css = '.handouts-content'
handouts = world.css_find(handout_css)
assert handout in handouts.html
def change_text(text):
text_css = 'div.CodeMirror > div > textarea'
prev_css = 'div.CodeMirror-lines > div > div:last-child > pre'
all_lines = world.css_find(prev_css)
all_text = ''
for i in range(len(all_lines)):
all_text = all_lines[i].html
text_area = world.css_find(text_css)
for i in range(len(all_text)):
text_area._element.send_keys(Keys.END, Keys.BACK_SPACE)
text_area._element.send_keys(text)
save_css = '.save-button'
world.css_click(save_css)
......@@ -10,6 +10,7 @@ from common import *
@step('There are no courses$')
def no_courses(step):
world.clear_courses()
create_studio_user()
@step('I click the New Course button$')
......
......@@ -22,13 +22,3 @@ Feature: Static Pages
When I "edit" the "Empty" page
And I change the name to "New"
Then I should see a "New" static page
Scenario: Users can reorder static pages
Given I have opened a new course in Studio
And I go to the static pages page
And I add a new page
And I "edit" the "Empty" page
And I change the name to "New"
And I add a new page
When I move "New" after "Empty"
Then I see the order is "Empty New"
......@@ -50,27 +50,10 @@ def change_name(step, new_name):
world.css_find(save_button).click()
@step(u'I move "([^"]*)" after "([^"]*)"$')
def change_list(step, item1, item2):
index1 = get_index(item1)
index2 = get_index(item2)
assert index1 != -1 and index2 != -1
world.drag_sortable_after(".component", index1, index2, ".ui-sortable")
@step(u'I see the order is "([^"]*)"$')
def check_order(step, items):
items = items.split(' ')
name_css = 'section[data-type="HTMLModule"]'
all_elements = world.css_find(name_css)
for i in range(len(items)):
assert all_elements[i].html == '\n %s\n' % items[i]
def get_index(name):
page_name_css = 'section[data-type="HTMLModule"]'
all_pages = world.css_find(page_name_css)
for i in range(len(all_pages)):
if all_pages[i].html == '\n %s\n' % name:
if all_pages[i].html == '\n {name}\n'.format(name=name):
return i
return -1
......@@ -50,7 +50,8 @@ def have_a_course_with_two_sections(step):
@step(u'I navigate to the course overview page$')
def navigate_to_the_course_overview_page(step):
log_into_studio(is_staff=True)
create_studio_user(is_staff=True)
log_into_studio()
course_locator = '.class-name'
world.css_click(course_locator)
......
......@@ -20,6 +20,7 @@ def upload_file(step, file_name):
file_css = '.file-input'
upload = world.css_find(file_css)
#uploading the file itself
upload._element.send_keys(os.getcwd() + '/' + file_name)
close_css = '.close-button'
......
......@@ -158,15 +158,3 @@ def click_tools():
tools_css = 'li.nav-course-tools'
if world.browser.is_element_present_by_css(tools_css):
world.css_click(tools_css)
@world.absorb
def drag_sortable_after(item_css, index1, index2, sortable_css):
"""
This is a hack in order to simulate jQuery's sortable list dragging as Selenium cannot currently do it with action_chains
Please note that this is very finnicky with keeping the changes after refreshing the page so be careful when testing persistant changes
Also note that this is mainly for visualization of the sortable list and the true sortable drag and drop fires many events
"""
world.browser.execute_script('$("%(item_css)s:eq(%(index_one)s)").insertAfter($("%(item_css)s:eq(%(index_two)s)"));\
$("%(sortable_css)s").trigger("sortupdate")' %
{'item_css': item_css, 'index_one': index1, 'index_two': index2, 'sortable_css': sortable_css})
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment