Add specs for testing various groups page features

added teacher specs for several I only had student context tests for

sshepherd,panda,17

Test Plan:
- Run specs
- Check for test_id/priority errors

Change-Id: If9bcd8780ee7e7c816ef5debc31a8af1f31920fb
Reviewed-on: https://gerrit.instructure.com/62030
Reviewed-by: Derek Hansen <dhansen@instructure.com>
Product-Review: Steven Shepherd <sshepherd@instructure.com>
QA-Review: Steven Shepherd <sshepherd@instructure.com>
Tested-by: Jenkins
This commit is contained in:
Steven Shepherd 2015-08-28 12:13:10 -06:00
parent 5c33b035ad
commit 47a8feb57b
4 changed files with 194 additions and 105 deletions

View File

@ -19,6 +19,7 @@ describe "groups" do
add_users_to_group(@students + [@user],@testgroup.first)
end
#-------------------------------------------------------------------------------------------------------------------
describe "home page" do
it_behaves_like 'home_page', 'student'
@ -29,12 +30,9 @@ describe "groups" do
end
end
#-------------------------------------------------------------------------------------------------------------------
describe "announcements page" do
it "should center the add announcement button if no announcements are present", priority: "1", test_id: 273606 do
get announcements_page
expect(f('#content.container-fluid div')).to have_attribute(:style, 'text-align: center;')
expect(f('.btn.btn-large.btn-primary')).to be_displayed
end
it_behaves_like 'announcements_page', 'student'
it "should allow any group member to create an announcement", priority: "1", test_id: 273607 do
get announcements_page
@ -52,29 +50,6 @@ describe "groups" do
expect(ff('.discussion-topic').size).to eq 2
end
it "should list all announcements", priority: "1", test_id: 273608 do
# Create 5 announcements in the group
announcements = []
5.times do |n|
announcements << @testgroup.first.announcements.create!(title: "Announcement #{n+1}", message: "Message #{n+1}",user: @teacher)
end
get announcements_page
expect(ff('.discussion-topic').size).to eq 5
end
it "should only list in-group announcements in the content right pane", priority: "1", test_id: 273621 do
# create group and course announcements
@testgroup.first.announcements.create!(title: 'Group Announcement', message: 'Group',user: @teacher)
@course.announcements.create!(title: 'Course Announcement', message: 'Course',user: @teacher)
get announcements_page
expect_new_page_load { f('.btn-primary').click }
fj(".ui-accordion-header a:contains('Announcements')").click
expect(fln('Group Announcement')).to be_displayed
expect(fln('Course Announcement')).to be_nil
end
it "should allow all group members to see announcements", priority: "1", test_id: 273613 do
@announcement = @testgroup.first.announcements.create!(title: 'Group Announcement', message: 'Group',user: @teacher)
# Verifying with a few different group members should be enough to ensure all group members can see it
@ -84,14 +59,6 @@ describe "groups" do
verify_member_sees_announcement
end
it "should only access group files in announcements right content pane", priority: "1", test_id: 273624 do
add_test_files
get announcements_page
expect_new_page_load { f('.btn-primary').click }
expand_files_on_content_pane
expect(ffj('.file .text:visible').size).to eq 1
end
it "should only allow group members to access announcements", priority: "1", test_id: 315329 do
get announcements_page
expect(fj('.btn-primary:contains("Announcement")')).to be_displayed
@ -99,7 +66,10 @@ describe "groups" do
end
end
#-------------------------------------------------------------------------------------------------------------------
describe "people page" do
it_behaves_like 'people_page', 'student'
it "should display and show a list of group members", priority: "1", test_id: 273614 do
get people_page
# Checks that all students and teachers created in setup are listed on page
@ -114,7 +84,10 @@ describe "groups" do
end
end
#-------------------------------------------------------------------------------------------------------------------
describe "discussions page" do
it_behaves_like 'discussions_page', 'student'
it "should allow discussions to be created within a group", priority: "1", test_id: 273615 do
get discussions_page
expect_new_page_load { f('#new-discussion-btn').click }
@ -140,28 +113,6 @@ describe "groups" do
expect(f('#podcast_enabled')).to be_nil
end
it "should only list in-group discussions in the content right pane", priority: "1", test_id: 273622 do
# create group and course announcements
group_dt = DiscussionTopic.create!(context: @testgroup.first, user: @teacher,
title: 'Group Discussion', message: 'Group')
course_dt = DiscussionTopic.create!(context: @course, user: @teacher,
title: 'Course Discussion', message: 'Course')
get discussions_page
expect_new_page_load { f('.btn-primary').click }
fj(".ui-accordion-header a:contains('Discussions')").click
expect(fln("#{group_dt.title}")).to be_displayed
expect(fln("#{course_dt.title}")).to be_nil
end
it "should only access group files in discussions right content pane", priority: "1", test_id: 303701 do
add_test_files
get discussions_page
expect_new_page_load { f('.btn-primary').click }
expand_files_on_content_pane
expect(ffj('.file .text:visible').size).to eq 1
end
it "should only allow group members to access discussions", priority: "1", test_id: 315332 do
get discussions_page
expect(f('#new-discussion-btn')).to be_displayed
@ -169,13 +120,9 @@ describe "groups" do
end
end
#-------------------------------------------------------------------------------------------------------------------
describe "pages page" do
it "should load pages index and display all pages", priority: "1", test_id: 273610 do
@testgroup.first.wiki.wiki_pages.create!(title: "Page 1", user: @teacher)
@testgroup.first.wiki.wiki_pages.create!(title: "Page 2", user: @teacher)
get pages_page
expect(ff('.collectionViewItems .clickable').size).to eq 2
end
it_behaves_like 'pages_page', 'student'
it "should allow group members to create a page", priority: "1", test_id: 273611 do
get pages_page
@ -191,30 +138,6 @@ describe "groups" do
verify_member_sees_group_page
end
it "should only list in-group pages in the content right pane", priority: "1", test_id: 273620 do
# create group and course announcements
group_page = @testgroup.first.wiki.wiki_pages.create!(user: @teacher,
title: 'Group Page', message: 'Group')
course_page = @course.wiki.wiki_pages.create!(user: @teacher,
title: 'Course Page', message: 'Course')
get pages_page
f('.btn-primary').click
wait_for_ajaximations
fj(".ui-accordion-header a:contains('Wiki Pages')").click
expect(fln("#{group_page.title}")).to be_displayed
expect(fln("#{course_page.title}")).to be_nil
end
it "should only access group files in pages right content pane", priority: "1", test_id: 303700 do
add_test_files
get pages_page
f('.btn-primary').click
wait_for_ajaximations
expand_files_on_content_pane
expect(ffj('.file .text:visible').size).to eq 1
end
it "should only allow group members to access pages", priority: "1", test_id: 315331 do
get pages_page
expect(fj('.btn-primary:contains("Page")')).to be_displayed
@ -222,6 +145,7 @@ describe "groups" do
end
end
#-------------------------------------------------------------------------------------------------------------------
describe "Files page" do
it_behaves_like 'files_page', 'student'
@ -267,17 +191,6 @@ describe "groups" do
move_file_to_folder('example.pdf','destination_folder')
end
it "should search files only within the scope of a group", priority: "1", test_id: 273627 do
add_test_files
get files_page
f('input[type="search"]').send_keys 'example.pdf'
driver.action.send_keys(:return).perform
refresh_page
# This checks to make sure there is only one file and it is the group-level one
expect(get_all_files_folders.count).to eq 1
expect(ff('.media-body').first).to include_text('example.pdf')
end
it "should allow group members to publish and unpublish a file", priority: "1", test_id: 273628 do
add_test_files
get files_page
@ -295,6 +208,7 @@ describe "groups" do
end
end
#-------------------------------------------------------------------------------------------------------------------
describe "conferences page" do
before(:all) do
PluginSetting.create!(name: "wimba", settings: {"domain" => "wimba.instructure.com"})

View File

@ -19,11 +19,15 @@ describe "groups" do
add_users_to_group(@students,@testgroup.first)
end
#-------------------------------------------------------------------------------------------------------------------
describe "home page" do
it_behaves_like 'home_page', 'teacher'
end
#-------------------------------------------------------------------------------------------------------------------
describe "announcements page" do
it_behaves_like 'announcements_page', 'teacher'
it "should allow teachers to see announcements", priority: "1", test_id: 287049 do
@announcement = @testgroup.first.announcements.create!(title: 'Group Announcement', message: 'Group',user: @students.first)
verify_member_sees_announcement
@ -40,7 +44,22 @@ describe "groups" do
end
end
#-------------------------------------------------------------------------------------------------------------------
describe "people page" do
it_behaves_like 'people_page', 'teacher'
it "should display and show a list of group members", priority: "2", test_id: 324929 do
get people_page
# Checks that all students and teachers created in setup are listed on page
expect(ff('.student_roster .user_name').size).to eq 4
expect(ff('.teacher_roster .user_name').size).to eq 2
end
end
#-------------------------------------------------------------------------------------------------------------------
describe "discussions page" do
it_behaves_like 'discussions_page', 'teacher'
it "should allow teachers to create discussions within a group", priority: "1", test_id: 285586 do
get discussions_page
expect_new_page_load { f('#new-discussion-btn').click }
@ -66,7 +85,10 @@ describe "groups" do
end
end
#-------------------------------------------------------------------------------------------------------------------
describe "pages page" do
it_behaves_like 'pages_page', 'teacher'
it "should allow teachers to create a page", priority: "1", test_id: 289993 do
get pages_page
manually_create_wiki_page('stuff','it happens')
@ -79,6 +101,7 @@ describe "groups" do
end
end
#-------------------------------------------------------------------------------------------------------------------
describe "Files page" do
it_behaves_like 'files_page', 'teacher'
@ -133,6 +156,7 @@ describe "groups" do
end
end
#-------------------------------------------------------------------------------------------------------------------
describe "conferences page" do
before(:all) do
PluginSetting.create!(name: "wimba", settings: {"domain" => "wimba.instructure.com"})

View File

@ -18,3 +18,13 @@ def create_conference(title = 'test conference')
f('.ui-dialog .btn-primary').click
wait_for_ajaximations
end
def conclude_conference(conf)
conf.close
conf.save!
end
def click_gear_menu(num)
ff('.icon-settings')[num].click
wait_for_ajaximations
end

View File

@ -48,15 +48,116 @@ shared_examples 'home_page' do |context|
end
end
shared_examples 'conferences_page' do |context|
it "should allow group users to create a conference", priority: pick_priority(context,"1","2"),test_id: pick_test_id(context, 307624, 308534) do
title = 'test conference'
get conferences_page
create_conference(title)
expect(f('#new-conference-list .ig-title').text).to include(title)
#-----------------------------------------------------------------------------------------------------------------------
shared_examples 'announcements_page' do |context|
it "should center the add announcement button if no announcements are present", pick_priority(context,"1","2"), test_id: pick_test_id(context, 273606, 324936) do
get announcements_page
expect(f('#content.container-fluid div')).to have_attribute(:style, 'text-align: center;')
expect(f('.btn.btn-large.btn-primary')).to be_displayed
end
it "should list all announcements", pick_priority(context,"1","2"), test_id: pick_test_id(context, 273608, 324935) do
# Create 5 announcements in the group
announcements = []
5.times do |n|
announcements << @testgroup.first.announcements.create!(title: "Announcement #{n+1}", message: "Message #{n+1}",user: @teacher)
end
get announcements_page
expect(ff('.discussion-topic').size).to eq 5
end
it "should only list in-group announcements in the content right pane", pick_priority(context,"1","2"), test_id: pick_test_id(context, 273621, 324934) do
# create group and course announcements
@testgroup.first.announcements.create!(title: 'Group Announcement', message: 'Group',user: @teacher)
@course.announcements.create!(title: 'Course Announcement', message: 'Course',user: @teacher)
get announcements_page
expect_new_page_load { f('.btn-primary').click }
fj(".ui-accordion-header a:contains('Announcements')").click
expect(fln('Group Announcement')).to be_displayed
expect(fln('Course Announcement')).to be_nil
end
it "should only access group files in announcements right content pane", pick_priority(context,"1","2"), test_id: pick_test_id(context, 273624,324931) do
add_test_files
get announcements_page
expect_new_page_load { f('.btn-primary').click }
expand_files_on_content_pane
expect(ffj('.file .text:visible').size).to eq 1
end
end
#-----------------------------------------------------------------------------------------------------------------------
shared_examples 'pages_page' do |context|
it "should load pages index and display all pages", priority: pick_priority(context,"1","2"), test_id: pick_test_id(context, 273610, 324927) do
@testgroup.first.wiki.wiki_pages.create!(title: "Page 1", user: @teacher)
@testgroup.first.wiki.wiki_pages.create!(title: "Page 2", user: @teacher)
get pages_page
expect(ff('.collectionViewItems .clickable').size).to eq 2
end
it "should only list in-group pages in the content right pane", priority: pick_priority(context,"1","2"), test_id: pick_test_id(context, 273620,324928) do
# create group and course announcements
group_page = @testgroup.first.wiki.wiki_pages.create!(user: @teacher,
title: 'Group Page', message: 'Group')
course_page = @course.wiki.wiki_pages.create!(user: @teacher,
title: 'Course Page', message: 'Course')
get pages_page
f('.btn-primary').click
wait_for_ajaximations
fj(".ui-accordion-header a:contains('Wiki Pages')").click
expect(fln("#{group_page.title}")).to be_displayed
expect(fln("#{course_page.title}")).to be_nil
end
it "should only access group files in pages right content pane", priority: pick_priority(context,"1","2"), test_id: pick_test_id(context, 303700,324932) do
add_test_files
get pages_page
f('.btn-primary').click
wait_for_ajaximations
expand_files_on_content_pane
expect(ffj('.file .text:visible').size).to eq 1
end
end
#-----------------------------------------------------------------------------------------------------------------------
shared_examples 'people_page' do |context|
it "should allow group users to see group registered services page", priority: pick_priority(context,"1","2"),test_id: pick_test_id(context, 323329, 324926) do
get people_page
expect_new_page_load { fln('View Registered Services').click }
# Checks that we are on the Registered Services page
expect(f('.btn.button-sidebar-wide')).to be_displayed
end
end
#-----------------------------------------------------------------------------------------------------------------------
shared_examples 'discussions_page' do |context|
it "should only list in-group discussions in the content right pane", pick_priority(context,"1","2"), test_id: pick_test_id(context, 273622,324930) do
# create group and course announcements
group_dt = DiscussionTopic.create!(context: @testgroup.first, user: @teacher,
title: 'Group Discussion', message: 'Group')
course_dt = DiscussionTopic.create!(context: @course, user: @teacher,
title: 'Course Discussion', message: 'Course')
get discussions_page
expect_new_page_load { f('.btn-primary').click }
fj(".ui-accordion-header a:contains('Discussions')").click
expect(fln("#{group_dt.title}")).to be_displayed
expect(fln("#{course_dt.title}")).to be_nil
end
it "should only access group files in discussions right content pane", pick_priority(context,"1","2"), test_id: pick_test_id(context, 303701, 324933) do
add_test_files
get discussions_page
expect_new_page_load { f('.btn-primary').click }
expand_files_on_content_pane
expect(ffj('.file .text:visible').size).to eq 1
end
end
#-----------------------------------------------------------------------------------------------------------------------
shared_examples 'files_page' do |context|
it "should allow group users to rename a file", priority: "2", test_id: pick_test_id(context, 312869, 315577) do
add_test_files
@ -65,7 +166,47 @@ shared_examples 'files_page' do |context|
wait_for_ajaximations
expect(fln('cool new name')).to be_present
end
it "should search files only within the scope of a group", pick_priority(context,"1","2"), test_id: pick_test_id(context, 273627, 324937) do
add_test_files
get files_page
f('input[type="search"]').send_keys 'example.pdf'
driver.action.send_keys(:return).perform
refresh_page
# This checks to make sure there is only one file and it is the group-level one
expect(get_all_files_folders.count).to eq 1
expect(ff('.media-body').first).to include_text('example.pdf')
end
end
#-----------------------------------------------------------------------------------------------------------------------
shared_examples 'conferences_page' do |context|
it "should allow group users to create a conference", priority: pick_priority(context,"1","2"),test_id: pick_test_id(context, 307624, 308534) do
title = 'test conference'
get conferences_page
create_conference(title)
expect(f('#new-conference-list .ig-title').text).to include(title)
end
it "should allow group users to delete an active conference", priority: pick_priority(context,"1","2"),test_id: pick_test_id(context, 323557, 323558) do
WimbaConference.create!(title: "new conference", user: @user, context: @testgroup.first)
get conferences_page
click_gear_menu(0)
delete_conference
expect(f('#new-conference-list')).to include_text('There are no new conferences')
end
it "should allow group users to delete a concluded conference", priority: pick_priority(context,"1","2"),test_id: pick_test_id(context, 323559, 323560) do
cc = WimbaConference.create!(title: "cncluded conference", user: @user, context: @testgroup.first)
conclude_conference(cc)
get conferences_page
click_gear_menu(0)
delete_conference
expect(f('#concluded-conference-list')).to include_text('There are no concluded conferences')
end
end
# ======================================================================================================================
# Helper Methods
# ======================================================================================================================