sakai-cle-test-api 0.0.7 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/sakai-cle-test-api.rb +7 -2
 - data/lib/sakai-cle-test-api/add_files.rb +198 -0
 - data/lib/sakai-cle-test-api/admin_page_elements.rb +7 -3
 - data/lib/sakai-cle-test-api/announcements.rb +274 -7
 - data/lib/sakai-cle-test-api/assessments.rb +930 -27
 - data/lib/sakai-cle-test-api/assignments.rb +769 -13
 - data/lib/sakai-cle-test-api/basic_lti.rb +5 -1
 - data/lib/sakai-cle-test-api/blogs.rb +54 -2
 - data/lib/sakai-cle-test-api/calendar.rb +423 -8
 - data/lib/sakai-cle-test-api/chat_room.rb +0 -0
 - data/lib/sakai-cle-test-api/common_page_elements.rb +69 -172
 - data/lib/sakai-cle-test-api/core-ext.rb +90 -0
 - data/lib/sakai-cle-test-api/data_objects/announcement.rb +38 -0
 - data/lib/sakai-cle-test-api/data_objects/assessment.rb +32 -0
 - data/lib/sakai-cle-test-api/data_objects/assignment.rb +62 -0
 - data/lib/sakai-cle-test-api/data_objects/event.rb +86 -0
 - data/lib/sakai-cle-test-api/data_objects/lesson.rb +137 -0
 - data/lib/sakai-cle-test-api/data_objects/resource.rb +174 -0
 - data/lib/sakai-cle-test-api/data_objects/site.rb +213 -0
 - data/lib/sakai-cle-test-api/data_objects/syllabus.rb +7 -0
 - data/lib/sakai-cle-test-api/data_objects/topic.rb +0 -0
 - data/lib/sakai-cle-test-api/data_objects/web_content_tool.rb +52 -0
 - data/lib/sakai-cle-test-api/data_objects/wiki.rb +7 -0
 - data/lib/sakai-cle-test-api/drop_box.rb +21 -0
 - data/lib/sakai-cle-test-api/email_archive.rb +15 -1
 - data/lib/sakai-cle-test-api/forums.rb +282 -8
 - data/lib/sakai-cle-test-api/gem_ext.rb +45 -0
 - data/lib/sakai-cle-test-api/gradebook.rb +19 -1
 - data/lib/sakai-cle-test-api/gradebook2.rb +15 -1
 - data/lib/sakai-cle-test-api/lessons.rb +440 -0
 - data/lib/sakai-cle-test-api/messages.rb +551 -15
 - data/lib/sakai-cle-test-api/news.rb +3 -1
 - data/lib/sakai-cle-test-api/polls.rb +65 -3
 - data/lib/sakai-cle-test-api/profile.rb +36 -2
 - data/lib/sakai-cle-test-api/profile2.rb +315 -6
 - data/lib/sakai-cle-test-api/resources.rb +138 -0
 - data/lib/sakai-cle-test-api/rich_text.rb +13 -0
 - data/lib/sakai-cle-test-api/sections.rb +198 -8
 - data/lib/sakai-cle-test-api/site_page_elements.rb +4 -441
 - data/lib/sakai-cle-test-api/syllabus.rb +149 -7
 - data/lib/sakai-cle-test-api/tools_menu.rb +3 -20
 - data/lib/sakai-cle-test-api/utilities.rb +260 -0
 - data/sakai-cle-test-api.gemspec +2 -3
 - metadata +21 -19
 
| 
         @@ -3,12 +3,125 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            # Assessments pages - "Samigo", a.k.a., "Tests & Quizzes"
         
     | 
| 
       4 
4 
     | 
    
         
             
            #================
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
      
 6 
     | 
    
         
            +
            # This is a module containing methods that are
         
     | 
| 
      
 7 
     | 
    
         
            +
            # common to all the question pages inside the
         
     | 
| 
      
 8 
     | 
    
         
            +
            # Assessment section of a Site.
         
     | 
| 
      
 9 
     | 
    
         
            +
            module QuestionHelpers
         
     | 
| 
      
 10 
     | 
    
         
            +
              include PageObject
         
     | 
| 
      
 11 
     | 
    
         
            +
              # Saves the question by clicking the Save button, then makes the determination
         
     | 
| 
      
 12 
     | 
    
         
            +
              # whether to instantiate the EditAssessment class, or the EditQuestionPool class.
         
     | 
| 
      
 13 
     | 
    
         
            +
              def save
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                quiz = frm.div(:class=>"portletBody").div(:index=>0).text
         
     | 
| 
      
 16 
     | 
    
         
            +
                pool = frm.div(:class=>"portletBody").div(:index=>1).text
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                frm.button(:value=>"Save").click
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                if quiz =~ /^Assessments/
         
     | 
| 
      
 21 
     | 
    
         
            +
                  EditAssessment.new(@browser)
         
     | 
| 
      
 22 
     | 
    
         
            +
                elsif pool =~ /^Question Pools/
         
     | 
| 
      
 23 
     | 
    
         
            +
                  EditQuestionPool.new(@browser)
         
     | 
| 
      
 24 
     | 
    
         
            +
                else
         
     | 
| 
      
 25 
     | 
    
         
            +
                  puts "Unexpected text: "
         
     | 
| 
      
 26 
     | 
    
         
            +
                  p pool
         
     | 
| 
      
 27 
     | 
    
         
            +
                  p quiz
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 33 
     | 
    
         
            +
                link(:assessments, :text=>"Assessments", :frame=>frame)
         
     | 
| 
      
 34 
     | 
    
         
            +
                link(:assessment_types, :text=>"Assessment Types", :frame=>frame)
         
     | 
| 
      
 35 
     | 
    
         
            +
                link(:question_pools, :text=>"Question Pools", :frame=>frame)
         
     | 
| 
      
 36 
     | 
    
         
            +
                link(:questions, :text=>/Questions:/, :frame=>frame)
         
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
       6 
41 
     | 
    
         
             
            # The Course Tools "Tests and Quizzes" page for a given site.
         
     | 
| 
       7 
42 
     | 
    
         
             
            # (Instructor view)
         
     | 
| 
       8 
43 
     | 
    
         
             
            class AssessmentsList
         
     | 
| 
       9 
44 
     | 
    
         
             
              include PageObject
         
     | 
| 
       10 
45 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
              # This method reads the type of assessment selected for creation,
         
     | 
| 
      
 48 
     | 
    
         
            +
              # then clicks the Create button and instantiates the proper class.
         
     | 
| 
      
 49 
     | 
    
         
            +
              #
         
     | 
| 
      
 50 
     | 
    
         
            +
              # If the assessment is going to be made in the builder, then
         
     | 
| 
      
 51 
     | 
    
         
            +
              # EditAssessment is called. If from Markup text...
         
     | 
| 
      
 52 
     | 
    
         
            +
              def create
         
     | 
| 
      
 53 
     | 
    
         
            +
                builder_or_text = frm.radio(:value=>"1", :name=>"authorIndexForm:_id29").set?
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                frm.button(:value=>"Create").click
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                if builder_or_text == true
         
     | 
| 
      
 58 
     | 
    
         
            +
                  EditAssessment.new(@browser)
         
     | 
| 
      
 59 
     | 
    
         
            +
                else
         
     | 
| 
      
 60 
     | 
    
         
            +
                  # Need to add Markup page class, then add the reference here.
         
     | 
| 
      
 61 
     | 
    
         
            +
                end
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
              end
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
              # Clicks the Question Pools link, then instantiates
         
     | 
| 
      
 66 
     | 
    
         
            +
              # the QuestionPoolsList class.
         
     | 
| 
      
 67 
     | 
    
         
            +
              def question_pools
         
     | 
| 
      
 68 
     | 
    
         
            +
                frm.link(:text=>"Question Pools").click
         
     | 
| 
      
 69 
     | 
    
         
            +
                QuestionPoolsList.new(@browser)
         
     | 
| 
      
 70 
     | 
    
         
            +
              end
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
              # Collects the titles of the Assessments listed as "Pending"
         
     | 
| 
      
 73 
     | 
    
         
            +
              # then returns them as an Array.
         
     | 
| 
      
 74 
     | 
    
         
            +
              def pending_assessment_titles
         
     | 
| 
      
 75 
     | 
    
         
            +
                titles =[]
         
     | 
| 
      
 76 
     | 
    
         
            +
                pending_table = frm.table(:id=>"authorIndexForm:coreAssessments")
         
     | 
| 
      
 77 
     | 
    
         
            +
                1.upto(pending_table.rows.size-1) do |x|
         
     | 
| 
      
 78 
     | 
    
         
            +
                  titles << pending_table[x][1].span(:id=>/assessmentTitle/).text
         
     | 
| 
      
 79 
     | 
    
         
            +
                end
         
     | 
| 
      
 80 
     | 
    
         
            +
                return titles
         
     | 
| 
      
 81 
     | 
    
         
            +
              end
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
              # Collects the titles of the Assessments listed as "Published"
         
     | 
| 
      
 84 
     | 
    
         
            +
              # then returns them as an Array.
         
     | 
| 
      
 85 
     | 
    
         
            +
              def published_assessment_titles
         
     | 
| 
      
 86 
     | 
    
         
            +
                titles =[]
         
     | 
| 
      
 87 
     | 
    
         
            +
                published_table = frm.div(:class=>"tier2", :index=>2).table(:class=>"listHier", :index=>0)
         
     | 
| 
      
 88 
     | 
    
         
            +
                1.upto(published_table.rows.size-1) do |x|
         
     | 
| 
      
 89 
     | 
    
         
            +
                  titles << published_table[x][1].span(:id=>/publishedAssessmentTitle/).text
         
     | 
| 
      
 90 
     | 
    
         
            +
                end
         
     | 
| 
      
 91 
     | 
    
         
            +
                return titles
         
     | 
| 
      
 92 
     | 
    
         
            +
              end
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
              # Returns an Array of the inactive Assessment titles displayed
         
     | 
| 
      
 95 
     | 
    
         
            +
              # in the list.
         
     | 
| 
      
 96 
     | 
    
         
            +
              def inactive_assessment_titles
         
     | 
| 
      
 97 
     | 
    
         
            +
                titles =[]
         
     | 
| 
      
 98 
     | 
    
         
            +
                inactive_table = frm.div(:class=>"tier2", :index=>2).table(:id=>"authorIndexForm:inactivePublishedAssessments")
         
     | 
| 
      
 99 
     | 
    
         
            +
                1.upto(inactive_table.rows.size-1) do |x|
         
     | 
| 
      
 100 
     | 
    
         
            +
                  titles << inactive_table[x][1].span(:id=>/inactivePublishedAssessmentTitle/).text
         
     | 
| 
      
 101 
     | 
    
         
            +
                end
         
     | 
| 
      
 102 
     | 
    
         
            +
                return titles
         
     | 
| 
      
 103 
     | 
    
         
            +
              end
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
              # Opens the selected test for scoring
         
     | 
| 
      
 106 
     | 
    
         
            +
              # then instantiates the AssessmentTotalScores class.
         
     | 
| 
      
 107 
     | 
    
         
            +
              # @param test_title [String] the title of the test to be clicked.
         
     | 
| 
      
 108 
     | 
    
         
            +
              def score_test(test_title)
         
     | 
| 
      
 109 
     | 
    
         
            +
                frm.tbody(:id=>"authorIndexForm:_id88:tbody_element").row(:text=>/#{Regexp.escape(test_title)}/).link(:id=>/authorIndexToScore/).click
         
     | 
| 
      
 110 
     | 
    
         
            +
                AssessmentTotalScores.new(@browser)
         
     | 
| 
      
 111 
     | 
    
         
            +
              end
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 114 
     | 
    
         
            +
                link(:assessment_types, :text=>"Assessment Types", :frame=>frame)
         
     | 
| 
      
 115 
     | 
    
         
            +
                text_field(:title, :id=>"authorIndexForm:title", :frame=>frame)
         
     | 
| 
      
 116 
     | 
    
         
            +
                radio_button(:create_using_builder) { |page| page.radio_button_element(:name=>"authorIndexForm:_id29", index=>0, :frame=>frame) }
         
     | 
| 
      
 117 
     | 
    
         
            +
                radio_button(:create_using_text) { |page| page.radio_button_element(:name=>"authorIndexForm:_id29", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 118 
     | 
    
         
            +
                select_list(:select_assessment_type, :id=>"authorIndexForm:assessmentTemplate", :frame=>frame)
         
     | 
| 
      
 119 
     | 
    
         
            +
                button(:import, :id=>"authorIndexForm:import", :frame=>frame)
         
     | 
| 
      
 120 
     | 
    
         
            +
                #(:, :=>"", :frame=>frame)
         
     | 
| 
      
 121 
     | 
    
         
            +
                #(:, :=>"", :frame=>frame)
         
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
      
 123 
     | 
    
         
            +
              end
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
       12 
125 
     | 
    
         
             
            end
         
     | 
| 
       13 
126 
     | 
    
         | 
| 
       14 
127 
     | 
    
         
             
            # Page that appears when previewing an assessment.
         
     | 
| 
         @@ -16,21 +129,201 @@ end 
     | 
|
| 
       16 
129 
     | 
    
         
             
            class PreviewOverview
         
     | 
| 
       17 
130 
     | 
    
         
             
              include PageObject
         
     | 
| 
       18 
131 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
              # Scrapes the value of the due date from the page. Returns it as a string.
         
     | 
| 
      
 134 
     | 
    
         
            +
              def due_date
         
     | 
| 
      
 135 
     | 
    
         
            +
                frm.div(:class=>"tier2").table(:index=>0)[0][0].text
         
     | 
| 
      
 136 
     | 
    
         
            +
              end
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
              # Scrapes the value of the time limit from the page. Returns it as a string.
         
     | 
| 
      
 139 
     | 
    
         
            +
              def time_limit
         
     | 
| 
      
 140 
     | 
    
         
            +
                frm.div(:class=>"tier2").table(:index=>0)[3][0].text
         
     | 
| 
      
 141 
     | 
    
         
            +
              end
         
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
      
 143 
     | 
    
         
            +
              # Scrapes the submission limit from the page. Returns it as a string.
         
     | 
| 
      
 144 
     | 
    
         
            +
              def submission_limit
         
     | 
| 
      
 145 
     | 
    
         
            +
                frm.div(:class=>"tier2").table(:index=>0)[6][0].text
         
     | 
| 
      
 146 
     | 
    
         
            +
              end
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
              # Scrapes the Feedback policy from the page. Returns it as a string.
         
     | 
| 
      
 149 
     | 
    
         
            +
              def feedback
         
     | 
| 
      
 150 
     | 
    
         
            +
                frm.div(:class=>"tier2").table(:index=>0)[9][0].text
         
     | 
| 
      
 151 
     | 
    
         
            +
              end
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
      
 153 
     | 
    
         
            +
              # Clicks the Done button, then instantiates
         
     | 
| 
      
 154 
     | 
    
         
            +
              # the EditAssessment class.
         
     | 
| 
      
 155 
     | 
    
         
            +
              def done
         
     | 
| 
      
 156 
     | 
    
         
            +
                frm.button(:name=>"takeAssessmentForm:_id5").click
         
     | 
| 
      
 157 
     | 
    
         
            +
                EditAssessment.new(@browser)
         
     | 
| 
      
 158 
     | 
    
         
            +
              end
         
     | 
| 
      
 159 
     | 
    
         
            +
             
     | 
| 
      
 160 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 161 
     | 
    
         
            +
                button(:begin_assessment, :id=>"takeAssessmentForm:beginAssessment3", :frame=>frame)
         
     | 
| 
      
 162 
     | 
    
         
            +
             
     | 
| 
      
 163 
     | 
    
         
            +
              end
         
     | 
| 
      
 164 
     | 
    
         
            +
             
     | 
| 
       20 
165 
     | 
    
         
             
            end
         
     | 
| 
       21 
166 
     | 
    
         | 
| 
       22 
167 
     | 
    
         
             
            # The Settings page for a particular Assessment
         
     | 
| 
       23 
168 
     | 
    
         
             
            class AssessmentSettings
         
     | 
| 
       24 
169 
     | 
    
         
             
              include PageObject
         
     | 
| 
       25 
170 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
      
 171 
     | 
    
         
            +
             
     | 
| 
      
 172 
     | 
    
         
            +
              # Scrapes the Assessment Type from the page and returns it as a string.
         
     | 
| 
      
 173 
     | 
    
         
            +
              def assessment_type_title
         
     | 
| 
      
 174 
     | 
    
         
            +
                frm.div(:class=>"tier2").table(:index=>0)[0][1].text
         
     | 
| 
      
 175 
     | 
    
         
            +
              end
         
     | 
| 
      
 176 
     | 
    
         
            +
             
     | 
| 
      
 177 
     | 
    
         
            +
              # Scrapes the Assessment Author information from the page and returns it as a string.
         
     | 
| 
      
 178 
     | 
    
         
            +
              def assessment_type_author
         
     | 
| 
      
 179 
     | 
    
         
            +
                frm.div(:class=>"tier2").table(:index=>0)[1][1].text
         
     | 
| 
      
 180 
     | 
    
         
            +
              end
         
     | 
| 
      
 181 
     | 
    
         
            +
             
     | 
| 
      
 182 
     | 
    
         
            +
              # Scrapes the Assessment Type Description from the page and returns it as a string.
         
     | 
| 
      
 183 
     | 
    
         
            +
              def assessment_type_description
         
     | 
| 
      
 184 
     | 
    
         
            +
                frm.div(:class=>"tier2").table(:index=>0)[2][1].text
         
     | 
| 
      
 185 
     | 
    
         
            +
              end
         
     | 
| 
      
 186 
     | 
    
         
            +
             
     | 
| 
      
 187 
     | 
    
         
            +
              # Clicks the Save Settings and Publish button
         
     | 
| 
      
 188 
     | 
    
         
            +
              # then instantiates the PublishAssessment class.
         
     | 
| 
      
 189 
     | 
    
         
            +
              def save_and_publish
         
     | 
| 
      
 190 
     | 
    
         
            +
                frm.button(:value=>"Save Settings and Publish").click
         
     | 
| 
      
 191 
     | 
    
         
            +
                PublishAssessment.new(@browser)
         
     | 
| 
      
 192 
     | 
    
         
            +
              end
         
     | 
| 
      
 193 
     | 
    
         
            +
             
     | 
| 
      
 194 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 195 
     | 
    
         
            +
                link(:open, :text=>"Open", :frame=>frame)
         
     | 
| 
      
 196 
     | 
    
         
            +
                link(:close, :text=>"Close", :frame=>frame)
         
     | 
| 
      
 197 
     | 
    
         
            +
                text_field(:title, :id=>"assessmentSettingsAction:intro:assessment_title", :frame=>frame)
         
     | 
| 
      
 198 
     | 
    
         
            +
                text_field(:authors, :id=>"assessmentSettingsAction:intro:assessment_author", :frame=>frame)
         
     | 
| 
      
 199 
     | 
    
         
            +
                text_area(:description, :id=>"assessmentSettingsAction:intro:_id44_textinput", :frame=>frame)
         
     | 
| 
      
 200 
     | 
    
         
            +
                button(:add_attachments_to_intro, :name=>"assessmentSettingsAction:intro:_id90", :frame=>frame)
         
     | 
| 
      
 201 
     | 
    
         
            +
                text_field(:available_date, :id=>"assessmentSettingsAction:startDate", :frame=>frame)
         
     | 
| 
      
 202 
     | 
    
         
            +
                text_field(:due_date, :id=>"assessmentSettingsAction:endDate", :frame=>frame)
         
     | 
| 
      
 203 
     | 
    
         
            +
                text_field(:retract_date, :id=>"assessmentSettingsAction:retractDate", :frame=>frame)
         
     | 
| 
      
 204 
     | 
    
         
            +
                radio_button(:released_to_anonymous) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:_id117", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 205 
     | 
    
         
            +
                radio_button(:released_to_site) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:_id117", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 206 
     | 
    
         
            +
                text_area(:specified_ips, :name=>"assessmentSettingsAction:_id132", :frame=>frame)
         
     | 
| 
      
 207 
     | 
    
         
            +
                text_field(:secondary_id, :id=>"assessmentSettingsAction:username", :frame=>frame)
         
     | 
| 
      
 208 
     | 
    
         
            +
                text_field(:secondary_pw, :id=>"assessmentSettingsAction:password", :frame=>frame)
         
     | 
| 
      
 209 
     | 
    
         
            +
                checkbox(:timed_assessment, :id=>"assessmentSettingsAction:selTimeAssess", :frame=>frame)
         
     | 
| 
      
 210 
     | 
    
         
            +
                select_list(:limit_hour, :id=>"assessmentSettingsAction:timedHours", :frame=>frame)
         
     | 
| 
      
 211 
     | 
    
         
            +
                select_list(:limit_mins, :id=>"assessmentSettingsAction:timedMinutes", :frame=>frame)
         
     | 
| 
      
 212 
     | 
    
         
            +
                radio_button(:linear_access) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:itemNavigation", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 213 
     | 
    
         
            +
                radio_button(:random_access) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:itemNavigation", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 214 
     | 
    
         
            +
                radio_button(:question_per_page) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:assessmentFormat", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 215 
     | 
    
         
            +
                radio_button(:part_per_page) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:assessmentFormat", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 216 
     | 
    
         
            +
                radio_button(:assessment_per_page) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:assessmentFormat", :index=>2, :frame=>frame) }
         
     | 
| 
      
 217 
     | 
    
         
            +
                radio_button(:continuous_numbering) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:itemNumbering", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 218 
     | 
    
         
            +
                radio_button(:restart_per_part) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:itemNumbering", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 219 
     | 
    
         
            +
                checkbox(:add_mark_for_review, :id=>"assessmentSettingsAction:markForReview1", :frame=>frame)
         
     | 
| 
      
 220 
     | 
    
         
            +
                radio_button(:unlimited_submissions) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:unlimitedSubmissions", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 221 
     | 
    
         
            +
                radio_button(:only_x_submissions) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:unlimitedSubmissions", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 222 
     | 
    
         
            +
                text_field(:allowed_submissions, :id=>"assessmentSettingsAction:submissions_Allowed", :frame=>frame)
         
     | 
| 
      
 223 
     | 
    
         
            +
                radio_button(:late_submissions_not_accepted) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:lateHandling", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 224 
     | 
    
         
            +
                radio_button(:late_submissions_accepted) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:lateHandling", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 225 
     | 
    
         
            +
                text_area(:submission_message, :id=>"assessmentSettingsAction:_id245_textinput", :frame=>frame)
         
     | 
| 
      
 226 
     | 
    
         
            +
                text_field(:final_page_url, :id=>"assessmentSettingsAction:finalPageUrl", :frame=>frame)
         
     | 
| 
      
 227 
     | 
    
         
            +
                radio_button(:question_level_feedback) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:feedbackAuthoring", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 228 
     | 
    
         
            +
                radio_button(:selection_level_feedback) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:feedbackAuthoring", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 229 
     | 
    
         
            +
                radio_button(:both_feedback_levels) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:feedbackAuthoring", :index=>2, :frame=>frame) }
         
     | 
| 
      
 230 
     | 
    
         
            +
                radio_button(:immediate_feedback) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:feedbackDelivery", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 231 
     | 
    
         
            +
                radio_button(:feedback_on_submission) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:feedbackDelivery", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 232 
     | 
    
         
            +
                radio_button(:no_feedback) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:feedbackDelivery", :index=>2, :frame=>frame) }
         
     | 
| 
      
 233 
     | 
    
         
            +
                radio_button(:feedback_on_date) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:feedbackDelivery", :index=>3, :frame=>frame) }
         
     | 
| 
      
 234 
     | 
    
         
            +
                text_field(:feedback_date, :id=>"assessmentSettingsAction:feedbackDate", :frame=>frame)
         
     | 
| 
      
 235 
     | 
    
         
            +
                radio_button(:only_release_scores) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:feedbackComponentOption", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 236 
     | 
    
         
            +
                radio_button(:release_questions_and) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:feedbackComponentOption", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 237 
     | 
    
         
            +
                checkbox(:release_student_response, :id=>"assessmentSettingsAction:feedbackCheckbox1", :frame=>frame)
         
     | 
| 
      
 238 
     | 
    
         
            +
                checkbox(:release_correct_response, :id=>"assessmentSettingsAction:feedbackCheckbox3", :frame=>frame)
         
     | 
| 
      
 239 
     | 
    
         
            +
                checkbox(:release_students_assessment_scores, :id=>"assessmentSettingsAction:feedbackCheckbox5", :frame=>frame)
         
     | 
| 
      
 240 
     | 
    
         
            +
                checkbox(:release_students_question_and_part_scores, :id=>"assessmentSettingsAction:feedbackCheckbox7", :frame=>frame)
         
     | 
| 
      
 241 
     | 
    
         
            +
                checkbox(:release_question_level_feedback, :id=>"assessmentSettingsAction:feedbackCheckbox2", :frame=>frame)
         
     | 
| 
      
 242 
     | 
    
         
            +
                checkbox(:release_selection_level_feedback, :id=>"assessmentSettingsAction:feedbackCheckbox4", :frame=>frame)
         
     | 
| 
      
 243 
     | 
    
         
            +
                checkbox(:release_graders_comments, :id=>"assessmentSettingsAction:feedbackCheckbox6", :frame=>frame)
         
     | 
| 
      
 244 
     | 
    
         
            +
                checkbox(:release_statistics, :id=>"assessmentSettingsAction:feedbackCheckbox8", :frame=>frame)
         
     | 
| 
      
 245 
     | 
    
         
            +
                radio_button(:student_ids_seen) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:anonymousGrading1", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 246 
     | 
    
         
            +
                radio_button(:anonymous_grading) { |page| page.radio_button_element( :name=>"assessmentSettingsAction:anonymousGrading1", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 247 
     | 
    
         
            +
                #radio_button(:no_gradebook_options) { |page| page.radio_button_element( :name=>"", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 248 
     | 
    
         
            +
                #radio_button(:grades_sent_to_gradebook) { |page| page.radio_button_element( :name=>"", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 249 
     | 
    
         
            +
                #radio_button(:record_highest_score) { |page| page.radio_button_element( :name=>"", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 250 
     | 
    
         
            +
                #radio_button(:record_last_score) { |page| page.radio_button_element( :name=>"", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 251 
     | 
    
         
            +
                #radio_button(:background_color) { |page| page.radio_button_element( :name=>"", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 252 
     | 
    
         
            +
                #text_field(:color_value, :id=>"", :frame=>frame)
         
     | 
| 
      
 253 
     | 
    
         
            +
                #radio_button(:background_image) { |page| page.radio_button_element( :name=>"", :index=>$frame_index, :frame=>frame) }
         
     | 
| 
      
 254 
     | 
    
         
            +
                #text_field(:image_name, :=>"", :frame=>frame)
         
     | 
| 
      
 255 
     | 
    
         
            +
                #text_field(:keywords, :=>"", :frame=>frame)
         
     | 
| 
      
 256 
     | 
    
         
            +
                #text_field(:objectives, :=>"", :frame=>frame)
         
     | 
| 
      
 257 
     | 
    
         
            +
                #text_field(:rubrics, :=>"", :frame=>frame)
         
     | 
| 
      
 258 
     | 
    
         
            +
                #checkbox(:record_metadata_for_questions, :=>"", :frame=>frame)
         
     | 
| 
      
 259 
     | 
    
         
            +
                button(:save, :name=>"assessmentSettingsAction:_id383", :frame=>frame)
         
     | 
| 
      
 260 
     | 
    
         
            +
                button(:cancel, :name=>"assessmentSettingsAction:_id385", :frame=>frame)
         
     | 
| 
      
 261 
     | 
    
         
            +
             
     | 
| 
      
 262 
     | 
    
         
            +
              end
         
     | 
| 
      
 263 
     | 
    
         
            +
             
     | 
| 
       27 
264 
     | 
    
         
             
            end
         
     | 
| 
       28 
265 
     | 
    
         | 
| 
       29 
266 
     | 
    
         
             
            # Instructor's view of Students' assessment scores
         
     | 
| 
       30 
267 
     | 
    
         
             
            class AssessmentTotalScores
         
     | 
| 
       31 
268 
     | 
    
         
             
              include PageObject
         
     | 
| 
       32 
269 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
      
 270 
     | 
    
         
            +
             
     | 
| 
      
 271 
     | 
    
         
            +
              # Gets the user ids listed in the
         
     | 
| 
      
 272 
     | 
    
         
            +
              # scores table, returns them as an Array
         
     | 
| 
      
 273 
     | 
    
         
            +
              # object.
         
     | 
| 
      
 274 
     | 
    
         
            +
              #
         
     | 
| 
      
 275 
     | 
    
         
            +
              # Note that this method is only appropriate when student
         
     | 
| 
      
 276 
     | 
    
         
            +
              # identities are not being obscured on this page. If student
         
     | 
| 
      
 277 
     | 
    
         
            +
              # submissions are set to be anonymous then this method will fail
         
     | 
| 
      
 278 
     | 
    
         
            +
              # to return any ids.
         
     | 
| 
      
 279 
     | 
    
         
            +
              def student_ids
         
     | 
| 
      
 280 
     | 
    
         
            +
                ids = []
         
     | 
| 
      
 281 
     | 
    
         
            +
                scores_table = frm.table(:id=>"editTotalResults:totalScoreTable").to_a
         
     | 
| 
      
 282 
     | 
    
         
            +
                scores_table.delete_at(0)
         
     | 
| 
      
 283 
     | 
    
         
            +
                scores_table.each { |row| ids << row[1] }
         
     | 
| 
      
 284 
     | 
    
         
            +
                return ids
         
     | 
| 
      
 285 
     | 
    
         
            +
              end
         
     | 
| 
      
 286 
     | 
    
         
            +
             
     | 
| 
      
 287 
     | 
    
         
            +
              # Adds a comment to the specified student's comment box.
         
     | 
| 
      
 288 
     | 
    
         
            +
              #
         
     | 
| 
      
 289 
     | 
    
         
            +
              # Note that this method assumes that the student identities are not being
         
     | 
| 
      
 290 
     | 
    
         
            +
              # obscured on this page. If they are, then this method will not work for
         
     | 
| 
      
 291 
     | 
    
         
            +
              # selecting the appropriate comment box.
         
     | 
| 
      
 292 
     | 
    
         
            +
              # @param student_id [String] the target student id
         
     | 
| 
      
 293 
     | 
    
         
            +
              # @param comment [String] the text of the comment being made to the student
         
     | 
| 
      
 294 
     | 
    
         
            +
              def comment_for_student(student_id, comment)
         
     | 
| 
      
 295 
     | 
    
         
            +
                index_val = student_ids.index(student_id)
         
     | 
| 
      
 296 
     | 
    
         
            +
                frm.text_field(:name=>"editTotalResults:totalScoreTable:#{index_val}:_id345").value=comment
         
     | 
| 
      
 297 
     | 
    
         
            +
              end
         
     | 
| 
      
 298 
     | 
    
         
            +
             
     | 
| 
      
 299 
     | 
    
         
            +
              # Clicks the Submit Date link in the table header to sort/reverse sort the list.
         
     | 
| 
      
 300 
     | 
    
         
            +
              def sort_by_submit_date
         
     | 
| 
      
 301 
     | 
    
         
            +
                frm.link(:text=>"Submit Date").click
         
     | 
| 
      
 302 
     | 
    
         
            +
              end
         
     | 
| 
      
 303 
     | 
    
         
            +
             
     | 
| 
      
 304 
     | 
    
         
            +
              # Enters the specified string into the topmost box listed on the page.
         
     | 
| 
      
 305 
     | 
    
         
            +
              #
         
     | 
| 
      
 306 
     | 
    
         
            +
              # This method is especially useful when the student identities are obscured, since
         
     | 
| 
      
 307 
     | 
    
         
            +
              # in that situation you can't target a specific student's comment box, obviously.
         
     | 
| 
      
 308 
     | 
    
         
            +
              # @param comment [String] the text to be entered into the Comment box
         
     | 
| 
      
 309 
     | 
    
         
            +
              def comment_in_first_box=(comment)
         
     | 
| 
      
 310 
     | 
    
         
            +
                frm.text_field(:name=>"editTotalResults:totalScoreTable:0:_id345").value=comment
         
     | 
| 
      
 311 
     | 
    
         
            +
              end
         
     | 
| 
      
 312 
     | 
    
         
            +
             
     | 
| 
      
 313 
     | 
    
         
            +
              # Clicks the Update button, then instantiates
         
     | 
| 
      
 314 
     | 
    
         
            +
              # the AssessmentTotalScores class.
         
     | 
| 
      
 315 
     | 
    
         
            +
              def update
         
     | 
| 
      
 316 
     | 
    
         
            +
                frm.button(:value=>"Update").click
         
     | 
| 
      
 317 
     | 
    
         
            +
                AssessmentTotalScores.new(@browser)
         
     | 
| 
      
 318 
     | 
    
         
            +
              end
         
     | 
| 
      
 319 
     | 
    
         
            +
             
     | 
| 
      
 320 
     | 
    
         
            +
              # Clicks the Assessments link on the page
         
     | 
| 
      
 321 
     | 
    
         
            +
              # then instantiates the AssessmentsList class.
         
     | 
| 
      
 322 
     | 
    
         
            +
              def assessments
         
     | 
| 
      
 323 
     | 
    
         
            +
                frm.link(:text=>"Assessments").click
         
     | 
| 
      
 324 
     | 
    
         
            +
                AssessmentsList.new(@browser)
         
     | 
| 
      
 325 
     | 
    
         
            +
              end
         
     | 
| 
      
 326 
     | 
    
         
            +
             
     | 
| 
       34 
327 
     | 
    
         
             
            end
         
     | 
| 
       35 
328 
     | 
    
         | 
| 
       36 
329 
     | 
    
         
             
            # The page that appears when you're creating a new quiz
         
     | 
| 
         @@ -38,14 +331,176 @@ end 
     | 
|
| 
       38 
331 
     | 
    
         
             
            class EditAssessment
         
     | 
| 
       39 
332 
     | 
    
         
             
              include PageObject
         
     | 
| 
       40 
333 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
      
 334 
     | 
    
         
            +
             
     | 
| 
      
 335 
     | 
    
         
            +
              # Allows insertion of a question at a specified
         
     | 
| 
      
 336 
     | 
    
         
            +
              # point in the Assessment. Must include the
         
     | 
| 
      
 337 
     | 
    
         
            +
              # part number, the question number, and the type of
         
     | 
| 
      
 338 
     | 
    
         
            +
              # question. Question Type must match the Type
         
     | 
| 
      
 339 
     | 
    
         
            +
              # value in the drop down.
         
     | 
| 
      
 340 
     | 
    
         
            +
              #
         
     | 
| 
      
 341 
     | 
    
         
            +
              # The method will instantiate the page class
         
     | 
| 
      
 342 
     | 
    
         
            +
              # based on the selected question type.
         
     | 
| 
      
 343 
     | 
    
         
            +
              def insert_question_after(part_num, question_num, qtype)
         
     | 
| 
      
 344 
     | 
    
         
            +
                if question_num.to_i == 0
         
     | 
| 
      
 345 
     | 
    
         
            +
                  frm.select(:id=>"assesssmentForm:parts:#{part_num.to_i - 1}:changeQType").select(qtype)
         
     | 
| 
      
 346 
     | 
    
         
            +
                else
         
     | 
| 
      
 347 
     | 
    
         
            +
                  frm.select(:id=>"assesssmentForm:parts:#{part_num.to_i - 1}:parts:#{question_num.to_i - 1}:changeQType").select(qtype)
         
     | 
| 
      
 348 
     | 
    
         
            +
                end
         
     | 
| 
      
 349 
     | 
    
         
            +
             
     | 
| 
      
 350 
     | 
    
         
            +
                page = case(qtype)
         
     | 
| 
      
 351 
     | 
    
         
            +
                         when "Multiple Choice" then MultipleChoice.new(@browser)
         
     | 
| 
      
 352 
     | 
    
         
            +
                         when "True False" then TrueFalse.new(@browser)
         
     | 
| 
      
 353 
     | 
    
         
            +
                         when "Survey" then Survey.new(@browser)
         
     | 
| 
      
 354 
     | 
    
         
            +
                         when "Short Answer/Essay" then ShortAnswer.new(@browser)
         
     | 
| 
      
 355 
     | 
    
         
            +
                         when "Fill in the Blank" then FillInBlank.new(@browser)
         
     | 
| 
      
 356 
     | 
    
         
            +
                         when "Numeric Response" then NumericResponse.new(@browser)
         
     | 
| 
      
 357 
     | 
    
         
            +
                         when "Matching" then Matching.new(@browser)
         
     | 
| 
      
 358 
     | 
    
         
            +
                         when "Audio Recording" then AudioRecording.new(@browser)
         
     | 
| 
      
 359 
     | 
    
         
            +
                         when "File Upload" then FileUpload.new(@browser)
         
     | 
| 
      
 360 
     | 
    
         
            +
                         else puts "#{qtype} is not a valid question type"
         
     | 
| 
      
 361 
     | 
    
         
            +
                       end
         
     | 
| 
      
 362 
     | 
    
         
            +
             
     | 
| 
      
 363 
     | 
    
         
            +
                return page
         
     | 
| 
      
 364 
     | 
    
         
            +
             
     | 
| 
      
 365 
     | 
    
         
            +
              end
         
     | 
| 
      
 366 
     | 
    
         
            +
             
     | 
| 
      
 367 
     | 
    
         
            +
              # Allows removal of question by part number and question number.
         
     | 
| 
      
 368 
     | 
    
         
            +
              # @param part_num [String] the Part number containing the question you want to remove
         
     | 
| 
      
 369 
     | 
    
         
            +
              # @param question_num [String] the number of the question you want to remove
         
     | 
| 
      
 370 
     | 
    
         
            +
              def remove_question(part_num, question_num)
         
     | 
| 
      
 371 
     | 
    
         
            +
                frm.link(:id=>"assesssmentForm:parts:#{part_num.to_i-1}:parts:#{question_num.to_i-1}:deleteitem").click
         
     | 
| 
      
 372 
     | 
    
         
            +
              end
         
     | 
| 
      
 373 
     | 
    
         
            +
             
     | 
| 
      
 374 
     | 
    
         
            +
              # Allows editing of a question by specifying its part number
         
     | 
| 
      
 375 
     | 
    
         
            +
              # and question number.
         
     | 
| 
      
 376 
     | 
    
         
            +
              # @param part_num [String] the Part number containing the question you want
         
     | 
| 
      
 377 
     | 
    
         
            +
              # @param question_num [String] the number of the question you want
         
     | 
| 
      
 378 
     | 
    
         
            +
              def edit_question(part_num, question_num)
         
     | 
| 
      
 379 
     | 
    
         
            +
                frm.link(:id=>"assesssmentForm:parts:#{part_num.to_i-1}:parts:#{question_num.to_i-1}:modify").click
         
     | 
| 
      
 380 
     | 
    
         
            +
              end
         
     | 
| 
      
 381 
     | 
    
         
            +
             
     | 
| 
      
 382 
     | 
    
         
            +
              # Allows copying an Assessment part to a Pool.
         
     | 
| 
      
 383 
     | 
    
         
            +
              # @param part_num [String] the part number of the assessment you want
         
     | 
| 
      
 384 
     | 
    
         
            +
              def copy_part_to_pool(part_num)
         
     | 
| 
      
 385 
     | 
    
         
            +
                frm.link(:id=>"assesssmentForm:parts:#{part_num.to_i-1}:copyToPool").click
         
     | 
| 
      
 386 
     | 
    
         
            +
              end
         
     | 
| 
      
 387 
     | 
    
         
            +
             
     | 
| 
      
 388 
     | 
    
         
            +
              # Allows removing a specified
         
     | 
| 
      
 389 
     | 
    
         
            +
              # Assessment part number.
         
     | 
| 
      
 390 
     | 
    
         
            +
              # @param part_num [String] the part number of the assessment you want
         
     | 
| 
      
 391 
     | 
    
         
            +
              def remove_part(part_num)
         
     | 
| 
      
 392 
     | 
    
         
            +
                frm.link(:xpath, "//a[contains(@onclick, 'assesssmentForm:parts:#{part_num.to_i-1}:copyToPool')]").click
         
     | 
| 
      
 393 
     | 
    
         
            +
              end
         
     | 
| 
      
 394 
     | 
    
         
            +
             
     | 
| 
      
 395 
     | 
    
         
            +
              # Clicks the Add Part button, then
         
     | 
| 
      
 396 
     | 
    
         
            +
              # instantiates the AddEditAssessmentPart page class.
         
     | 
| 
      
 397 
     | 
    
         
            +
              def add_part
         
     | 
| 
      
 398 
     | 
    
         
            +
                frm.link(:text=>"Add Part").click
         
     | 
| 
      
 399 
     | 
    
         
            +
                AddEditAssessmentPart.new(@browser)
         
     | 
| 
      
 400 
     | 
    
         
            +
              end
         
     | 
| 
      
 401 
     | 
    
         
            +
             
     | 
| 
      
 402 
     | 
    
         
            +
              # Selects the desired question type from the
         
     | 
| 
      
 403 
     | 
    
         
            +
              # drop down list, then instantiates the appropriate
         
     | 
| 
      
 404 
     | 
    
         
            +
              # page class.
         
     | 
| 
      
 405 
     | 
    
         
            +
              # @param qtype [String] the text of the item you want to select from the list
         
     | 
| 
      
 406 
     | 
    
         
            +
              def select_question_type(qtype)
         
     | 
| 
      
 407 
     | 
    
         
            +
                frm.select(:id=>"assesssmentForm:changeQType").select(qtype)
         
     | 
| 
      
 408 
     | 
    
         
            +
             
     | 
| 
      
 409 
     | 
    
         
            +
                page = case(qtype)
         
     | 
| 
      
 410 
     | 
    
         
            +
                         when "Multiple Choice" then MultipleChoice.new(@browser)
         
     | 
| 
      
 411 
     | 
    
         
            +
                         when "True False" then TrueFalse.new(@browser)
         
     | 
| 
      
 412 
     | 
    
         
            +
                         when "Survey" then Survey.new(@browser)
         
     | 
| 
      
 413 
     | 
    
         
            +
                         when "Short Answer/Essay" then ShortAnswer.new(@browser)
         
     | 
| 
      
 414 
     | 
    
         
            +
                         when "Fill in the Blank" then FillInBlank.new(@browser)
         
     | 
| 
      
 415 
     | 
    
         
            +
                         when "Numeric Response" then NumericResponse.new(@browser)
         
     | 
| 
      
 416 
     | 
    
         
            +
                         when "Matching" then Matching.new(@browser)
         
     | 
| 
      
 417 
     | 
    
         
            +
                         when "Audio Recording" then AudioRecording.new(@browser)
         
     | 
| 
      
 418 
     | 
    
         
            +
                         when "File Upload" then FileUpload.new(@browser)
         
     | 
| 
      
 419 
     | 
    
         
            +
                         else puts "#{qtype} is not a valid question type"
         
     | 
| 
      
 420 
     | 
    
         
            +
                       end
         
     | 
| 
      
 421 
     | 
    
         
            +
             
     | 
| 
      
 422 
     | 
    
         
            +
                return page
         
     | 
| 
      
 423 
     | 
    
         
            +
             
     | 
| 
      
 424 
     | 
    
         
            +
              end
         
     | 
| 
      
 425 
     | 
    
         
            +
             
     | 
| 
      
 426 
     | 
    
         
            +
              # Clicks the Preview button,
         
     | 
| 
      
 427 
     | 
    
         
            +
              # then instantiates the PreviewOverview page class.
         
     | 
| 
      
 428 
     | 
    
         
            +
              def preview
         
     | 
| 
      
 429 
     | 
    
         
            +
                frm.link(:text=>"Preview").click
         
     | 
| 
      
 430 
     | 
    
         
            +
                PreviewOverview.new(@browser)
         
     | 
| 
      
 431 
     | 
    
         
            +
              end
         
     | 
| 
      
 432 
     | 
    
         
            +
             
     | 
| 
      
 433 
     | 
    
         
            +
              # Clicks the Settings link, then
         
     | 
| 
      
 434 
     | 
    
         
            +
              # instantiates the AssessmentSettings page class.
         
     | 
| 
      
 435 
     | 
    
         
            +
              def settings
         
     | 
| 
      
 436 
     | 
    
         
            +
                frm.link(:text=>"Settings").click
         
     | 
| 
      
 437 
     | 
    
         
            +
                AssessmentSettings.new(@browser)
         
     | 
| 
      
 438 
     | 
    
         
            +
              end
         
     | 
| 
      
 439 
     | 
    
         
            +
             
     | 
| 
      
 440 
     | 
    
         
            +
              # Clicks the Publish button, then
         
     | 
| 
      
 441 
     | 
    
         
            +
              # instantiates the PublishAssessment page class.
         
     | 
| 
      
 442 
     | 
    
         
            +
              def publish
         
     | 
| 
      
 443 
     | 
    
         
            +
                frm.link(:text=>"Publish").click
         
     | 
| 
      
 444 
     | 
    
         
            +
                PublishAssessment.new(@browser)
         
     | 
| 
      
 445 
     | 
    
         
            +
              end
         
     | 
| 
      
 446 
     | 
    
         
            +
             
     | 
| 
      
 447 
     | 
    
         
            +
              # Clicks the Question Pools button, then
         
     | 
| 
      
 448 
     | 
    
         
            +
              # instantiates the QuestionPoolsList page class.
         
     | 
| 
      
 449 
     | 
    
         
            +
              def question_pools
         
     | 
| 
      
 450 
     | 
    
         
            +
                frm.link(:text=>"Question Pools").click
         
     | 
| 
      
 451 
     | 
    
         
            +
                QuestionPoolsList.new(@browser)
         
     | 
| 
      
 452 
     | 
    
         
            +
              end
         
     | 
| 
      
 453 
     | 
    
         
            +
             
     | 
| 
      
 454 
     | 
    
         
            +
              # Allows retrieval of a specified question's
         
     | 
| 
      
 455 
     | 
    
         
            +
              # text, by part and question number.
         
     | 
| 
      
 456 
     | 
    
         
            +
              # @param part_num [String] the Part number containing the question you want
         
     | 
| 
      
 457 
     | 
    
         
            +
              # @param question_num [String] the number of the question you want
         
     | 
| 
      
 458 
     | 
    
         
            +
              def get_question_text(part_number, question_number)
         
     | 
| 
      
 459 
     | 
    
         
            +
                frm.table(:id=>"assesssmentForm:parts:#{part_number.to_i-1}:parts").div(:class=>"tier3", :index=>question_number.to_i-1).text
         
     | 
| 
      
 460 
     | 
    
         
            +
              end
         
     | 
| 
      
 461 
     | 
    
         
            +
             
     | 
| 
      
 462 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 463 
     | 
    
         
            +
                link(:assessments, :text=>"Assessments", :frame=>frame)
         
     | 
| 
      
 464 
     | 
    
         
            +
                link(:assessment_types, :text=>"Assessment Types", :frame=>frame)
         
     | 
| 
      
 465 
     | 
    
         
            +
                link(:print, :text=>"Print", :frame=>frame)
         
     | 
| 
      
 466 
     | 
    
         
            +
                button(:update_points, :id=>"assesssmentForm:pointsUpdate", :frame=>frame)
         
     | 
| 
      
 467 
     | 
    
         
            +
             
     | 
| 
      
 468 
     | 
    
         
            +
              end
         
     | 
| 
      
 469 
     | 
    
         
            +
             
     | 
| 
       42 
470 
     | 
    
         
             
            end
         
     | 
| 
       43 
471 
     | 
    
         | 
| 
       44 
472 
     | 
    
         
             
            # This is the page for adding and editing a part of an assessment
         
     | 
| 
       45 
473 
     | 
    
         
             
            class AddEditAssessmentPart
         
     | 
| 
       46 
474 
     | 
    
         
             
              include PageObject
         
     | 
| 
       47 
475 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
      
 476 
     | 
    
         
            +
             
     | 
| 
      
 477 
     | 
    
         
            +
              # Clicks the Save button, then instantiates
         
     | 
| 
      
 478 
     | 
    
         
            +
              # the EditAssessment page class.
         
     | 
| 
      
 479 
     | 
    
         
            +
              def save
         
     | 
| 
      
 480 
     | 
    
         
            +
                frm.button(:name=>"modifyPartForm:_id89").click
         
     | 
| 
      
 481 
     | 
    
         
            +
                EditAssessment.new(@browser)
         
     | 
| 
      
 482 
     | 
    
         
            +
              end
         
     | 
| 
      
 483 
     | 
    
         
            +
             
     | 
| 
      
 484 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 485 
     | 
    
         
            +
                text_field(:title, :id=>"modifyPartForm:title", :frame=>frame)
         
     | 
| 
      
 486 
     | 
    
         
            +
                text_area(:information, :id=>"modifyPartForm:_id10_textinput", :frame=>frame)
         
     | 
| 
      
 487 
     | 
    
         
            +
                button(:add_attachments, :name=>"modifyPartForm:_id54", :frame=>frame)
         
     | 
| 
      
 488 
     | 
    
         
            +
                radio_button(:questions_one_by_one) { |page| page.radio_button_element(:index=>0, :name=>"modifyPartForm:_id60", :frame=>frame)}
         
     | 
| 
      
 489 
     | 
    
         
            +
                radio_button(:random_draw) { |page| page.radio_button_element(:index=>1, :name=>"modifyPartForm:_id60", :frame=>frame) }
         
     | 
| 
      
 490 
     | 
    
         
            +
                select_list(:pool_name, :id=>"modifyPartForm:assignToPool", :frame=>frame)
         
     | 
| 
      
 491 
     | 
    
         
            +
                text_field(:number_of_questions, :id=>"modifyPartForm:numSelected", :frame=>frame)
         
     | 
| 
      
 492 
     | 
    
         
            +
                text_field(:point_value_of_questions, :id=>"modifyPartForm:numPointsRandom", :frame=>frame)
         
     | 
| 
      
 493 
     | 
    
         
            +
                text_field(:negative_point_value, :id=>"modifyPartForm:numDiscountRandom", :frame=>frame)
         
     | 
| 
      
 494 
     | 
    
         
            +
                radio_button(:randomized_each_time) { |page| page.radio_button_element(:index=>0, :name=>"modifyPartForm:randomizationType", :frame=>frame) }
         
     | 
| 
      
 495 
     | 
    
         
            +
                radio_button(:randomized_once) { |page| page.radio_button_element(:index=>1, :name=>"modifyPartForm:randomizationType", :frame=>frame) }
         
     | 
| 
      
 496 
     | 
    
         
            +
                radio_button(:order_as_listed) { |page| page.radio_button_element(:index=>0, :name=>"modifyPartForm:_id81", :frame=>frame) }
         
     | 
| 
      
 497 
     | 
    
         
            +
                radio_button(:random_within_part) { |page| page.radio_button_element(:index=>1, :name=>"modifyPartForm:_id81", :frame=>frame) }
         
     | 
| 
      
 498 
     | 
    
         
            +
                text_field(:objective, :id=>"modifyPartForm:obj", :frame=>frame)
         
     | 
| 
      
 499 
     | 
    
         
            +
                text_field(:keyword, :id=>"modifyPartForm:keyword", :frame=>frame)
         
     | 
| 
      
 500 
     | 
    
         
            +
                text_field(:rubric, :id=>"modifyPartForm:rubric", :frame=>frame)
         
     | 
| 
      
 501 
     | 
    
         
            +
                button(:cancel, :name=>"modifyPartForm:_id90", :frame=>frame)
         
     | 
| 
      
 502 
     | 
    
         
            +
              end
         
     | 
| 
      
 503 
     | 
    
         
            +
             
     | 
| 
       49 
504 
     | 
    
         
             
            end
         
     | 
| 
       50 
505 
     | 
    
         | 
| 
       51 
506 
     | 
    
         
             
            # The review page once you've selected to Save and Publish
         
     | 
| 
         @@ -53,63 +508,229 @@ end 
     | 
|
| 
       53 
508 
     | 
    
         
             
            class PublishAssessment
         
     | 
| 
       54 
509 
     | 
    
         
             
              include PageObject
         
     | 
| 
       55 
510 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
      
 511 
     | 
    
         
            +
             
     | 
| 
      
 512 
     | 
    
         
            +
              # Clicks the Publish button, then
         
     | 
| 
      
 513 
     | 
    
         
            +
              # instantiates the AssessmentsList page class.
         
     | 
| 
      
 514 
     | 
    
         
            +
              def publish
         
     | 
| 
      
 515 
     | 
    
         
            +
                frm.button(:value=>"Publish").click
         
     | 
| 
      
 516 
     | 
    
         
            +
                AssessmentsList.new(@browser)
         
     | 
| 
      
 517 
     | 
    
         
            +
              end
         
     | 
| 
      
 518 
     | 
    
         
            +
             
     | 
| 
      
 519 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 520 
     | 
    
         
            +
                button(:cancel, :value=>"Cancel", :frame=>frame)
         
     | 
| 
      
 521 
     | 
    
         
            +
                button(:edit, :name=>"publishAssessmentForm:_id23", :frame=>frame)
         
     | 
| 
      
 522 
     | 
    
         
            +
                select_list(:notification, :id=>"publishAssessmentForm:number", :frame=>frame)
         
     | 
| 
      
 523 
     | 
    
         
            +
             
     | 
| 
      
 524 
     | 
    
         
            +
              end
         
     | 
| 
      
 525 
     | 
    
         
            +
             
     | 
| 
       57 
526 
     | 
    
         
             
            end
         
     | 
| 
       58 
527 
     | 
    
         | 
| 
       59 
528 
     | 
    
         
             
            # The page for setting up a multiple choice question
         
     | 
| 
       60 
529 
     | 
    
         
             
            class MultipleChoice
         
     | 
| 
       61 
530 
     | 
    
         
             
              include PageObject
         
     | 
| 
       62 
531 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       63 
     | 
    
         
            -
              include  
     | 
| 
      
 532 
     | 
    
         
            +
              include QuestionHelpers
         
     | 
| 
      
 533 
     | 
    
         
            +
             
     | 
| 
      
 534 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 535 
     | 
    
         
            +
                button(:cancel, :value=>"Cancel", :frame=>frame)
         
     | 
| 
      
 536 
     | 
    
         
            +
                text_field(:answer_point_value, :id=>"itemForm:answerptr", :frame=>frame)
         
     | 
| 
      
 537 
     | 
    
         
            +
                link(:whats_this, :text=>"(What's This?)", :frame=>frame)
         
     | 
| 
      
 538 
     | 
    
         
            +
                radio_button(:single_correct) { |page| page.radio_button_element(:name=>"itemForm:chooseAnswerTypeForMC", :index=>0, :frame=>frame) }
         
     | 
| 
      
 539 
     | 
    
         
            +
                radio_button(:enable_negative_marking) { |page| page.radio_button_element(:name=>"itemForm:partialCreadit_NegativeMarking", :index=>0, :frame=>frame) }
         
     | 
| 
      
 540 
     | 
    
         
            +
             
     | 
| 
      
 541 
     | 
    
         
            +
                # Element present when negative marking selected:
         
     | 
| 
      
 542 
     | 
    
         
            +
                text_field(:negative_point_value, :id=>"itemForm:answerdsc", :frame=>frame)
         
     | 
| 
      
 543 
     | 
    
         
            +
             
     | 
| 
      
 544 
     | 
    
         
            +
                radio_button(:enable_partial_credit) { |page| page.radio_button_element(:name=>"itemForm:partialCreadit_NegativeMarking", :index=>1, :frame=>frame) }
         
     | 
| 
      
 545 
     | 
    
         
            +
                link(:reset_to_default, :text=>"Reset to Default Grading Logic", :frame=>frame)
         
     | 
| 
      
 546 
     | 
    
         
            +
                radio_button(:multi_single) {|page| page.radio_button_element(:name=>"itemForm:chooseAnswerTypeForMC", :index=>1, :frame=>frame) }
         
     | 
| 
      
 547 
     | 
    
         
            +
                radio_button(:multi_multi) {|page| page.radio_button_element(:name=>"itemForm:chooseAnswerTypeForMC", :index=>2, :frame=>frame) }
         
     | 
| 
      
 548 
     | 
    
         
            +
                text_area(:question_text, :id=>"itemForm:_id82_textinput", :frame=>frame)
         
     | 
| 
      
 549 
     | 
    
         
            +
                button(:add_attachments, :name=>"itemForm:_id126", :frame=>frame)
         
     | 
| 
      
 550 
     | 
    
         
            +
             
     | 
| 
      
 551 
     | 
    
         
            +
                text_area(:answer_a, :id=>"itemForm:mcchoices:0:_id140_textinput", :frame=>frame)
         
     | 
| 
      
 552 
     | 
    
         
            +
                link(:remove_a, :id=>"itemForm:mcchoices:0:removelinkSingle", :frame=>frame)
         
     | 
| 
      
 553 
     | 
    
         
            +
                text_area(:answer_b, :id=>"itemForm:mcchoices:1:_id140_textinput", :frame=>frame)
         
     | 
| 
      
 554 
     | 
    
         
            +
                link(:remove_b, :id=>"itemForm:mcchoices:1:removelinkSingle", :frame=>frame)
         
     | 
| 
      
 555 
     | 
    
         
            +
                text_area(:answer_c, :id=>"itemForm:mcchoices:2:_id140_textinput", :frame=>frame)
         
     | 
| 
      
 556 
     | 
    
         
            +
                link(:remove_c, :id=>"itemForm:mcchoices:2:removelinkSingle", :frame=>frame)
         
     | 
| 
      
 557 
     | 
    
         
            +
                text_area(:answer_d, :id=>"itemForm:mcchoices:3:_id140_textinput", :frame=>frame)
         
     | 
| 
      
 558 
     | 
    
         
            +
                link(:remove_d, :id=>"itemForm:mcchoices:3:removelinkSingle", :frame=>frame)
         
     | 
| 
      
 559 
     | 
    
         
            +
             
     | 
| 
      
 560 
     | 
    
         
            +
                # Radio buttons that appear when "single correct" is selected
         
     | 
| 
      
 561 
     | 
    
         
            +
                radio_button(:a_correct, :name=>"itemForm:mcchoices:0:mcradiobtn", :frame=>frame)
         
     | 
| 
      
 562 
     | 
    
         
            +
                radio_button(:b_correct, :name=>"itemForm:mcchoices:1:mcradiobtn", :frame=>frame)
         
     | 
| 
      
 563 
     | 
    
         
            +
                radio_button(:c_correct, :name=>"itemForm:mcchoices:2:mcradiobtn", :frame=>frame)
         
     | 
| 
      
 564 
     | 
    
         
            +
                radio_button(:d_correct, :name=>"itemForm:mcchoices:3:mcradiobtn", :frame=>frame)
         
     | 
| 
      
 565 
     | 
    
         
            +
             
     | 
| 
      
 566 
     | 
    
         
            +
                # % Value fields that appear when "single correct" and "partial credit" selected
         
     | 
| 
      
 567 
     | 
    
         
            +
                text_field(:a_value, :id=>"itemForm:mcchoices:0:partialCredit", :frame=>frame)
         
     | 
| 
      
 568 
     | 
    
         
            +
                text_field(:b_value, :id=>"itemForm:mcchoices:1:partialCredit", :frame=>frame)
         
     | 
| 
      
 569 
     | 
    
         
            +
                text_field(:c_value, :id=>"itemForm:mcchoices:2:partialCredit", :frame=>frame)
         
     | 
| 
      
 570 
     | 
    
         
            +
                text_field(:d_value, :id=>"itemForm:mcchoices:3:partialCredit", :frame=>frame)
         
     | 
| 
      
 571 
     | 
    
         
            +
             
     | 
| 
      
 572 
     | 
    
         
            +
                link(:reset_score_values, :text=>"Reset Score Values", :frame=>frame)
         
     | 
| 
      
 573 
     | 
    
         
            +
             
     | 
| 
      
 574 
     | 
    
         
            +
                # Checkboxes that appear when "multiple correct" is selected
         
     | 
| 
      
 575 
     | 
    
         
            +
                checkbox(:a_correct, :name=>"itemForm:mcchoices:0:mccheckboxes", :frame=>frame)
         
     | 
| 
      
 576 
     | 
    
         
            +
                checkbox(:b_correct, :name=>"itemForm:mcchoices:1:mccheckboxes", :frame=>frame)
         
     | 
| 
      
 577 
     | 
    
         
            +
                checkbox(:c_correct, :name=>"itemForm:mcchoices:2:mccheckboxes", :frame=>frame)
         
     | 
| 
      
 578 
     | 
    
         
            +
                checkbox(:d_correct, :name=>"itemForm:mcchoices:3:mccheckboxes", :frame=>frame)
         
     | 
| 
      
 579 
     | 
    
         
            +
             
     | 
| 
      
 580 
     | 
    
         
            +
                select_list(:insert_additional_answers, :id=>"itemForm:insertAdditionalAnswerSelectMenu", :frame=>frame)
         
     | 
| 
      
 581 
     | 
    
         
            +
                radio_button(:randomize_answers_yes) {|page| page.radio_button_element(:index=>0, :name=>"itemForm:_id162", :frame=>frame) }
         
     | 
| 
      
 582 
     | 
    
         
            +
                radio_button(:randomize_answers_no) {|page| page.radio_button_element(:index=>1, :name=>"itemForm:_id162", :frame=>frame) }
         
     | 
| 
      
 583 
     | 
    
         
            +
                radio_button(:require_rationale_yes) {|page| page.radio_button_element(:index=>0, :name=>"itemForm:_id166", :frame=>frame) }
         
     | 
| 
      
 584 
     | 
    
         
            +
                radio_button(:require_rationale_no) {|page| page.radio_button_element(:index=>1, :name=>"itemForm:_id166", :frame=>frame) }
         
     | 
| 
      
 585 
     | 
    
         
            +
                select_list(:assign_to_part, :id=>"itemForm:assignToPart", :frame=>frame)
         
     | 
| 
      
 586 
     | 
    
         
            +
                select_list(:assign_to_pool, :id=>"itemForm:assignToPool", :frame=>frame)
         
     | 
| 
      
 587 
     | 
    
         
            +
             
     | 
| 
      
 588 
     | 
    
         
            +
              end
         
     | 
| 
      
 589 
     | 
    
         
            +
             
     | 
| 
       64 
590 
     | 
    
         
             
            end
         
     | 
| 
       65 
591 
     | 
    
         | 
| 
       66 
592 
     | 
    
         
             
            # The page for setting up a Survey question
         
     | 
| 
       67 
593 
     | 
    
         
             
            class Survey
         
     | 
| 
       68 
594 
     | 
    
         
             
              include PageObject
         
     | 
| 
       69 
595 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       70 
     | 
    
         
            -
              include  
     | 
| 
      
 596 
     | 
    
         
            +
              include QuestionHelpers
         
     | 
| 
      
 597 
     | 
    
         
            +
             
     | 
| 
      
 598 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 599 
     | 
    
         
            +
                button(:cancel, :id=>"itemForm:_id63", :frame=>frame)
         
     | 
| 
      
 600 
     | 
    
         
            +
                text_area(:question_text, :id=>"itemForm:_id69_textinput", :frame=>frame)
         
     | 
| 
      
 601 
     | 
    
         
            +
                button(:add_attachments, :id=>"itemForm:_id113", :frame=>frame)
         
     | 
| 
      
 602 
     | 
    
         
            +
                radio_button(:yes_no) { |page| page.radio_button_element(:index=>0, :name=>"itemForm:selectscale", :frame=>frame) }
         
     | 
| 
      
 603 
     | 
    
         
            +
                radio_button(:disagree_agree) {|page| page.radio_button_element(:index=>1, :name=>"itemForm:selectscale", :frame=>frame) }
         
     | 
| 
      
 604 
     | 
    
         
            +
                radio_button(:disagree_undecided) {|page| page.radio_button_element(:index=>2, :name=>"itemForm:selectscale", :frame=>frame) }
         
     | 
| 
      
 605 
     | 
    
         
            +
                radio_button(:below_above) {|page| page.radio_button_element(:index=>3, :name=>"itemForm:selectscale", :frame=>frame)}
         
     | 
| 
      
 606 
     | 
    
         
            +
                radio_button(:strongly_agree) {|page| page.radio_button_element(:index=>4, :name=>"itemForm:selectscale", :frame=>frame)}
         
     | 
| 
      
 607 
     | 
    
         
            +
                radio_button(:unacceptable_excellent) {|page| page.radio_button_element(:index=>5, :name=>"itemForm:selectscale", :frame=>frame)}
         
     | 
| 
      
 608 
     | 
    
         
            +
                radio_button(:one_to_five) {|page| page.radio_button_element(:index=>6, :name=>"itemForm:selectscale", :frame=>frame)}
         
     | 
| 
      
 609 
     | 
    
         
            +
                radio_button(:one_to_ten) {|page| page.radio_button_element(:index=>7, :name=>"itemForm:selectscale", :frame=>frame)}
         
     | 
| 
      
 610 
     | 
    
         
            +
                select_list(:assign_to_part, :id=>"itemForm:assignToPart", :frame=>frame)
         
     | 
| 
      
 611 
     | 
    
         
            +
                select_list(:assign_to_pool, :id=>"itemForm:assignToPool", :frame=>frame)
         
     | 
| 
      
 612 
     | 
    
         
            +
              end
         
     | 
| 
      
 613 
     | 
    
         
            +
             
     | 
| 
       71 
614 
     | 
    
         
             
            end
         
     | 
| 
       72 
615 
     | 
    
         | 
| 
       73 
616 
     | 
    
         
             
            #  The page for setting up a Short Answer/Essay question
         
     | 
| 
       74 
617 
     | 
    
         
             
            class ShortAnswer
         
     | 
| 
       75 
618 
     | 
    
         
             
              include PageObject
         
     | 
| 
       76 
619 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       77 
     | 
    
         
            -
              include  
     | 
| 
      
 620 
     | 
    
         
            +
              include QuestionHelpers
         
     | 
| 
      
 621 
     | 
    
         
            +
             
     | 
| 
      
 622 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 623 
     | 
    
         
            +
                button(:cancel, :id=>"itemForm:_id63", :frame=>frame)
         
     | 
| 
      
 624 
     | 
    
         
            +
                text_field(:answer_point_value, :id=>"itemForm:answerptr", :frame=>frame)
         
     | 
| 
      
 625 
     | 
    
         
            +
                text_area(:question_text, :id=>"itemForm:_id69_textinput", :frame=>frame)
         
     | 
| 
      
 626 
     | 
    
         
            +
                button(:add_attachments, :id=>"itemForm:_id113", :frame=>frame)
         
     | 
| 
      
 627 
     | 
    
         
            +
                text_area(:model_short_answer, :id=>"itemForm:_id129_textinput", :frame=>frame)
         
     | 
| 
      
 628 
     | 
    
         
            +
                select_list(:assign_to_part, :id=>"itemForm:assignToPart", :frame=>frame)
         
     | 
| 
      
 629 
     | 
    
         
            +
                select_list(:assign_to_pool, :id=>"itemForm:assignToPool", :frame=>frame)
         
     | 
| 
      
 630 
     | 
    
         
            +
              end
         
     | 
| 
      
 631 
     | 
    
         
            +
             
     | 
| 
       78 
632 
     | 
    
         
             
            end
         
     | 
| 
       79 
633 
     | 
    
         | 
| 
       80 
634 
     | 
    
         
             
            #  The page for setting up a Fill-in-the-blank question
         
     | 
| 
       81 
635 
     | 
    
         
             
            class FillInBlank
         
     | 
| 
       82 
636 
     | 
    
         
             
              include PageObject
         
     | 
| 
       83 
637 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       84 
     | 
    
         
            -
              include  
     | 
| 
      
 638 
     | 
    
         
            +
              include QuestionHelpers
         
     | 
| 
      
 639 
     | 
    
         
            +
             
     | 
| 
      
 640 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 641 
     | 
    
         
            +
                button(:cancel, :id=>"itemForm:_id63", :frame=>frame)
         
     | 
| 
      
 642 
     | 
    
         
            +
                text_field(:answer_point_value, :id=>"itemForm:answerptr", :frame=>frame)
         
     | 
| 
      
 643 
     | 
    
         
            +
                text_area(:question_text, :id=>"itemForm:_id75_textinput", :frame=>frame)
         
     | 
| 
      
 644 
     | 
    
         
            +
                checkbox(:case_sensitive, :name=>"itemForm:_id76", :frame=>frame)
         
     | 
| 
      
 645 
     | 
    
         
            +
                checkbox(:mutually_exclusive, :name=>"itemForm:_id78", :frame=>frame)
         
     | 
| 
      
 646 
     | 
    
         
            +
                button(:add_attachments, :id=>"itemForm:_id126", :frame=>frame)
         
     | 
| 
      
 647 
     | 
    
         
            +
                select_list(:assign_to_part, :id=>"itemForm:assignToPart", :frame=>frame)
         
     | 
| 
      
 648 
     | 
    
         
            +
                select_list(:assign_to_pool, :id=>"itemForm:assignToPool", :frame=>frame)
         
     | 
| 
      
 649 
     | 
    
         
            +
             
     | 
| 
      
 650 
     | 
    
         
            +
              end
         
     | 
| 
      
 651 
     | 
    
         
            +
             
     | 
| 
       85 
652 
     | 
    
         
             
            end
         
     | 
| 
       86 
653 
     | 
    
         | 
| 
       87 
654 
     | 
    
         
             
            #  The page for setting up a numeric response question
         
     | 
| 
       88 
655 
     | 
    
         
             
            class NumericResponse
         
     | 
| 
       89 
656 
     | 
    
         
             
              include PageObject
         
     | 
| 
       90 
657 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       91 
     | 
    
         
            -
              include  
     | 
| 
      
 658 
     | 
    
         
            +
              include QuestionHelpers
         
     | 
| 
      
 659 
     | 
    
         
            +
             
     | 
| 
      
 660 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 661 
     | 
    
         
            +
                button(:cancel, :id=>"itemForm:_id63", :frame=>frame)
         
     | 
| 
      
 662 
     | 
    
         
            +
                text_field(:answer_point_value, :id=>"itemForm:answerptr", :frame=>frame)
         
     | 
| 
      
 663 
     | 
    
         
            +
                text_area(:question_text, :id=>"itemForm:_id73_textinput", :frame=>frame)
         
     | 
| 
      
 664 
     | 
    
         
            +
                button(:add_attachments, :id=>"itemForm:_id117", :frame=>frame)
         
     | 
| 
      
 665 
     | 
    
         
            +
                select_list(:assign_to_part, :id=>"itemForm:assignToPart", :frame=>frame)
         
     | 
| 
      
 666 
     | 
    
         
            +
                select_list(:assign_to_pool, :id=>"itemForm:assignToPool", :frame=>frame)
         
     | 
| 
      
 667 
     | 
    
         
            +
             
     | 
| 
      
 668 
     | 
    
         
            +
              end
         
     | 
| 
      
 669 
     | 
    
         
            +
             
     | 
| 
       92 
670 
     | 
    
         
             
            end
         
     | 
| 
       93 
671 
     | 
    
         | 
| 
       94 
672 
     | 
    
         
             
            #  The page for setting up a matching question
         
     | 
| 
       95 
673 
     | 
    
         
             
            class Matching
         
     | 
| 
       96 
674 
     | 
    
         
             
              include PageObject
         
     | 
| 
       97 
675 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       98 
     | 
    
         
            -
              include  
     | 
| 
      
 676 
     | 
    
         
            +
              include QuestionHelpers
         
     | 
| 
      
 677 
     | 
    
         
            +
             
     | 
| 
      
 678 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 679 
     | 
    
         
            +
                button(:cancel, :id=>"itemForm:_id63", :frame=>frame)
         
     | 
| 
      
 680 
     | 
    
         
            +
                text_field(:answer_point_value, :id=>"itemForm:answerptr", :frame=>frame)
         
     | 
| 
      
 681 
     | 
    
         
            +
                text_area(:question_text, :id=>"itemForm:_id78_textinput", :frame=>frame)
         
     | 
| 
      
 682 
     | 
    
         
            +
                button(:add_attachments, :id=>"itemForm:_id122", :frame=>frame)
         
     | 
| 
      
 683 
     | 
    
         
            +
                text_area(:choice, :id=>"itemForm:_id147_textinput", :frame=>frame)
         
     | 
| 
      
 684 
     | 
    
         
            +
                text_area(:match, :id=>"itemForm:_id151_textinput", :frame=>frame)
         
     | 
| 
      
 685 
     | 
    
         
            +
                button(:save_pairing, :name=>"itemForm:_id164", :frame=>frame)
         
     | 
| 
      
 686 
     | 
    
         
            +
                select_list(:assign_to_part, :id=>"itemForm:assignToPart", :frame=>frame)
         
     | 
| 
      
 687 
     | 
    
         
            +
                select_list(:assign_to_pool, :id=>"itemForm:assignToPool", :frame=>frame)
         
     | 
| 
      
 688 
     | 
    
         
            +
             
     | 
| 
      
 689 
     | 
    
         
            +
              end
         
     | 
| 
      
 690 
     | 
    
         
            +
             
     | 
| 
       99 
691 
     | 
    
         
             
            end
         
     | 
| 
       100 
692 
     | 
    
         | 
| 
       101 
693 
     | 
    
         
             
            #  The page for setting up a True/False question
         
     | 
| 
       102 
694 
     | 
    
         
             
            class TrueFalse
         
     | 
| 
       103 
695 
     | 
    
         
             
              include PageObject
         
     | 
| 
       104 
696 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       105 
     | 
    
         
            -
              include  
     | 
| 
      
 697 
     | 
    
         
            +
              include QuestionHelpers
         
     | 
| 
      
 698 
     | 
    
         
            +
             
     | 
| 
      
 699 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 700 
     | 
    
         
            +
                button(:cancel, :id=>"itemForm:_id63", :frame=>frame)
         
     | 
| 
      
 701 
     | 
    
         
            +
                text_field(:answer_point_value, :id=>"itemForm:answerptr", :frame=>frame)
         
     | 
| 
      
 702 
     | 
    
         
            +
                text_area(:question_text, :id=>"itemForm:_id77_textinput", :frame=>frame)
         
     | 
| 
      
 703 
     | 
    
         
            +
                button(:add_attachments, :id=>"itemForm:_id121", :frame=>frame)
         
     | 
| 
      
 704 
     | 
    
         
            +
                text_field(:negative_point_value, :id=>"itemForm:answerdsc", :frame=>frame)
         
     | 
| 
      
 705 
     | 
    
         
            +
                radio_button(:answer_true) {|page| page.radio_button_element(:index=>0, :name=>"itemForm:TF", :frame=>frame)}
         
     | 
| 
      
 706 
     | 
    
         
            +
                radio_button(:answer_false) {|page| page.radio_button_element(:index=>1, :name=>"itemForm:TF", :frame=>frame)}
         
     | 
| 
      
 707 
     | 
    
         
            +
                radio_button(:required_rationale_yes) {|page| page.radio_button_element(:index=>0, :name=>"itemForm:rational", :frame=>frame)}
         
     | 
| 
      
 708 
     | 
    
         
            +
                radio_button(:required_rationale_no) {|page| page.radio_button_element(:index=>1, :name=>"itemForm:rational", :frame=>frame)}
         
     | 
| 
      
 709 
     | 
    
         
            +
                select_list(:assign_to_part, :id=>"itemForm:assignToPart", :frame=>frame)
         
     | 
| 
      
 710 
     | 
    
         
            +
                select_list(:assign_to_pool, :id=>"itemForm:assignToPool", :frame=>frame)
         
     | 
| 
      
 711 
     | 
    
         
            +
             
     | 
| 
      
 712 
     | 
    
         
            +
              end
         
     | 
| 
      
 713 
     | 
    
         
            +
             
     | 
| 
       106 
714 
     | 
    
         
             
            end
         
     | 
| 
       107 
715 
     | 
    
         | 
| 
       108 
716 
     | 
    
         
             
            #  The page for setting up a question that requires an audio response
         
     | 
| 
       109 
717 
     | 
    
         
             
            class AudioRecording
         
     | 
| 
       110 
718 
     | 
    
         
             
              include PageObject
         
     | 
| 
       111 
719 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       112 
     | 
    
         
            -
              include  
     | 
| 
      
 720 
     | 
    
         
            +
              include QuestionHelpers
         
     | 
| 
      
 721 
     | 
    
         
            +
             
     | 
| 
      
 722 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 723 
     | 
    
         
            +
                button(:cancel, :id=>"itemForm:_id63", :frame=>frame)
         
     | 
| 
      
 724 
     | 
    
         
            +
                text_field(:answer_point_value, :id=>"itemForm:answerptr", :frame=>frame)
         
     | 
| 
      
 725 
     | 
    
         
            +
                text_area(:question_text, :id=>"itemForm:_id69_textinput", :frame=>frame)
         
     | 
| 
      
 726 
     | 
    
         
            +
                button(:add_attachments, :id=>"itemForm:_id113", :frame=>frame)
         
     | 
| 
      
 727 
     | 
    
         
            +
                text_field(:time_allowed, :id=>"itemForm:timeallowed", :frame=>frame)
         
     | 
| 
      
 728 
     | 
    
         
            +
                select_list(:number_of_attempts, :id=>"itemForm:noattempts", :frame=>frame)
         
     | 
| 
      
 729 
     | 
    
         
            +
                select_list(:assign_to_part, :id=>"itemForm:assignToPart", :frame=>frame)
         
     | 
| 
      
 730 
     | 
    
         
            +
                select_list(:assign_to_pool, :id=>"itemForm:assignToPool", :frame=>frame)
         
     | 
| 
      
 731 
     | 
    
         
            +
             
     | 
| 
      
 732 
     | 
    
         
            +
              end
         
     | 
| 
      
 733 
     | 
    
         
            +
             
     | 
| 
       113 
734 
     | 
    
         
             
            end
         
     | 
| 
       114 
735 
     | 
    
         | 
| 
       115 
736 
     | 
    
         
             
            # The page for setting up a question that requires
         
     | 
| 
         @@ -117,35 +738,140 @@ end 
     | 
|
| 
       117 
738 
     | 
    
         
             
            class FileUpload
         
     | 
| 
       118 
739 
     | 
    
         
             
              include PageObject
         
     | 
| 
       119 
740 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       120 
     | 
    
         
            -
              include  
     | 
| 
      
 741 
     | 
    
         
            +
              include QuestionHelpers
         
     | 
| 
      
 742 
     | 
    
         
            +
             
     | 
| 
      
 743 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 744 
     | 
    
         
            +
                button(:cancel, :id=>"itemForm:_id63", :frame=>frame)
         
     | 
| 
      
 745 
     | 
    
         
            +
                text_field(:answer_point_value, :id=>"itemForm:answerptr", :frame=>frame)
         
     | 
| 
      
 746 
     | 
    
         
            +
                text_area(:question_text, :id=>"itemForm:_id69_textinput", :frame=>frame)
         
     | 
| 
      
 747 
     | 
    
         
            +
                button(:add_attachments, :id=>"itemForm:_id113", :frame=>frame)
         
     | 
| 
      
 748 
     | 
    
         
            +
                select_list(:assign_to_part, :id=>"itemForm:assignToPart", :frame=>frame)
         
     | 
| 
      
 749 
     | 
    
         
            +
                select_list(:assign_to_pool, :id=>"itemForm:assignToPool", :frame=>frame)
         
     | 
| 
      
 750 
     | 
    
         
            +
             
     | 
| 
      
 751 
     | 
    
         
            +
              end
         
     | 
| 
      
 752 
     | 
    
         
            +
             
     | 
| 
       121 
753 
     | 
    
         
             
            end
         
     | 
| 
       122 
754 
     | 
    
         | 
| 
       123 
755 
     | 
    
         
             
            # The page that appears when you are editing a type of assessment
         
     | 
| 
       124 
756 
     | 
    
         
             
            class EditAssessmentType
         
     | 
| 
       125 
757 
     | 
    
         
             
              include PageObject
         
     | 
| 
       126 
758 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       127 
     | 
    
         
            -
             
     | 
| 
      
 759 
     | 
    
         
            +
             
     | 
| 
       128 
760 
     | 
    
         
             
            end
         
     | 
| 
       129 
761 
     | 
    
         | 
| 
       130 
762 
     | 
    
         
             
            # The Page that appears when adding a new question pool
         
     | 
| 
       131 
763 
     | 
    
         
             
            class AddQuestionPool
         
     | 
| 
       132 
764 
     | 
    
         
             
              include PageObject
         
     | 
| 
       133 
765 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       134 
     | 
    
         
            -
               
     | 
| 
      
 766 
     | 
    
         
            +
              # Clicks the Save button, then
         
     | 
| 
      
 767 
     | 
    
         
            +
              # instantiates the QuestionPoolsList page class.
         
     | 
| 
      
 768 
     | 
    
         
            +
              def save
         
     | 
| 
      
 769 
     | 
    
         
            +
                #10.times {frm.button(:id=>"questionpool:submit").flash}
         
     | 
| 
      
 770 
     | 
    
         
            +
                frm.button(:id=>"questionpool:submit").click
         
     | 
| 
      
 771 
     | 
    
         
            +
                #sleep 180
         
     | 
| 
      
 772 
     | 
    
         
            +
                #frm.button(:value=>"Create").wait_until_present(120)
         
     | 
| 
      
 773 
     | 
    
         
            +
                QuestionPoolsList.new(@browser)
         
     | 
| 
      
 774 
     | 
    
         
            +
              end
         
     | 
| 
      
 775 
     | 
    
         
            +
             
     | 
| 
      
 776 
     | 
    
         
            +
              def cancel
         
     | 
| 
      
 777 
     | 
    
         
            +
                frm.button(:value=>"Cancel").click
         
     | 
| 
      
 778 
     | 
    
         
            +
                QuestionPoolsList.new @browser
         
     | 
| 
      
 779 
     | 
    
         
            +
              end
         
     | 
| 
      
 780 
     | 
    
         
            +
             
     | 
| 
      
 781 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 782 
     | 
    
         
            +
                text_field(:pool_name, :id=>"questionpool:namefield", :frame=>frame)
         
     | 
| 
      
 783 
     | 
    
         
            +
                text_field(:department_group, :id=>"questionpool:orgfield", :frame=>frame)
         
     | 
| 
      
 784 
     | 
    
         
            +
                text_area(:description, :id=>"questionpool:descfield", :frame=>frame)
         
     | 
| 
      
 785 
     | 
    
         
            +
                text_field(:objectives, :id=>"questionpool:objfield", :frame=>frame)
         
     | 
| 
      
 786 
     | 
    
         
            +
                text_field(:keywords, :id=>"questionpool:keyfield", :frame=>frame)
         
     | 
| 
      
 787 
     | 
    
         
            +
             
     | 
| 
      
 788 
     | 
    
         
            +
              end
         
     | 
| 
       135 
789 
     | 
    
         
             
            end
         
     | 
| 
       136 
790 
     | 
    
         | 
| 
       137 
791 
     | 
    
         
             
            # The Page that appears when editing an existing question pool
         
     | 
| 
       138 
792 
     | 
    
         
             
            class EditQuestionPool
         
     | 
| 
       139 
793 
     | 
    
         
             
              include PageObject
         
     | 
| 
       140 
794 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       141 
     | 
    
         
            -
               
     | 
| 
      
 795 
     | 
    
         
            +
              # Clicks the Add Question link, then
         
     | 
| 
      
 796 
     | 
    
         
            +
              # instantiates the SelectQuestionType class.
         
     | 
| 
      
 797 
     | 
    
         
            +
              def add_question
         
     | 
| 
      
 798 
     | 
    
         
            +
                frm.link(:id=>"editform:addQlink").click
         
     | 
| 
      
 799 
     | 
    
         
            +
                SelectQuestionType.new(@browser)
         
     | 
| 
      
 800 
     | 
    
         
            +
              end
         
     | 
| 
      
 801 
     | 
    
         
            +
             
     | 
| 
      
 802 
     | 
    
         
            +
              # Clicks the Question Pools link, then
         
     | 
| 
      
 803 
     | 
    
         
            +
              # instantiates the QuestionPoolsList class.
         
     | 
| 
      
 804 
     | 
    
         
            +
              def question_pools
         
     | 
| 
      
 805 
     | 
    
         
            +
                frm.link(:text=>"Question Pools").click
         
     | 
| 
      
 806 
     | 
    
         
            +
                QuestionPoolsList.new(@browser)
         
     | 
| 
      
 807 
     | 
    
         
            +
              end
         
     | 
| 
      
 808 
     | 
    
         
            +
             
     | 
| 
      
 809 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 810 
     | 
    
         
            +
                text_field(:pool_name, :id=>"editform:namefield", :frame=>frame)
         
     | 
| 
      
 811 
     | 
    
         
            +
                text_field(:department_group, :id=>"editform:orgfield", :frame=>frame)
         
     | 
| 
      
 812 
     | 
    
         
            +
                text_area(:description, :id=>"editform:descfield", :frame=>frame)
         
     | 
| 
      
 813 
     | 
    
         
            +
                text_field(:objectives, :id=>"editform:objfield", :frame=>frame)
         
     | 
| 
      
 814 
     | 
    
         
            +
                text_field(:keywords, :id=>"editform:keyfield", :frame=>frame)
         
     | 
| 
      
 815 
     | 
    
         
            +
                button(:update, :id=>"editform:Update", :frame=>frame)
         
     | 
| 
      
 816 
     | 
    
         
            +
                button(:save, :id=>"questionpool:submit", :frame=>frame)
         
     | 
| 
      
 817 
     | 
    
         
            +
                button(:cancel, :id=>"questionpool:_id11", :frame=>frame)
         
     | 
| 
      
 818 
     | 
    
         
            +
             
     | 
| 
      
 819 
     | 
    
         
            +
              end
         
     | 
| 
       142 
820 
     | 
    
         
             
            end
         
     | 
| 
       143 
821 
     | 
    
         | 
| 
       144 
822 
     | 
    
         
             
            # The page with the list of existing Question Pools
         
     | 
| 
       145 
823 
     | 
    
         
             
            class QuestionPoolsList
         
     | 
| 
       146 
824 
     | 
    
         
             
              include PageObject
         
     | 
| 
       147 
825 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       148 
     | 
    
         
            -
               
     | 
| 
      
 826 
     | 
    
         
            +
              # Clicks the edit button, then instantiates
         
     | 
| 
      
 827 
     | 
    
         
            +
              # the EditQuestionPool page class.
         
     | 
| 
      
 828 
     | 
    
         
            +
              # @param name [String] the name of the pool you want to edit
         
     | 
| 
      
 829 
     | 
    
         
            +
              def edit_pool(name)
         
     | 
| 
      
 830 
     | 
    
         
            +
                frm.span(:text=>name).fire_event("onclick")
         
     | 
| 
      
 831 
     | 
    
         
            +
                EditQuestionPool.new(@browser)
         
     | 
| 
      
 832 
     | 
    
         
            +
              end
         
     | 
| 
      
 833 
     | 
    
         
            +
             
     | 
| 
      
 834 
     | 
    
         
            +
              # Clicks the Add New Pool link, then
         
     | 
| 
      
 835 
     | 
    
         
            +
              # instantiates the AddQuestionPool page class.
         
     | 
| 
      
 836 
     | 
    
         
            +
              def add_new_pool
         
     | 
| 
      
 837 
     | 
    
         
            +
                #puts "clicking add new pool..."
         
     | 
| 
      
 838 
     | 
    
         
            +
                #10.times {frm.link(:text=>"Add New Pool").flash}
         
     | 
| 
      
 839 
     | 
    
         
            +
                frm.link(:text=>"Add New Pool").click
         
     | 
| 
      
 840 
     | 
    
         
            +
                #puts "clicked..."
         
     | 
| 
      
 841 
     | 
    
         
            +
                #frm.text_field(:id=>"questionpool:namefield").wait_until_present(200)
         
     | 
| 
      
 842 
     | 
    
         
            +
                AddQuestionPool.new(@browser)
         
     | 
| 
      
 843 
     | 
    
         
            +
              end
         
     | 
| 
      
 844 
     | 
    
         
            +
             
     | 
| 
      
 845 
     | 
    
         
            +
              # Returns an array containing strings of the pool names listed
         
     | 
| 
      
 846 
     | 
    
         
            +
              # on the page.
         
     | 
| 
      
 847 
     | 
    
         
            +
              def pool_names
         
     | 
| 
      
 848 
     | 
    
         
            +
                names= []
         
     | 
| 
      
 849 
     | 
    
         
            +
                frm.table(:id=>"questionpool:TreeTable").rows.each do | row |
         
     | 
| 
      
 850 
     | 
    
         
            +
                  if row.span(:id=>/questionpool.+poolnametext/).exist?
         
     | 
| 
      
 851 
     | 
    
         
            +
                    names << row.span(:id=>/questionpool.+poolnametext/).text
         
     | 
| 
      
 852 
     | 
    
         
            +
                  end
         
     | 
| 
      
 853 
     | 
    
         
            +
                end
         
     | 
| 
      
 854 
     | 
    
         
            +
                return names
         
     | 
| 
      
 855 
     | 
    
         
            +
              end
         
     | 
| 
      
 856 
     | 
    
         
            +
             
     | 
| 
      
 857 
     | 
    
         
            +
              # Clicks "Import" and then instantiates the
         
     | 
| 
      
 858 
     | 
    
         
            +
              # PoolImport page class.
         
     | 
| 
      
 859 
     | 
    
         
            +
              def import
         
     | 
| 
      
 860 
     | 
    
         
            +
                frm.link(:text=>"Import").click
         
     | 
| 
      
 861 
     | 
    
         
            +
                PoolImport.new(@browser)
         
     | 
| 
      
 862 
     | 
    
         
            +
              end
         
     | 
| 
      
 863 
     | 
    
         
            +
             
     | 
| 
      
 864 
     | 
    
         
            +
              # Clicks the Assessments link and then
         
     | 
| 
      
 865 
     | 
    
         
            +
              # instantiates the AssessmentsList page class.
         
     | 
| 
      
 866 
     | 
    
         
            +
              def assessments
         
     | 
| 
      
 867 
     | 
    
         
            +
                frm.link(:text=>"Assessments").click
         
     | 
| 
      
 868 
     | 
    
         
            +
                AssessmentsList.new(@browser)
         
     | 
| 
      
 869 
     | 
    
         
            +
              end
         
     | 
| 
      
 870 
     | 
    
         
            +
             
     | 
| 
      
 871 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 872 
     | 
    
         
            +
                link(:assessment_types, :text=>"Assessment Types", :frame=>frame)
         
     | 
| 
      
 873 
     | 
    
         
            +
             
     | 
| 
      
 874 
     | 
    
         
            +
              end
         
     | 
| 
       149 
875 
     | 
    
         
             
            end
         
     | 
| 
       150 
876 
     | 
    
         | 
| 
       151 
877 
     | 
    
         
             
            # The page that appears when you click to import
         
     | 
| 
         @@ -153,14 +879,57 @@ end 
     | 
|
| 
       153 
879 
     | 
    
         
             
            class PoolImport
         
     | 
| 
       154 
880 
     | 
    
         
             
              include PageObject
         
     | 
| 
       155 
881 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       156 
     | 
    
         
            -
               
     | 
| 
      
 882 
     | 
    
         
            +
              # Enters the target file into the Choose File
         
     | 
| 
      
 883 
     | 
    
         
            +
              # file field. Including the file path separately is optional.
         
     | 
| 
      
 884 
     | 
    
         
            +
              # @param file_name [String] the name of the file you want to choose. Can include path info, if desired.
         
     | 
| 
      
 885 
     | 
    
         
            +
              # @param file_path [String] Optional. This is the path information for the file location.
         
     | 
| 
      
 886 
     | 
    
         
            +
              def choose_file(file_name, file_path="")
         
     | 
| 
      
 887 
     | 
    
         
            +
                frm.file_field(:name=>"importPoolForm:_id6.upload").set(file_path + file_name)
         
     | 
| 
      
 888 
     | 
    
         
            +
              end
         
     | 
| 
      
 889 
     | 
    
         
            +
             
     | 
| 
      
 890 
     | 
    
         
            +
              # Clicks the Import button, then
         
     | 
| 
      
 891 
     | 
    
         
            +
              # instantiates the QuestionPoolsList
         
     | 
| 
      
 892 
     | 
    
         
            +
              # page class.
         
     | 
| 
      
 893 
     | 
    
         
            +
              def import
         
     | 
| 
      
 894 
     | 
    
         
            +
                frm.button(:value=>"Import").click
         
     | 
| 
      
 895 
     | 
    
         
            +
                QuestionPoolsList.new(@browser)
         
     | 
| 
      
 896 
     | 
    
         
            +
              end
         
     | 
| 
      
 897 
     | 
    
         
            +
             
     | 
| 
       157 
898 
     | 
    
         
             
            end
         
     | 
| 
       158 
899 
     | 
    
         | 
| 
       159 
900 
     | 
    
         
             
            # This page appears when adding a question to a pool
         
     | 
| 
       160 
901 
     | 
    
         
             
            class SelectQuestionType
         
     | 
| 
       161 
902 
     | 
    
         
             
              include PageObject
         
     | 
| 
       162 
903 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       163 
     | 
    
         
            -
               
     | 
| 
      
 904 
     | 
    
         
            +
              # Selects the specified question type from the
         
     | 
| 
      
 905 
     | 
    
         
            +
              # drop-down list, then instantiates the appropriate
         
     | 
| 
      
 906 
     | 
    
         
            +
              # page class, based on the question type selected.
         
     | 
| 
      
 907 
     | 
    
         
            +
              # @param qtype [String] the text of the question type you want to select from the drop down list.
         
     | 
| 
      
 908 
     | 
    
         
            +
              def select_question_type(qtype)
         
     | 
| 
      
 909 
     | 
    
         
            +
                frm.select(:id=>"_id1:selType").select(qtype)
         
     | 
| 
      
 910 
     | 
    
         
            +
                frm.button(:value=>"Save").click
         
     | 
| 
      
 911 
     | 
    
         
            +
             
     | 
| 
      
 912 
     | 
    
         
            +
                page = case(qtype)
         
     | 
| 
      
 913 
     | 
    
         
            +
                         when "Multiple Choice" then MultipleChoice.new(@browser)
         
     | 
| 
      
 914 
     | 
    
         
            +
                         when "True False" then TrueFalse.new(@browser)
         
     | 
| 
      
 915 
     | 
    
         
            +
                         when "Survey" then Survey.new(@browser)
         
     | 
| 
      
 916 
     | 
    
         
            +
                         when "Short Answer/Essay" then ShortAnswer.new(@browser)
         
     | 
| 
      
 917 
     | 
    
         
            +
                         when "Fill in the Blank" then FillInBlank.new(@browser)
         
     | 
| 
      
 918 
     | 
    
         
            +
                         when "Numeric Response" then NumericResponse.new(@browser)
         
     | 
| 
      
 919 
     | 
    
         
            +
                         when "Matching" then Matching.new(@browser)
         
     | 
| 
      
 920 
     | 
    
         
            +
                         when "Audio Recording" then AudioRecording.new(@browser)
         
     | 
| 
      
 921 
     | 
    
         
            +
                         when "File Upload" then FileUpload.new(@browser)
         
     | 
| 
      
 922 
     | 
    
         
            +
                         else puts "nothing selected"
         
     | 
| 
      
 923 
     | 
    
         
            +
                       end
         
     | 
| 
      
 924 
     | 
    
         
            +
             
     | 
| 
      
 925 
     | 
    
         
            +
                return page
         
     | 
| 
      
 926 
     | 
    
         
            +
             
     | 
| 
      
 927 
     | 
    
         
            +
              end
         
     | 
| 
      
 928 
     | 
    
         
            +
             
     | 
| 
      
 929 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 930 
     | 
    
         
            +
                button(:cancel, :value=>"Cancel", :frame=>frame)
         
     | 
| 
      
 931 
     | 
    
         
            +
             
     | 
| 
      
 932 
     | 
    
         
            +
              end
         
     | 
| 
       164 
933 
     | 
    
         
             
            end
         
     | 
| 
       165 
934 
     | 
    
         | 
| 
       166 
935 
     | 
    
         
             
            # Page of Assessments accessible to a student user
         
     | 
| 
         @@ -170,25 +939,159 @@ end 
     | 
|
| 
       170 
939 
     | 
    
         
             
            class TakeAssessmentList
         
     | 
| 
       171 
940 
     | 
    
         
             
              include PageObject
         
     | 
| 
       172 
941 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       173 
     | 
    
         
            -
               
     | 
| 
      
 942 
     | 
    
         
            +
              # Returns an array containing the assessment names that appear on the page.
         
     | 
| 
      
 943 
     | 
    
         
            +
              def available_assessments
         
     | 
| 
      
 944 
     | 
    
         
            +
                # define this later
         
     | 
| 
      
 945 
     | 
    
         
            +
              end
         
     | 
| 
      
 946 
     | 
    
         
            +
             
     | 
| 
      
 947 
     | 
    
         
            +
              # Method to get the titles of assessments that
         
     | 
| 
      
 948 
     | 
    
         
            +
              # the student user has submitted. The titles are
         
     | 
| 
      
 949 
     | 
    
         
            +
              # returned in an Array object.
         
     | 
| 
      
 950 
     | 
    
         
            +
              def submitted_assessments
         
     | 
| 
      
 951 
     | 
    
         
            +
                table_array = @browser.frame(:index=>1).table(:id=>"selectIndexForm:reviewTable").to_a
         
     | 
| 
      
 952 
     | 
    
         
            +
                table_array.delete_at(0)
         
     | 
| 
      
 953 
     | 
    
         
            +
                titles = []
         
     | 
| 
      
 954 
     | 
    
         
            +
                table_array.each { |row|
         
     | 
| 
      
 955 
     | 
    
         
            +
                  unless row[0] == ""
         
     | 
| 
      
 956 
     | 
    
         
            +
                    titles << row[0]
         
     | 
| 
      
 957 
     | 
    
         
            +
                  end
         
     | 
| 
      
 958 
     | 
    
         
            +
                }
         
     | 
| 
      
 959 
     | 
    
         
            +
             
     | 
| 
      
 960 
     | 
    
         
            +
                return titles
         
     | 
| 
      
 961 
     | 
    
         
            +
             
     | 
| 
      
 962 
     | 
    
         
            +
              end
         
     | 
| 
      
 963 
     | 
    
         
            +
             
     | 
| 
      
 964 
     | 
    
         
            +
              # Clicks the specified assessment
         
     | 
| 
      
 965 
     | 
    
         
            +
              # then instantiates the BeginAssessment
         
     | 
| 
      
 966 
     | 
    
         
            +
              # page class.
         
     | 
| 
      
 967 
     | 
    
         
            +
              # @param name [String] the name of the assessment you want to take
         
     | 
| 
      
 968 
     | 
    
         
            +
              def take_assessment(name)
         
     | 
| 
      
 969 
     | 
    
         
            +
                begin
         
     | 
| 
      
 970 
     | 
    
         
            +
                  frm.link(:text=>name).click
         
     | 
| 
      
 971 
     | 
    
         
            +
                rescue Watir::Exception::UnknownObjectException
         
     | 
| 
      
 972 
     | 
    
         
            +
                  frm.link(:text=>CGI::escapeHTML(name)).click
         
     | 
| 
      
 973 
     | 
    
         
            +
                end
         
     | 
| 
      
 974 
     | 
    
         
            +
                BeginAssessment.new(@browser)
         
     | 
| 
      
 975 
     | 
    
         
            +
              end
         
     | 
| 
      
 976 
     | 
    
         
            +
             
     | 
| 
      
 977 
     | 
    
         
            +
              # TODO This method is in need of improvement to make it more generalized for finding the correct test.
         
     | 
| 
      
 978 
     | 
    
         
            +
              #
         
     | 
| 
      
 979 
     | 
    
         
            +
              def feedback(test_name)
         
     | 
| 
      
 980 
     | 
    
         
            +
                test_table = frm.table(:id=>"selectIndexForm:reviewTable").to_a
         
     | 
| 
      
 981 
     | 
    
         
            +
                test_table.delete_if { |row| row[3] != "Immediate" }
         
     | 
| 
      
 982 
     | 
    
         
            +
                index_value = test_table.index { |row| row[0] == test_name }
         
     | 
| 
      
 983 
     | 
    
         
            +
                frm.link(:text=>"Feedback", :index=>index_value).click
         
     | 
| 
      
 984 
     | 
    
         
            +
                # Need to add a call to a New class here, when it's written
         
     | 
| 
      
 985 
     | 
    
         
            +
              end
         
     | 
| 
      
 986 
     | 
    
         
            +
             
     | 
| 
       174 
987 
     | 
    
         
             
            end
         
     | 
| 
       175 
988 
     | 
    
         | 
| 
       176 
989 
     | 
    
         
             
            # The student view of the overview page of an Assessment
         
     | 
| 
       177 
990 
     | 
    
         
             
            class BeginAssessment
         
     | 
| 
       178 
991 
     | 
    
         
             
              include PageObject
         
     | 
| 
       179 
992 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       180 
     | 
    
         
            -
               
     | 
| 
      
 993 
     | 
    
         
            +
              # Clicks the Begin Assessment button.
         
     | 
| 
      
 994 
     | 
    
         
            +
              def begin_assessment
         
     | 
| 
      
 995 
     | 
    
         
            +
                frm.button(:value=>"Begin Assessment").click
         
     | 
| 
      
 996 
     | 
    
         
            +
              end
         
     | 
| 
      
 997 
     | 
    
         
            +
             
     | 
| 
      
 998 
     | 
    
         
            +
              # Clicks the Cancel button and instantiates the X Class.
         
     | 
| 
      
 999 
     | 
    
         
            +
              def cancel
         
     | 
| 
      
 1000 
     | 
    
         
            +
                # Define this later
         
     | 
| 
      
 1001 
     | 
    
         
            +
              end
         
     | 
| 
      
 1002 
     | 
    
         
            +
             
     | 
| 
      
 1003 
     | 
    
         
            +
              # Selects the specified radio button answer
         
     | 
| 
      
 1004 
     | 
    
         
            +
              def multiple_choice_answer(letter)
         
     | 
| 
      
 1005 
     | 
    
         
            +
                index = case(letter.upcase)
         
     | 
| 
      
 1006 
     | 
    
         
            +
                          when "A" then "0"
         
     | 
| 
      
 1007 
     | 
    
         
            +
                          when "B" then "1"
         
     | 
| 
      
 1008 
     | 
    
         
            +
                          when "C" then "2"
         
     | 
| 
      
 1009 
     | 
    
         
            +
                          when "D" then "3"
         
     | 
| 
      
 1010 
     | 
    
         
            +
                          when "E" then "4"
         
     | 
| 
      
 1011 
     | 
    
         
            +
                        end
         
     | 
| 
      
 1012 
     | 
    
         
            +
                frm.radio(:name=>/takeAssessmentForm.+:deliverMultipleChoice.+:_id.+:#{index}/).click
         
     | 
| 
      
 1013 
     | 
    
         
            +
              end
         
     | 
| 
      
 1014 
     | 
    
         
            +
             
     | 
| 
      
 1015 
     | 
    
         
            +
              # Enters the answer into the specified blank number (1-based).
         
     | 
| 
      
 1016 
     | 
    
         
            +
              # @param answer [String]
         
     | 
| 
      
 1017 
     | 
    
         
            +
              def fill_in_blank_answer(answer, blank_number)
         
     | 
| 
      
 1018 
     | 
    
         
            +
                index = blank_number.to_i-1
         
     | 
| 
      
 1019 
     | 
    
         
            +
                frm.text_field(:name=>/deliverFillInTheBlank:_id.+:#{index}/).value=answer
         
     | 
| 
      
 1020 
     | 
    
         
            +
              end
         
     | 
| 
      
 1021 
     | 
    
         
            +
             
     | 
| 
      
 1022 
     | 
    
         
            +
              # Clicks either the True or the False radio button, as specified.
         
     | 
| 
      
 1023 
     | 
    
         
            +
              def true_false_answer(answer)
         
     | 
| 
      
 1024 
     | 
    
         
            +
                answer.upcase=~/t/i ? index = 0 : index = 1
         
     | 
| 
      
 1025 
     | 
    
         
            +
                frm.radio(:name=>/deliverTrueFalse/, :index=>index).set
         
     | 
| 
      
 1026 
     | 
    
         
            +
              end
         
     | 
| 
      
 1027 
     | 
    
         
            +
             
     | 
| 
      
 1028 
     | 
    
         
            +
              # Enters the specified string into the Rationale text box.
         
     | 
| 
      
 1029 
     | 
    
         
            +
              def true_false_rationale(text)
         
     | 
| 
      
 1030 
     | 
    
         
            +
                frm.text_field(:name=>/:deliverTrueFalse:rationale/).value=text
         
     | 
| 
      
 1031 
     | 
    
         
            +
              end
         
     | 
| 
      
 1032 
     | 
    
         
            +
             
     | 
| 
      
 1033 
     | 
    
         
            +
              # Enters the specified text into the "Short Answer" field.
         
     | 
| 
      
 1034 
     | 
    
         
            +
              def short_answer(answer)
         
     | 
| 
      
 1035 
     | 
    
         
            +
                frm.text_field(:name=>/deliverShortAnswer/).value=answer
         
     | 
| 
      
 1036 
     | 
    
         
            +
              end
         
     | 
| 
      
 1037 
     | 
    
         
            +
             
     | 
| 
      
 1038 
     | 
    
         
            +
              # Selects the specified matching value, at the spot specified by the number (1-based counting).
         
     | 
| 
      
 1039 
     | 
    
         
            +
              def match_answer(answer, number)
         
     | 
| 
      
 1040 
     | 
    
         
            +
                index = number.to_i-1
         
     | 
| 
      
 1041 
     | 
    
         
            +
                frm.select(:name=>/deliverMatching/, :index=>index).select(answer)
         
     | 
| 
      
 1042 
     | 
    
         
            +
              end
         
     | 
| 
      
 1043 
     | 
    
         
            +
             
     | 
| 
      
 1044 
     | 
    
         
            +
              # Enters the specified file name in the file field. You can include the path to the file
         
     | 
| 
      
 1045 
     | 
    
         
            +
              # as an optional second parameter.
         
     | 
| 
      
 1046 
     | 
    
         
            +
              def file_answer(file_name, file_path="")
         
     | 
| 
      
 1047 
     | 
    
         
            +
                frm.file_field(:name=>/deliverFileUpload/).set(file_path + file_name)
         
     | 
| 
      
 1048 
     | 
    
         
            +
                frm.button(:value=>"Upload").click
         
     | 
| 
      
 1049 
     | 
    
         
            +
              end
         
     | 
| 
      
 1050 
     | 
    
         
            +
             
     | 
| 
      
 1051 
     | 
    
         
            +
              # Clicks the Next button and instantiates the BeginAssessment Class.
         
     | 
| 
      
 1052 
     | 
    
         
            +
              def next
         
     | 
| 
      
 1053 
     | 
    
         
            +
                frm.button(:value=>"Next").click
         
     | 
| 
      
 1054 
     | 
    
         
            +
                BeginAssessment.new(@browser)
         
     | 
| 
      
 1055 
     | 
    
         
            +
              end
         
     | 
| 
      
 1056 
     | 
    
         
            +
             
     | 
| 
      
 1057 
     | 
    
         
            +
              # Clicks the Submit for Grading button and instantiates the ConfirmSubmission Class.
         
     | 
| 
      
 1058 
     | 
    
         
            +
              def submit_for_grading
         
     | 
| 
      
 1059 
     | 
    
         
            +
                frm.button(:value=>"Submit for Grading").click
         
     | 
| 
      
 1060 
     | 
    
         
            +
                ConfirmSubmission.new(@browser)
         
     | 
| 
      
 1061 
     | 
    
         
            +
              end
         
     | 
| 
       181 
1062 
     | 
    
         
             
            end
         
     | 
| 
       182 
1063 
     | 
    
         | 
| 
       183 
1064 
     | 
    
         
             
            # The confirmation page that appears when submitting an Assessment.
         
     | 
| 
       184 
1065 
     | 
    
         
             
            # The last step before actually submitting the the Assessment.
         
     | 
| 
       185 
1066 
     | 
    
         
             
            class ConfirmSubmission
         
     | 
| 
       186 
1067 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       187 
     | 
    
         
            -
              include  
     | 
| 
      
 1068 
     | 
    
         
            +
              include PageObject
         
     | 
| 
      
 1069 
     | 
    
         
            +
              # Clicks the Submit for Grading button and instantiates
         
     | 
| 
      
 1070 
     | 
    
         
            +
              # the SubmissionSummary Class.
         
     | 
| 
      
 1071 
     | 
    
         
            +
              def submit_for_grading
         
     | 
| 
      
 1072 
     | 
    
         
            +
                frm.button(:value=>"Submit for Grading").click
         
     | 
| 
      
 1073 
     | 
    
         
            +
                SubmissionSummary.new(@browser)
         
     | 
| 
      
 1074 
     | 
    
         
            +
              end
         
     | 
| 
      
 1075 
     | 
    
         
            +
             
     | 
| 
      
 1076 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 1077 
     | 
    
         
            +
                span(:validation, :class=>"validation", :frame=>frame)
         
     | 
| 
      
 1078 
     | 
    
         
            +
             
     | 
| 
      
 1079 
     | 
    
         
            +
              end
         
     | 
| 
       188 
1080 
     | 
    
         
             
            end
         
     | 
| 
       189 
1081 
     | 
    
         | 
| 
       190 
1082 
     | 
    
         
             
            # The summary page that appears when an Assessment has been submitted.
         
     | 
| 
       191 
1083 
     | 
    
         
             
            class SubmissionSummary
         
     | 
| 
       192 
1084 
     | 
    
         
             
              include ToolsMenu
         
     | 
| 
       193 
     | 
    
         
            -
              include  
     | 
| 
       194 
     | 
    
         
            -
             
     | 
| 
      
 1085 
     | 
    
         
            +
              include PageObject
         
     | 
| 
      
 1086 
     | 
    
         
            +
              # Clicks the Continue button and instantiates
         
     | 
| 
      
 1087 
     | 
    
         
            +
              # the TakeAssessmentList Class.
         
     | 
| 
      
 1088 
     | 
    
         
            +
              def continue
         
     | 
| 
      
 1089 
     | 
    
         
            +
                frm.button(:value=>"Continue").click
         
     | 
| 
      
 1090 
     | 
    
         
            +
                TakeAssessmentList.new(@browser)
         
     | 
| 
      
 1091 
     | 
    
         
            +
              end
         
     | 
| 
      
 1092 
     | 
    
         
            +
             
     | 
| 
      
 1093 
     | 
    
         
            +
              in_frame(:class=>"portletMainIframe") do |frame|
         
     | 
| 
      
 1094 
     | 
    
         
            +
                div(:summary_info, :class=>"tier1", :frame=>frame)
         
     | 
| 
      
 1095 
     | 
    
         
            +
             
     | 
| 
      
 1096 
     | 
    
         
            +
              end
         
     | 
| 
      
 1097 
     | 
    
         
            +
            end
         
     |