CSC/ECE 517 Spring 2016/Functional tests for assignment creation function

From Expertiza_Wiki
Jump to navigation Jump to search

Functional tests for assignment creation function

This page outlines the use tests for assignment creation using the Expertiza system

Structural Overview

Assignment creation in Expertiza provides a large number of options for users. Features come at the cost of complexity; this project is focused on creating testing methods to ensure that user interaction with the assignment interface remains stable and reliable.

Assignment creation is available from the Manage -> Assignments drop down on the expertiza site. Once an assignment is created it has 5 tabs for form entry. The remainder of this document will cover testing for each tab in more detail, the tabs are:

  • General
  • Topics
  • Rubrics
  • Review Strategy

General

In this section, the functional test includes assignment name, course, submission directory, description URL, "Has team?", "Has quiz?" and "Calibrated peer-review for training".

  • assignment name
    it "can set assginment name" do
      login_as("instructor6")
      visit '/assignments/new?private=0'
      expect(page).to have_content "Assignment name"
      fill_in "Assignment name:", with: 'assignment for test'
      click_button "Create"
      expect(Assignment.where(name: "assignment for test")).to exist
    end
  • course
    it "can select course" do
      login_as("instructor6")
      visit '/assignments/new?private=0'
      select('5', :from => 'assignment_form_assignment_course_id')
      click_button "Create"
    end
  • submission directory
    it "can set assginment Submission directory" do
      login_as("instructor6")
      visit '/assignments/new?private=0'
      fill_in "Assignment name:", with: 'assignment for test 2'
      expect(page).to have_content "Submission directory"
      fill_in "Submission directory:", with: 'Submission directory for test'
      click_button "Create"
      expect(Assignment.find(2).directory_path).to eq 'Submission directory for test'
    end
  • description URL
    it "can set assginment Description URL" do
      login_as("instructor6")
      visit '/assignments/new?private=0'
      fill_in "Assignment name:", with: 'assignment for test 3'
      expect(page).to have_content "Description URL"
      fill_in "Description URL:", with: 'Description URL for test'
      click_button "Create"
      expect(Assignment.find(2).spec_location).to eq 'Description URL for test'
    end
  • "Has team?"
    it "can Has teams and set team number" do
      login_as("instructor6")
      visit '/assignments/new?private=0'
      fill_in "Assignment name:", with: 'assignment for test 5'
      find('#team_assignment').set(true)
      expect(page).to have_content "Maximum number of members per team"
      expect(page).to have_content "Show teammate reviews"
      fill_in 'assignment_form_assignment_max_team_size', with: 4
      find('#assignment_form_assignment_show_teammate_reviews').set(true)
      click_button "Create"
      expect(Assignment.find(2).show_teammate_reviews).to eq true
    end
  • "Has quiz?"
    it "can save the number of quiz questions" do
      login_as("instructor6")
      visit '/assignments/new?private=0'
      fill_in "Assignment name:", with: '11'
      select('5', :from => 'assignment_form_assignment_course_id')
      find('#assignment_form_assignment_require_quiz').set(true)
      click_button "Create"
      visit '/assignments/2/edit'
      expect(page).to have_content "Number of Quiz questions"
    end
  • "Calibrated peer-review for training"
    it "can set Calibrated peer-view for training" do
      login_as("instructor6")
      visit '/assignments/new?private=0'
      fill_in "Assignment name:", with: 'assignment for test 4'
      find('#assignment_form_assignment_is_calibrated').set(true)
      click_button "Create"
      expect(Assignment.find(2).is_calibrated).to eq true
    end

Topics

In this section, functionality of "Edit topics" is thoroughly tested. Below are some of the code snippets of this testing module:

  • Edit topics content
    it "is able to see edit topics content correctly" do
      login_as("instructor6")
      visit 'assignments/1/edit#tab-2'
      expect(page).to have_content("Allow topic suggestions from students?")
      expect(page).to have_content("Enable bidding for topics?")
      expect(page).to have_content("Enable authors to review others working on same topic?")
      expect(page).to have_content("Allow reviewer to choose which topic to review?")
      expect(page).to have_content("Allow participants to create bookmarks? ")
      expect(page).to have_content("Hide all teams")
      expect(page).to have_content("New topic")
      expect(page).to have_content("Import Topics")
      expect(page).to have_content("Back")
      expect(page).to have_content("Save")
    end
  • Show/hide teams
  it "is able to show/hide teams" do
      login_as("instructor6")
      visit 'assignments/1/edit#tab-2'

      click_link('Hide all teams')

      expect(page).to have_content("Show all teams")

      click_link("Show all teams")
      expect(page).to have_content("Hide all teams")
    end

Rubrics

Rubrics are arranged into 3 rows of data named "Review", "Author Feedback", and "Teammate Review". Each row is handled under separate descriptions in order to allow quick and comprehensive testing for the seperate functions. Each row updates a subclass of the Questionnaire class. The Active Record hierarchy is:

  • Questionnaire
    • ReviewQuestionnaire
    • AuthorFeedbackQuestionnaire
    • TeammateReviewQuestionaire

The Questionnaire class is connected to the Assignment class via the AssignmentQuestionnaire class.

Review Strategy

In this module we have tested the functionality of the "Teammate Review" module. Some of the tests are given below:

  • Teammate Review
    it "should update questionnaire", js: true do
      login_as("instructor6")
      visit '/assignments/1/edit'
      find_link('Rubrics').click
      within("tr#questionnaire_table_TeammateReviewQuestionnaire") do
        select "TeammateReviewQuestionnaire2", :from => 'assignment_form[assignment_questionnaire][][questionnaire_id]'
      end
      click_button 'Save'
      expect(get_questionnaire("TeammateReviewQuestionnaire2")).to exist
    end
  • Notification limit
    it "should update notification limit", js: true do
      login_as("instructor6")
      visit '/assignments/1/edit'
      find_link('Rubrics').click
      within("tr#questionnaire_table_TeammateReviewQuestionnaire") do
        select "TeammateReviewQuestionnaire2", :from => 'assignment_form[assignment_questionnaire][][questionnaire_id]'
        fill_in 'assignment_form[assignment_questionnaire][][notification_limit]', :with => '50'
      end
      click_button 'Save'
      expect(get_questionnaire("TeammateReviewQuestionnaire2").first).to have_attributes(:notification_limit => 50)
    end