<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pjain15</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pjain15"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Pjain15"/>
	<updated>2026-06-30T18:07:20Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A2_Lightweight_Badging_System&amp;diff=112091</id>
		<title>CSC/ECE 517 Fall 2017/E17A2 Lightweight Badging System</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A2_Lightweight_Badging_System&amp;diff=112091"/>
		<updated>2017-11-07T00:45:10Z</updated>

		<summary type="html">&lt;p&gt;Pjain15: /* Requirement Specification */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Problem Statement=&lt;br /&gt;
To create a simple badging system for Expertiza such that the students can be badged when certain criteria are matched.&lt;br /&gt;
&lt;br /&gt;
Badging feature allows students to be badged on expertiza based on the matching of certain criteria. ‘Good Reviewer’ and ‘Good Teammate’ badges can be given to students based on the scores given to them by instructors or the other teammates.&lt;br /&gt;
 &lt;br /&gt;
A ‘Good Reviewer’ badge is assigned when a student gets review score of more than a particular threshold or more than 95 by default. &lt;br /&gt;
Similarly, a 'Good teammate' badge is assigned when the teammate review score is greater than a particular threshold, defaulted to 95.&lt;br /&gt;
The criterion to receive the badges are configurable for the instructors and can be changed for different tasks and assignments.&lt;br /&gt;
&lt;br /&gt;
=Requirement Specification=&lt;br /&gt;
1.Creating badges for 'Good Reviewer' and 'Good Teammate'&amp;lt;br&amp;gt;&lt;br /&gt;
2 Create a table named “badges” where the badges and their description can be stored.&lt;br /&gt;
&amp;lt;br&amp;gt;3.Create a mapping table named “assignment_badges”, for mapping badges with assignments and storing the specific thresholds&lt;br /&gt;
&amp;lt;br&amp;gt;4.Create a mapping table named “awarded_badges”, to map student with badges.&lt;br /&gt;
&amp;lt;br&amp;gt;5.Providing means to configure the badging criteria by adding 'Calibration' tab in Assignments/edit page.&lt;br /&gt;
&amp;lt;br&amp;gt;6.Adding badges in student/task list to allow the viewing of badges associated with students.&lt;br /&gt;
&amp;lt;br&amp;gt;7.Adding badges to participants/list for an instructor to view.&lt;br /&gt;
&amp;lt;br&amp;gt;8.Implement feature tests to verify the new feature addition.&lt;br /&gt;
&amp;lt;br&amp;gt;9.Adding hover feature on each badge to allow the viewer to read the description of the badge without taking up column width or height.&lt;br /&gt;
&lt;br /&gt;
= Team Contact =&lt;br /&gt;
&lt;br /&gt;
; MEMBERS:&lt;br /&gt;
&lt;br /&gt;
:Priyanka Jain: [mailto:pjain15@ncsu.edu pjain15@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
:Pushpendra Patel: [mailto:ppatel16@ncsu.edu ppatel16@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
:Tanay Kothari: [mailto:tkothar@ncsu.edu tkothar@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
:Timothy Dement: [mailto:tmdement@ncsu.edu tmdement@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
; MENTOR:&lt;br /&gt;
&lt;br /&gt;
:Zhewei Hu: [mailto:zhu6@ncsu.edu zhu6@ncsu.edu]&lt;/div&gt;</summary>
		<author><name>Pjain15</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A2_Lightweight_Badging_System&amp;diff=112085</id>
		<title>CSC/ECE 517 Fall 2017/E17A2 Lightweight Badging System</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A2_Lightweight_Badging_System&amp;diff=112085"/>
		<updated>2017-11-07T00:41:47Z</updated>

		<summary type="html">&lt;p&gt;Pjain15: /* Problem Statement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Problem Statement=&lt;br /&gt;
To create a simple badging system for Expertiza such that the students can be badged when certain criteria are matched.&lt;br /&gt;
&lt;br /&gt;
Badging feature allows students to be badged on expertiza based on the matching of certain criteria. ‘Good Reviewer’ and ‘Good Teammate’ badges can be given to students based on the scores given to them by instructors or the other teammates.&lt;br /&gt;
 &lt;br /&gt;
A ‘Good Reviewer’ badge is assigned when a student gets review score of more than a particular threshold or more than 95 by default. &lt;br /&gt;
Similarly, a 'Good teammate' badge is assigned when the teammate review score is greater than a particular threshold, defaulted to 95.&lt;br /&gt;
The criterion to receive the badges are configurable for the instructors and can be changed for different tasks and assignments.&lt;br /&gt;
&lt;br /&gt;
=Requirement Specification=&lt;br /&gt;
1.Creating badges for 'Good Reviewer' and 'Good Teammate'&amp;lt;br&amp;gt;&lt;br /&gt;
2 Create a table named “badges” where the badges and their description can be stored.&lt;br /&gt;
&amp;lt;br&amp;gt;3.Create a mapping table named “assignment_badges”, for mapping badges with assignments and storing the specific thresholds&lt;br /&gt;
&amp;lt;br&amp;gt;4.Create a mapping table named “awarded_badges”, to map student with badges.&lt;br /&gt;
&amp;lt;br&amp;gt;5.Providing means to configure the badging criteria by adding 'Calibration' tab in Assignments/edit page.&lt;br /&gt;
&amp;lt;br&amp;gt;6.Adding badges in student/task list to allow the viewing of badges associated with students.&lt;br /&gt;
&amp;lt;br&amp;gt;7.Adding badges to participants/list for an instructor to view.&lt;br /&gt;
&amp;lt;br&amp;gt;8.Implement feature tests to verify the new feature addition.&lt;br /&gt;
&lt;br /&gt;
= Team Contact =&lt;br /&gt;
&lt;br /&gt;
; MEMBERS:&lt;br /&gt;
&lt;br /&gt;
:Priyanka Jain: [mailto:pjain15@ncsu.edu pjain15@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
:Pushpendra Patel: [mailto:ppatel16@ncsu.edu ppatel16@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
:Tanay Kothari: [mailto:tkothar@ncsu.edu tkothar@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
:Timothy Dement: [mailto:tmdement@ncsu.edu tmdement@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
; MENTOR:&lt;br /&gt;
&lt;br /&gt;
:Zhewei Hu: [mailto:zhu6@ncsu.edu zhu6@ncsu.edu]&lt;/div&gt;</summary>
		<author><name>Pjain15</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A2_Lightweight_Badging_System&amp;diff=112066</id>
		<title>CSC/ECE 517 Fall 2017/E17A2 Lightweight Badging System</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A2_Lightweight_Badging_System&amp;diff=112066"/>
		<updated>2017-11-06T23:57:01Z</updated>

		<summary type="html">&lt;p&gt;Pjain15: /* Problem Statement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Problem Statement=&lt;br /&gt;
To create a simple badging system for Expertiza such that the students can be badged when certain criteria are matched.&lt;br /&gt;
&lt;br /&gt;
Badging feature allows students to be badged on expertiza based on the matching of certain criteria. ‘Good Reviewer’ and ‘Good Teammate’ badges can be given to students based on the scores given to them by instructors or the other teammates.&lt;br /&gt;
 &lt;br /&gt;
A ‘Good Reviewer’ badge is assigned when a student gets review score of more than a particular threshold or more than 95 by default. &lt;br /&gt;
Similarly, a 'Good teammate' badge is assigned when the teammate review score is greater than a particular threshold, defaulted to 95.&lt;br /&gt;
The criterion to receive the badges are configurable for the instructors and can be changed for different tasks and assignments.&lt;br /&gt;
&lt;br /&gt;
= Team Contact =&lt;br /&gt;
&lt;br /&gt;
; MEMBERS:&lt;br /&gt;
&lt;br /&gt;
:Priyanka Jain: [mailto:pjain15@ncsu.edu pjain15@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
:Pushpendra Patel: [mailto:ppatel16@ncsu.edu ppatel16@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
:Tanay Kothari: [mailto:tkothar@ncsu.edu tkothar@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
:Timothy Dement: [mailto:tmdement@ncsu.edu tmdement@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
; MENTOR:&lt;br /&gt;
&lt;br /&gt;
:Zhewei Hu: [mailto:zhu6@ncsu.edu zhu6@ncsu.edu]&lt;/div&gt;</summary>
		<author><name>Pjain15</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A2_Lightweight_Badging_System&amp;diff=112065</id>
		<title>CSC/ECE 517 Fall 2017/E17A2 Lightweight Badging System</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A2_Lightweight_Badging_System&amp;diff=112065"/>
		<updated>2017-11-06T23:56:34Z</updated>

		<summary type="html">&lt;p&gt;Pjain15: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Problem Statement=&lt;br /&gt;
To create a simple badging system for Expertiza such that the students can be badged when certain criteria are matched.&lt;br /&gt;
&lt;br /&gt;
Badging feature allows students to be badged on expertiza based on the matching of certain criteria. ‘Good Reviewer’ and ‘Good Teammate’ badges can be given to students based on the scores given to them by instructors or the other teammates.&lt;br /&gt;
 &lt;br /&gt;
A ‘Good Reviewer’ badge is assigned when a student gets review score of more than a particular threshold or more than 95 by default. Similarly, a good teammate badge is assigned when the teammate review score is greater than a particular threshold, defaulted to 95.&lt;br /&gt;
The criterion to receive the badges are configurable for the instructors and can be changed for different tasks and assignments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Team Contact =&lt;br /&gt;
&lt;br /&gt;
; MEMBERS:&lt;br /&gt;
&lt;br /&gt;
:Priyanka Jain: [mailto:pjain15@ncsu.edu pjain15@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
:Pushpendra Patel: [mailto:ppatel16@ncsu.edu ppatel16@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
:Tanay Kothari: [mailto:tkothar@ncsu.edu tkothar@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
:Timothy Dement: [mailto:tmdement@ncsu.edu tmdement@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
; MENTOR:&lt;br /&gt;
&lt;br /&gt;
:Zhewei Hu: [mailto:zhu6@ncsu.edu zhu6@ncsu.edu]&lt;/div&gt;</summary>
		<author><name>Pjain15</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_rubric_advice&amp;diff=111703</id>
		<title>CSC/ECE 517 Fall 2017/E1754 Feature test of rubric advice</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_rubric_advice&amp;diff=111703"/>
		<updated>2017-11-03T04:22:09Z</updated>

		<summary type="html">&lt;p&gt;Pjain15: /* Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application which provides a dashboard to the students where they can submit and peer-review assignments, projects, codes, and other such objects. It allows students to review each other’s work and improve their work upon this feedback. Rubric advice allows reviewers to see what characteristics of work merit a particular score.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The problem statement ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rubric advice lets a user see what criterion or characteristics of work merit a particular score. An instructor can retrieve peer review assignments and leave some advice or give scores based on some criteria. Similarly, students can log in and retrieve the rubric advice left by the instructor. We mocked the behavior of the user (both as an instructor and student) to see how different scenarios work, like modifying, saving and retrieving advice and building feature tests for it. The testing frameworks used for the same were Selenium and Capybara.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
An instructor when creating a questionnaire, can associate marks with comments which can enable a student to understand what score is appropriate for a particular work.&lt;br /&gt;
An instructor can subsequently edit or delete an advice.&lt;br /&gt;
A student can view and use this rubric advice when peer reviewing other's work.&lt;br /&gt;
Thus the test cases formed check if an instructor is able to:&lt;br /&gt;
&lt;br /&gt;
* Create a questionnaire&lt;br /&gt;
* Edit or delete an advice&lt;br /&gt;
Creating a rubric advice has not been added as a test case because both edit and delete advice make an instructor 'create' an advice. An additional test case to do the same would have  slowed down the testing process and hence is not advisable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Student Side:'''&lt;br /&gt;
A student, when filling a peer review should be able to see the rubric advice associated with a particular test score. We test this task through adding a test case in the peer_review_spec.rb since Peer Review is superset of the Rubric Advice feature as it is a task where a student uses the rubric advice and submit it.&lt;br /&gt;
&lt;br /&gt;
Files changed: peer_review_spec.rb&lt;br /&gt;
The test case checks if student is able to select a rubric advice that the instructor has created and then submit it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;able to view and use rubric advice&amp;quot;, :js =&amp;gt; true do&lt;br /&gt;
    load_questionnaire&lt;br /&gt;
    expect(page).to have_content &amp;quot;Show advice&amp;quot;&lt;br /&gt;
    page.find('#showAdivce_1').click&lt;br /&gt;
    expect(page).to have_content &amp;quot;5 - Good&amp;quot;&lt;br /&gt;
    page.find(&amp;quot;a&amp;quot;, :text =&amp;gt; &amp;quot;5 - Good&amp;quot;).click&lt;br /&gt;
    click_button &amp;quot;Save Review&amp;quot;&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your response was successfully saved.&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The existing code given creates the required environment for the test student. It sets up a team, assignment and other required elements for the test student to submit a review.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
before(:each) do&lt;br /&gt;
    create(:assignment, name: &amp;quot;TestAssignment&amp;quot;, directory_path: 'test_assignment')&lt;br /&gt;
    create_list(:participant, 3)&lt;br /&gt;
    create(:assignment_node)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;submission&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;review&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;metareview&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;drop_topic&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;signup&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;team_formation&amp;quot;)&lt;br /&gt;
    create(:deadline_right)&lt;br /&gt;
    create(:deadline_right, name: 'Late')&lt;br /&gt;
    create(:deadline_right, name: 'OK')&lt;br /&gt;
    create(:assignment_due_date, deadline_type: DeadlineType.where(name: 'review').first, due_at: Time.now.in_time_zone + 1.day)&lt;br /&gt;
    create(:topic)&lt;br /&gt;
    create(:topic, topic_name: &amp;quot;TestReview&amp;quot;)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).first)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).second)&lt;br /&gt;
    create(:assignment_team)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).third, team: AssignmentTeam.second)&lt;br /&gt;
    create(:signed_up_team)&lt;br /&gt;
    create(:signed_up_team, team_id: 2, topic: SignUpTopic.second)&lt;br /&gt;
    create(:assignment_questionnaire)&lt;br /&gt;
    create(:question)&lt;br /&gt;
    create(:question_advices)&lt;br /&gt;
   end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rubric advice is prepared in factory.rb with the following code addition . This allows our test Student to get a ready rubric advice that he can choose.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  factory :question_advices, class: QuestionAdvice do&lt;br /&gt;
    question_id 1&lt;br /&gt;
    score 5&lt;br /&gt;
    advice &amp;quot;Good work&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Instructor side:'''&lt;br /&gt;
&lt;br /&gt;
Edit a certain review rubric, and add advice to it.&lt;br /&gt;
Test that when advice is added for a particular criterion, the advice can be retrieved and that it is exactly the advice that was added. Files added: review_rubric_spec.rb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;Edit a rubric advice&amp;quot; do&lt;br /&gt;
    it &amp;quot;is able to edit a review rubric advice&amp;quot; do&lt;br /&gt;
      # creating a new rubric advice&lt;br /&gt;
      load_question 'Criterion'&lt;br /&gt;
      click_button &amp;quot;Edit/View advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('Edit an existing questionnaire')&lt;br /&gt;
      # setting intital advice in the field&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;Initial advice&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
      expect(page).to have_content('Initial advice')&lt;br /&gt;
      # editing a review rubric - Setting any element with new data&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;Edited the advice&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
      expect(page).to have_content('Edited the advice')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  describe &amp;quot;Remove a rubric advice&amp;quot; do&lt;br /&gt;
    it &amp;quot;should be able to delete a rubric advice&amp;quot; do&lt;br /&gt;
      load_question 'Criterion'&lt;br /&gt;
      click_button &amp;quot;Edit/View advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('Edit an existing questionnaire')&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;Initial advice&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
      expect(page).to have_content('Initial advice')&lt;br /&gt;
      # edit review advice to set to blank i.e. delete rubric advice&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apart from the major test case for Rubric advice, it is essential to test if the logged in instructor is an authorized instructor. To test this, we have added the following test in review_rubric_spec.rb. &lt;br /&gt;
Also, the task of loading the questionnaire and the question types is implemented in separate methods to allow reuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
include InstructorInterfaceHelperSpec&lt;br /&gt;
&lt;br /&gt;
# Feature test of rubric advice&lt;br /&gt;
describe &amp;quot;Edit rubric advice&amp;quot; do&lt;br /&gt;
  before(:each) do&lt;br /&gt;
    assignment_setup&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Login test&lt;br /&gt;
  describe &amp;quot;Login as instructor&amp;quot; do&lt;br /&gt;
    it &amp;quot;logs in with valid username and password&amp;quot; do&lt;br /&gt;
      login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
      visit '/tree_display/list'&lt;br /&gt;
      expect(page).to have_content(&amp;quot;Manage content&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    it &amp;quot;logs in with invalid username and password&amp;quot; do&lt;br /&gt;
      visit root_path&lt;br /&gt;
      fill_in 'login_name', with: 'instructor6'&lt;br /&gt;
      fill_in 'login_password', with: 'wrongpassword'&lt;br /&gt;
      click_button 'SIGN IN'&lt;br /&gt;
      expect(page).to have_text('Your username or password is incorrect.')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def load_questionnaire&lt;br /&gt;
    login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
    visit '/questionnaires/new?model=ReviewQuestionnaire&amp;amp;private=0'&lt;br /&gt;
    fill_in('questionnaire_name', with: 'DummyReview')&lt;br /&gt;
    fill_in('questionnaire_min_question_score', with: '0')&lt;br /&gt;
    fill_in('questionnaire_max_question_score', with: '5')&lt;br /&gt;
    select('no', from: 'questionnaire_private')&lt;br /&gt;
    click_button &amp;quot;Create&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def load_question question_type&lt;br /&gt;
    load_questionnaire&lt;br /&gt;
    fill_in('question_total_num', with: '1')&lt;br /&gt;
    select(question_type, from: 'question_type')&lt;br /&gt;
    click_button &amp;quot;Add&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Factories.rb'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
factory :question_advices, class: QuestionAdvice do&lt;br /&gt;
    question_id 1&lt;br /&gt;
    score 5&lt;br /&gt;
    advice &amp;quot;Good work&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It associates a merit score with each type of advice. As an example, 5 denotes 'very good'.&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
&lt;br /&gt;
* [https://youtu.be/0a5FUXhJHBQ  Demo Video of Testing]&lt;br /&gt;
* Build passing with Coverage increase of +0.3%&lt;br /&gt;
&lt;br /&gt;
[[File:coverage.jpg]][[File:BuildPass1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Testing Instructions ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Clone Expertiza on local Repository]&lt;br /&gt;
* [http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation#Development_Environment_Setup_Guides Setup expertiza on your local machine]&lt;br /&gt;
* Run the test cases: &lt;br /&gt;
&amp;lt;pre&amp;gt;spec/features/peer_review_spec.rb &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;spec/features/review_rubric_spec.rb using [https://relishapp.com/rspec Rspec]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/rcoutin/expertiza Forked Github Expertiza Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza Github Expertiza Repository]&lt;br /&gt;
* [https://relishapp.com/rspec Rspec Documentation]&lt;/div&gt;</summary>
		<author><name>Pjain15</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:BuildPass1.jpg&amp;diff=111702</id>
		<title>File:BuildPass1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:BuildPass1.jpg&amp;diff=111702"/>
		<updated>2017-11-03T04:21:13Z</updated>

		<summary type="html">&lt;p&gt;Pjain15: Travis Build Pass&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Travis Build Pass&lt;/div&gt;</summary>
		<author><name>Pjain15</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:BuildPass.JPG&amp;diff=111698</id>
		<title>File:BuildPass.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:BuildPass.JPG&amp;diff=111698"/>
		<updated>2017-11-03T04:16:56Z</updated>

		<summary type="html">&lt;p&gt;Pjain15: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pjain15</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_rubric_advice&amp;diff=111696</id>
		<title>CSC/ECE 517 Fall 2017/E1754 Feature test of rubric advice</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_rubric_advice&amp;diff=111696"/>
		<updated>2017-11-03T04:15:27Z</updated>

		<summary type="html">&lt;p&gt;Pjain15: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application which provides a dashboard to the students where they can submit and peer-review assignments, projects, codes, and other such objects. It allows students to review each other’s work and improve their work upon this feedback. Rubric advice allows reviewers to see what characteristics of work merit a particular score.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The problem statement ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rubric advice lets a user see what criterion or characteristics of work merit a particular score. An instructor can retrieve peer review assignments and leave some advice or give scores based on some criteria. Similarly, students can log in and retrieve the rubric advice left by the instructor. We mocked the behavior of the user (both as an instructor and student) to see how different scenarios work, like modifying, saving and retrieving advice and building feature tests for it. The testing frameworks used for the same were Selenium and Capybara.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
An instructor when creating a questionnaire, can associate marks with comments which can enable a student to understand what score is appropriate for a particular work.&lt;br /&gt;
An instructor can subsequently edit or delete an advice.&lt;br /&gt;
A student can view and use this rubric advice when peer reviewing other's work.&lt;br /&gt;
Thus the test cases formed check if an instructor is able to:&lt;br /&gt;
&lt;br /&gt;
* Create a questionnaire&lt;br /&gt;
* Edit or delete an advice&lt;br /&gt;
Creating a rubric advice has not been added as a test case because both edit and delete advice make an instructor 'create' an advice. An additional test case to do the same would have  slowed down the testing process and hence is not advisable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Student Side:'''&lt;br /&gt;
A student, when filling a peer review should be able to see the rubric advice associated with a particular test score. We test this task through adding a test case in the peer_review_spec.rb since Peer Review is superset of the Rubric Advice feature as it is a task where a student uses the rubric advice and submit it.&lt;br /&gt;
&lt;br /&gt;
Files changed: peer_review_spec.rb&lt;br /&gt;
The test case checks if student is able to select a rubric advice that the instructor has created and then submit it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;able to view and use rubric advice&amp;quot;, :js =&amp;gt; true do&lt;br /&gt;
    load_questionnaire&lt;br /&gt;
    expect(page).to have_content &amp;quot;Show advice&amp;quot;&lt;br /&gt;
    page.find('#showAdivce_1').click&lt;br /&gt;
    expect(page).to have_content &amp;quot;5 - Good&amp;quot;&lt;br /&gt;
    page.find(&amp;quot;a&amp;quot;, :text =&amp;gt; &amp;quot;5 - Good&amp;quot;).click&lt;br /&gt;
    click_button &amp;quot;Save Review&amp;quot;&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your response was successfully saved.&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The existing code given creates the required environment for the test student. It sets up a team, assignment and other required elements for the test student to submit a review.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
before(:each) do&lt;br /&gt;
    create(:assignment, name: &amp;quot;TestAssignment&amp;quot;, directory_path: 'test_assignment')&lt;br /&gt;
    create_list(:participant, 3)&lt;br /&gt;
    create(:assignment_node)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;submission&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;review&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;metareview&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;drop_topic&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;signup&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;team_formation&amp;quot;)&lt;br /&gt;
    create(:deadline_right)&lt;br /&gt;
    create(:deadline_right, name: 'Late')&lt;br /&gt;
    create(:deadline_right, name: 'OK')&lt;br /&gt;
    create(:assignment_due_date, deadline_type: DeadlineType.where(name: 'review').first, due_at: Time.now.in_time_zone + 1.day)&lt;br /&gt;
    create(:topic)&lt;br /&gt;
    create(:topic, topic_name: &amp;quot;TestReview&amp;quot;)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).first)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).second)&lt;br /&gt;
    create(:assignment_team)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).third, team: AssignmentTeam.second)&lt;br /&gt;
    create(:signed_up_team)&lt;br /&gt;
    create(:signed_up_team, team_id: 2, topic: SignUpTopic.second)&lt;br /&gt;
    create(:assignment_questionnaire)&lt;br /&gt;
    create(:question)&lt;br /&gt;
    create(:question_advices)&lt;br /&gt;
   end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rubric advice is prepared in factory.rb with the following code addition . This allows our test Student to get a ready rubric advice that he can choose.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  factory :question_advices, class: QuestionAdvice do&lt;br /&gt;
    question_id 1&lt;br /&gt;
    score 5&lt;br /&gt;
    advice &amp;quot;Good work&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Instructor side:'''&lt;br /&gt;
&lt;br /&gt;
Edit a certain review rubric, and add advice to it.&lt;br /&gt;
Test that when advice is added for a particular criterion, the advice can be retrieved and that it is exactly the advice that was added. Files added: review_rubric_spec.rb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;Edit a rubric advice&amp;quot; do&lt;br /&gt;
    it &amp;quot;is able to edit a review rubric advice&amp;quot; do&lt;br /&gt;
      # creating a new rubric advice&lt;br /&gt;
      load_question 'Criterion'&lt;br /&gt;
      click_button &amp;quot;Edit/View advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('Edit an existing questionnaire')&lt;br /&gt;
      # setting intital advice in the field&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;Initial advice&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
      expect(page).to have_content('Initial advice')&lt;br /&gt;
      # editing a review rubric - Setting any element with new data&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;Edited the advice&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
      expect(page).to have_content('Edited the advice')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  describe &amp;quot;Remove a rubric advice&amp;quot; do&lt;br /&gt;
    it &amp;quot;should be able to delete a rubric advice&amp;quot; do&lt;br /&gt;
      load_question 'Criterion'&lt;br /&gt;
      click_button &amp;quot;Edit/View advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('Edit an existing questionnaire')&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;Initial advice&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
      expect(page).to have_content('Initial advice')&lt;br /&gt;
      # edit review advice to set to blank i.e. delete rubric advice&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apart from the major test case for Rubric advice, it is essential to test if the logged in instructor is an authorized instructor. To test this, we have added the following test in review_rubric_spec.rb. &lt;br /&gt;
Also, the task of loading the questionnaire and the question types is implemented in separate methods to allow reuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
include InstructorInterfaceHelperSpec&lt;br /&gt;
&lt;br /&gt;
# Feature test of rubric advice&lt;br /&gt;
describe &amp;quot;Edit rubric advice&amp;quot; do&lt;br /&gt;
  before(:each) do&lt;br /&gt;
    assignment_setup&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Login test&lt;br /&gt;
  describe &amp;quot;Login as instructor&amp;quot; do&lt;br /&gt;
    it &amp;quot;logs in with valid username and password&amp;quot; do&lt;br /&gt;
      login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
      visit '/tree_display/list'&lt;br /&gt;
      expect(page).to have_content(&amp;quot;Manage content&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    it &amp;quot;logs in with invalid username and password&amp;quot; do&lt;br /&gt;
      visit root_path&lt;br /&gt;
      fill_in 'login_name', with: 'instructor6'&lt;br /&gt;
      fill_in 'login_password', with: 'wrongpassword'&lt;br /&gt;
      click_button 'SIGN IN'&lt;br /&gt;
      expect(page).to have_text('Your username or password is incorrect.')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def load_questionnaire&lt;br /&gt;
    login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
    visit '/questionnaires/new?model=ReviewQuestionnaire&amp;amp;private=0'&lt;br /&gt;
    fill_in('questionnaire_name', with: 'DummyReview')&lt;br /&gt;
    fill_in('questionnaire_min_question_score', with: '0')&lt;br /&gt;
    fill_in('questionnaire_max_question_score', with: '5')&lt;br /&gt;
    select('no', from: 'questionnaire_private')&lt;br /&gt;
    click_button &amp;quot;Create&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def load_question question_type&lt;br /&gt;
    load_questionnaire&lt;br /&gt;
    fill_in('question_total_num', with: '1')&lt;br /&gt;
    select(question_type, from: 'question_type')&lt;br /&gt;
    click_button &amp;quot;Add&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Factories.rb'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
factory :question_advices, class: QuestionAdvice do&lt;br /&gt;
    question_id 1&lt;br /&gt;
    score 5&lt;br /&gt;
    advice &amp;quot;Good work&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It associates a merit score with each type of advice. As an example, 5 denotes 'very good'.&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
&lt;br /&gt;
* [https://youtu.be/0a5FUXhJHBQ  Demo Video of Testing]&lt;br /&gt;
* Build passing with Coverage increase of +0.3%&lt;br /&gt;
&lt;br /&gt;
[[File:coverage.jpg]][[File:BuildPass.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Testing Instructions ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Clone Expertiza on local Repository]&lt;br /&gt;
* [http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation#Development_Environment_Setup_Guides Setup expertiza on your local machine]&lt;br /&gt;
* Run the test cases: &lt;br /&gt;
&amp;lt;pre&amp;gt;spec/features/peer_review_spec.rb &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;spec/features/review_rubric_spec.rb using [https://relishapp.com/rspec Rspec]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/rcoutin/expertiza Forked Github Expertiza Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza Github Expertiza Repository]&lt;br /&gt;
* [https://relishapp.com/rspec Rspec Documentation]&lt;/div&gt;</summary>
		<author><name>Pjain15</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_rubric_advice&amp;diff=111693</id>
		<title>CSC/ECE 517 Fall 2017/E1754 Feature test of rubric advice</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_rubric_advice&amp;diff=111693"/>
		<updated>2017-11-03T04:04:48Z</updated>

		<summary type="html">&lt;p&gt;Pjain15: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application which provides a dashboard to the students where they can submit and peer-review assignments, projects, codes, and other such objects. It allows students to review each other’s work and improve their work upon this feedback. Rubric advice allows reviewers to see what characteristics of work merit a particular score.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The problem statement ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rubric advice lets a user see what criterion or characteristics of work merit a particular score. An instructor can retrieve peer review assignments and leave some advice or give scores based on some criteria. Similarly, students can log in and retrieve the rubric advice left by the instructor. We mocked the behavior of the user (both as an instructor and student) to see how different scenarios work, like modifying, saving and retrieving advice and building feature tests for it. The testing frameworks used for the same were Selenium and Capybara.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
An instructor when creating a questionnaire, can associate marks with comments which can enable a student to understand what score is appropriate for a particular work.&lt;br /&gt;
An instructor can subsequently edit or delete an advice.&lt;br /&gt;
A student can view and use this rubric advice when peer reviewing other's work.&lt;br /&gt;
Thus the test cases formed check if an instructor is able to:&lt;br /&gt;
&lt;br /&gt;
* Create a questionnaire&lt;br /&gt;
* Edit or delete an advice&lt;br /&gt;
Creating a rubric advice has not been added as a test case because both edit and delete advice make an instructor 'create' an advice. An additional test case to do the same would have  slowed down the testing process and hence is not advisable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Student Side:'''&lt;br /&gt;
A student, when filling a peer review should be able to see the rubric advice associated with a particular test score. We test this task through adding a test case in the peer_review_spec.rb since Peer Review is superset of the Rubric Advice feature as it is a task where a student uses the rubric advice and submit it.&lt;br /&gt;
&lt;br /&gt;
Files changed: peer_review_spec.rb&lt;br /&gt;
The test case checks if student is able to select a rubric advice that the instructor has created and then submit it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;able to view and use rubric advice&amp;quot;, :js =&amp;gt; true do&lt;br /&gt;
    load_questionnaire&lt;br /&gt;
    expect(page).to have_content &amp;quot;Show advice&amp;quot;&lt;br /&gt;
    page.find('#showAdivce_1').click&lt;br /&gt;
    expect(page).to have_content &amp;quot;5 - Good&amp;quot;&lt;br /&gt;
    page.find(&amp;quot;a&amp;quot;, :text =&amp;gt; &amp;quot;5 - Good&amp;quot;).click&lt;br /&gt;
    click_button &amp;quot;Save Review&amp;quot;&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your response was successfully saved.&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The existing code given creates the required environment for the test student. It sets up a team, assignment and other required elements for the test student to submit a review.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
before(:each) do&lt;br /&gt;
    create(:assignment, name: &amp;quot;TestAssignment&amp;quot;, directory_path: 'test_assignment')&lt;br /&gt;
    create_list(:participant, 3)&lt;br /&gt;
    create(:assignment_node)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;submission&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;review&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;metareview&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;drop_topic&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;signup&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;team_formation&amp;quot;)&lt;br /&gt;
    create(:deadline_right)&lt;br /&gt;
    create(:deadline_right, name: 'Late')&lt;br /&gt;
    create(:deadline_right, name: 'OK')&lt;br /&gt;
    create(:assignment_due_date, deadline_type: DeadlineType.where(name: 'review').first, due_at: Time.now.in_time_zone + 1.day)&lt;br /&gt;
    create(:topic)&lt;br /&gt;
    create(:topic, topic_name: &amp;quot;TestReview&amp;quot;)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).first)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).second)&lt;br /&gt;
    create(:assignment_team)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).third, team: AssignmentTeam.second)&lt;br /&gt;
    create(:signed_up_team)&lt;br /&gt;
    create(:signed_up_team, team_id: 2, topic: SignUpTopic.second)&lt;br /&gt;
    create(:assignment_questionnaire)&lt;br /&gt;
    create(:question)&lt;br /&gt;
    create(:question_advices)&lt;br /&gt;
   end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rubric advice is prepared in factory.rb with the following code addition . This allows our test Student to get a ready rubric advice that he can choose.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  factory :question_advices, class: QuestionAdvice do&lt;br /&gt;
    question_id 1&lt;br /&gt;
    score 5&lt;br /&gt;
    advice &amp;quot;Good work&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Instructor side:'''&lt;br /&gt;
&lt;br /&gt;
Edit a certain review rubric, and add advice to it.&lt;br /&gt;
Test that when advice is added for a particular criterion, the advice can be retrieved and that it is exactly the advice that was added. Files added: review_rubric_spec.rb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;Edit a rubric advice&amp;quot; do&lt;br /&gt;
    it &amp;quot;is able to edit a review rubric advice&amp;quot; do&lt;br /&gt;
      # creating a new rubric advice&lt;br /&gt;
      load_question 'Criterion'&lt;br /&gt;
      click_button &amp;quot;Edit/View advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('Edit an existing questionnaire')&lt;br /&gt;
      # setting intital advice in the field&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;Initial advice&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
      expect(page).to have_content('Initial advice')&lt;br /&gt;
      # editing a review rubric - Setting any element with new data&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;Edited the advice&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
      expect(page).to have_content('Edited the advice')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  describe &amp;quot;Remove a rubric advice&amp;quot; do&lt;br /&gt;
    it &amp;quot;should be able to delete a rubric advice&amp;quot; do&lt;br /&gt;
      load_question 'Criterion'&lt;br /&gt;
      click_button &amp;quot;Edit/View advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('Edit an existing questionnaire')&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;Initial advice&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
      expect(page).to have_content('Initial advice')&lt;br /&gt;
      # edit review advice to set to blank i.e. delete rubric advice&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apart from the major test case for Rubric advice, it is essential to test if the logged in instructor is an authorized instructor. To test this, we have added the following test in review_rubric_spec.rb. &lt;br /&gt;
Also, the task of loading the questionnaire and the question types is implemented in separate methods to allow reuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
include InstructorInterfaceHelperSpec&lt;br /&gt;
&lt;br /&gt;
# Feature test of rubric advice&lt;br /&gt;
describe &amp;quot;Edit rubric advice&amp;quot; do&lt;br /&gt;
  before(:each) do&lt;br /&gt;
    assignment_setup&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Login test&lt;br /&gt;
  describe &amp;quot;Login as instructor&amp;quot; do&lt;br /&gt;
    it &amp;quot;logs in with valid username and password&amp;quot; do&lt;br /&gt;
      login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
      visit '/tree_display/list'&lt;br /&gt;
      expect(page).to have_content(&amp;quot;Manage content&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    it &amp;quot;logs in with invalid username and password&amp;quot; do&lt;br /&gt;
      visit root_path&lt;br /&gt;
      fill_in 'login_name', with: 'instructor6'&lt;br /&gt;
      fill_in 'login_password', with: 'wrongpassword'&lt;br /&gt;
      click_button 'SIGN IN'&lt;br /&gt;
      expect(page).to have_text('Your username or password is incorrect.')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def load_questionnaire&lt;br /&gt;
    login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
    visit '/questionnaires/new?model=ReviewQuestionnaire&amp;amp;private=0'&lt;br /&gt;
    fill_in('questionnaire_name', with: 'DummyReview')&lt;br /&gt;
    fill_in('questionnaire_min_question_score', with: '0')&lt;br /&gt;
    fill_in('questionnaire_max_question_score', with: '5')&lt;br /&gt;
    select('no', from: 'questionnaire_private')&lt;br /&gt;
    click_button &amp;quot;Create&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def load_question question_type&lt;br /&gt;
    load_questionnaire&lt;br /&gt;
    fill_in('question_total_num', with: '1')&lt;br /&gt;
    select(question_type, from: 'question_type')&lt;br /&gt;
    click_button &amp;quot;Add&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Factories.rb'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
factory :question_advices, class: QuestionAdvice do&lt;br /&gt;
    question_id 1&lt;br /&gt;
    score 5&lt;br /&gt;
    advice &amp;quot;Good work&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It associates a merit score with each type of advice. As an example, 5 denotes 'very good'.&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
&lt;br /&gt;
* [https://youtu.be/0a5FUXhJHBQ  Demo Video of Testing]&lt;br /&gt;
* Build passing with Coverage increase of +0.3%&lt;br /&gt;
&lt;br /&gt;
[[File:coverage.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Testing Instructions ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Clone Expertiza on local Repository]&lt;br /&gt;
* [http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation#Development_Environment_Setup_Guides Setup expertiza on your local machine]&lt;br /&gt;
* Run the test cases: &lt;br /&gt;
&amp;lt;pre&amp;gt;spec/features/peer_review_spec.rb &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;spec/features/review_rubric_spec.rb using [https://relishapp.com/rspec Rspec]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/rcoutin/expertiza Forked Github Expertiza Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza Github Expertiza Repository]&lt;br /&gt;
* [https://relishapp.com/rspec Rspec Documentation]&lt;/div&gt;</summary>
		<author><name>Pjain15</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_rubric_advice&amp;diff=111686</id>
		<title>CSC/ECE 517 Fall 2017/E1754 Feature test of rubric advice</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_rubric_advice&amp;diff=111686"/>
		<updated>2017-11-03T03:56:59Z</updated>

		<summary type="html">&lt;p&gt;Pjain15: /* Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application which provides a dashboard to the students where they can submit and peer-review assignments, projects, codes, and other such objects. It allows students to review each other’s work and improve their work upon this feedback. Rubric advice allows reviewers to see what characteristics of work merit a particular score.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The problem statement ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rubric advice lets a user see what criterion or characteristics of work merit a particular score. An instructor can retrieve peer review assignments and leave some advice or give scores based on some criteria. Similarly, students can log in and retrieve the rubric advice left by the instructor. We mocked the behavior of the user (both as an instructor and student) to see how different scenarios work, like modifying, saving and retrieving advice and building feature tests for it. The testing frameworks used for the same were Selenium and Capybara.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
An instructor when creating a questionnaire, can associate marks with comments which can enable a student to understand what score is appropriate for a particular work.&lt;br /&gt;
An instructor can subsequently edit or delete an advice.&lt;br /&gt;
A student can view and use this rubric advice when peer reviewing other's work.&lt;br /&gt;
Thus the test cases formed check if an instructor is able to:&lt;br /&gt;
* correctly log in&lt;br /&gt;
* create a questionnaire&lt;br /&gt;
* edit or delete an advice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Student Side:'''&lt;br /&gt;
A student, when filling a peer review should be able to see the rubric advice associated with a particular test score. We test this task through adding a test case in the peer_review_spec.rb since Peer Review is superset of the Rubric Advice feature as it is a task where a student uses the rubric advice and submit it.&lt;br /&gt;
&lt;br /&gt;
Files changed: peer_review_spec.rb&lt;br /&gt;
The test case checks if student is able to select a rubric advice that the instructor has created and then submit it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;able to view and use rubric advice&amp;quot;, :js =&amp;gt; true do&lt;br /&gt;
    load_questionnaire&lt;br /&gt;
    expect(page).to have_content &amp;quot;Show advice&amp;quot;&lt;br /&gt;
    page.find('#showAdivce_1').click&lt;br /&gt;
    expect(page).to have_content &amp;quot;5 - Good&amp;quot;&lt;br /&gt;
    page.find(&amp;quot;a&amp;quot;, :text =&amp;gt; &amp;quot;5 - Good&amp;quot;).click&lt;br /&gt;
    click_button &amp;quot;Save Review&amp;quot;&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your response was successfully saved.&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The existing code given creates the required environment for the test student. It sets up a team, assignment and other required elements for the test student to submit a review.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
before(:each) do&lt;br /&gt;
    create(:assignment, name: &amp;quot;TestAssignment&amp;quot;, directory_path: 'test_assignment')&lt;br /&gt;
    create_list(:participant, 3)&lt;br /&gt;
    create(:assignment_node)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;submission&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;review&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;metareview&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;drop_topic&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;signup&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;team_formation&amp;quot;)&lt;br /&gt;
    create(:deadline_right)&lt;br /&gt;
    create(:deadline_right, name: 'Late')&lt;br /&gt;
    create(:deadline_right, name: 'OK')&lt;br /&gt;
    create(:assignment_due_date, deadline_type: DeadlineType.where(name: 'review').first, due_at: Time.now.in_time_zone + 1.day)&lt;br /&gt;
    create(:topic)&lt;br /&gt;
    create(:topic, topic_name: &amp;quot;TestReview&amp;quot;)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).first)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).second)&lt;br /&gt;
    create(:assignment_team)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).third, team: AssignmentTeam.second)&lt;br /&gt;
    create(:signed_up_team)&lt;br /&gt;
    create(:signed_up_team, team_id: 2, topic: SignUpTopic.second)&lt;br /&gt;
    create(:assignment_questionnaire)&lt;br /&gt;
    create(:question)&lt;br /&gt;
    create(:question_advices)&lt;br /&gt;
   end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rubric advice is prepared in factory.rb with the following code addition . This allows our test Student to get a ready rubric advice that he can choose.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  factory :question_advices, class: QuestionAdvice do&lt;br /&gt;
    question_id 1&lt;br /&gt;
    score 5&lt;br /&gt;
    advice &amp;quot;Good work&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Instructor side:'''&lt;br /&gt;
&lt;br /&gt;
Edit a certain review rubric, and add advice to it.&lt;br /&gt;
Test that when advice is added for a particular criterion, the advice can be retrieved and that it is exactly the advice that was added. Files added: review_rubric_spec.rb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;Edit a rubric advice&amp;quot; do&lt;br /&gt;
    it &amp;quot;is able to edit a review rubric advice&amp;quot; do&lt;br /&gt;
      # creating a new rubric advice&lt;br /&gt;
      load_question 'Criterion'&lt;br /&gt;
      click_button &amp;quot;Edit/View advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('Edit an existing questionnaire')&lt;br /&gt;
      # setting intital advice in the field&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;Initial advice&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
      expect(page).to have_content('Initial advice')&lt;br /&gt;
      # editing a review rubric - Setting any element with new data&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;Edited the advice&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
      expect(page).to have_content('Edited the advice')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  describe &amp;quot;Remove a rubric advice&amp;quot; do&lt;br /&gt;
    it &amp;quot;should be able to delete a rubric advice&amp;quot; do&lt;br /&gt;
      load_question 'Criterion'&lt;br /&gt;
      click_button &amp;quot;Edit/View advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('Edit an existing questionnaire')&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;Initial advice&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
      expect(page).to have_content('Initial advice')&lt;br /&gt;
      # edit review advice to set to blank i.e. delete rubric advice&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apart from the major test case for Rubric advice, it is essential to test if the logged in instructor is an authorized instructor. To test this, we have added the following test in review_rubric_spec.rb. &lt;br /&gt;
Also, the task of loading the questionnaire and the question types is implemented in separate methods to allow reuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
include InstructorInterfaceHelperSpec&lt;br /&gt;
&lt;br /&gt;
# Feature test of rubric advice&lt;br /&gt;
describe &amp;quot;Edit rubric advice&amp;quot; do&lt;br /&gt;
  before(:each) do&lt;br /&gt;
    assignment_setup&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Login test&lt;br /&gt;
  describe &amp;quot;Login as instructor&amp;quot; do&lt;br /&gt;
    it &amp;quot;logs in with valid username and password&amp;quot; do&lt;br /&gt;
      login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
      visit '/tree_display/list'&lt;br /&gt;
      expect(page).to have_content(&amp;quot;Manage content&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    it &amp;quot;logs in with invalid username and password&amp;quot; do&lt;br /&gt;
      visit root_path&lt;br /&gt;
      fill_in 'login_name', with: 'instructor6'&lt;br /&gt;
      fill_in 'login_password', with: 'wrongpassword'&lt;br /&gt;
      click_button 'SIGN IN'&lt;br /&gt;
      expect(page).to have_text('Your username or password is incorrect.')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def load_questionnaire&lt;br /&gt;
    login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
    visit '/questionnaires/new?model=ReviewQuestionnaire&amp;amp;private=0'&lt;br /&gt;
    fill_in('questionnaire_name', with: 'DummyReview')&lt;br /&gt;
    fill_in('questionnaire_min_question_score', with: '0')&lt;br /&gt;
    fill_in('questionnaire_max_question_score', with: '5')&lt;br /&gt;
    select('no', from: 'questionnaire_private')&lt;br /&gt;
    click_button &amp;quot;Create&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def load_question question_type&lt;br /&gt;
    load_questionnaire&lt;br /&gt;
    fill_in('question_total_num', with: '1')&lt;br /&gt;
    select(question_type, from: 'question_type')&lt;br /&gt;
    click_button &amp;quot;Add&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Factories.rb'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
factory :question_advices, class: QuestionAdvice do&lt;br /&gt;
    question_id 1&lt;br /&gt;
    score 5&lt;br /&gt;
    advice &amp;quot;Good work&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It associates a merit score with each type of advice. As an example, 5 denotes 'very good'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
&lt;br /&gt;
* [https://youtu.be/0a5FUXhJHBQ  Demo Video of Testing]&lt;br /&gt;
* Build passing with Coverage increase of +0.3%&lt;br /&gt;
&lt;br /&gt;
[[File:coverage.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Testing Instructions ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Clone Expertiza on local Repository]&lt;br /&gt;
* [http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation#Development_Environment_Setup_Guides Setup expertiza on your local machine]&lt;br /&gt;
* Run the test cases: &lt;br /&gt;
&amp;lt;pre&amp;gt;spec/features/peer_review_spec.rb &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;spec/features/review_rubric_spec.rb using [https://relishapp.com/rspec Rspec]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/rcoutin/expertiza Forked Github Expertiza Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza Github Expertiza Repository]&lt;br /&gt;
* [https://relishapp.com/rspec Rspec Documentation]&lt;/div&gt;</summary>
		<author><name>Pjain15</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_rubric_advice&amp;diff=111684</id>
		<title>CSC/ECE 517 Fall 2017/E1754 Feature test of rubric advice</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_rubric_advice&amp;diff=111684"/>
		<updated>2017-11-03T03:53:05Z</updated>

		<summary type="html">&lt;p&gt;Pjain15: /* Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application which provides a dashboard to the students where they can submit and peer-review assignments, projects, codes, and other such objects. It allows students to review each other’s work and improve their work upon this feedback. Rubric advice allows reviewers to see what characteristics of work merit a particular score.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The problem statement ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rubric advice lets a user see what criterion or characteristics of work merit a particular score. An instructor can retrieve peer review assignments and leave some advice or give scores based on some criteria. Similarly, students can log in and retrieve the rubric advice left by the instructor. We mocked the behavior of the user (both as an instructor and student) to see how different scenarios work, like modifying, saving and retrieving advice and building feature tests for it. The testing frameworks used for the same were Selenium and Capybara.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
An instructor when creating a questionnaire, can associate marks with comments which can enable a student to understand what score is appropriate for a particular work.&lt;br /&gt;
An instructor can subsequently edit or delete an advice.&lt;br /&gt;
A student can view and use this rubric advice when peer reviewing other's work.&lt;br /&gt;
Thus the test cases formed check if an instructor is able to:&lt;br /&gt;
* correctly log in&lt;br /&gt;
* create a questionnaire&lt;br /&gt;
* edit or delete an advice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Student Side:'''&lt;br /&gt;
A student, when filling a peer review should be able to see the rubric advice associated with a particular test score. We test this task through adding a test case in the peer_review_spec.rb since Peer Review is superset of the Rubric Advice feature as it is a task where a student uses the rubric advice and submit it.&lt;br /&gt;
&lt;br /&gt;
Files changed: peer_review_spec.rb&lt;br /&gt;
The test case checks if student is able to select a rubric advice that the instructor has created and then submit it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;able to view and use rubric advice&amp;quot;, :js =&amp;gt; true do&lt;br /&gt;
    load_questionnaire&lt;br /&gt;
    expect(page).to have_content &amp;quot;Show advice&amp;quot;&lt;br /&gt;
    page.find('#showAdivce_1').click&lt;br /&gt;
    expect(page).to have_content &amp;quot;5 - Good&amp;quot;&lt;br /&gt;
    page.find(&amp;quot;a&amp;quot;, :text =&amp;gt; &amp;quot;5 - Good&amp;quot;).click&lt;br /&gt;
    click_button &amp;quot;Save Review&amp;quot;&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your response was successfully saved.&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The existing code given creates the required environment for the test student. It sets up a team, assignment and other required elements for the test student to submit a review.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
before(:each) do&lt;br /&gt;
    create(:assignment, name: &amp;quot;TestAssignment&amp;quot;, directory_path: 'test_assignment')&lt;br /&gt;
    create_list(:participant, 3)&lt;br /&gt;
    create(:assignment_node)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;submission&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;review&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;metareview&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;drop_topic&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;signup&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;team_formation&amp;quot;)&lt;br /&gt;
    create(:deadline_right)&lt;br /&gt;
    create(:deadline_right, name: 'Late')&lt;br /&gt;
    create(:deadline_right, name: 'OK')&lt;br /&gt;
    create(:assignment_due_date, deadline_type: DeadlineType.where(name: 'review').first, due_at: Time.now.in_time_zone + 1.day)&lt;br /&gt;
    create(:topic)&lt;br /&gt;
    create(:topic, topic_name: &amp;quot;TestReview&amp;quot;)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).first)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).second)&lt;br /&gt;
    create(:assignment_team)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).third, team: AssignmentTeam.second)&lt;br /&gt;
    create(:signed_up_team)&lt;br /&gt;
    create(:signed_up_team, team_id: 2, topic: SignUpTopic.second)&lt;br /&gt;
    create(:assignment_questionnaire)&lt;br /&gt;
    create(:question)&lt;br /&gt;
    create(:question_advices)&lt;br /&gt;
   end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rubric advice is prepared in factory.rb with the following code addition . This allows our test Student to get a ready rubric advice that he can choose.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  factory :question_advices, class: QuestionAdvice do&lt;br /&gt;
    question_id 1&lt;br /&gt;
    score 5&lt;br /&gt;
    advice &amp;quot;Good work&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Instructor side:'''&lt;br /&gt;
&lt;br /&gt;
Edit a certain review rubric, and add advice to it.&lt;br /&gt;
Test that when advice is added for a particular criterion, the advice can be retrieved and that it is exactly the advice that was added. Files added: review_rubric_spec.rb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;Edit a rubric advice&amp;quot; do&lt;br /&gt;
    it &amp;quot;is able to edit a review rubric advice&amp;quot; do&lt;br /&gt;
      # creating a new rubric advice&lt;br /&gt;
      load_question 'Criterion'&lt;br /&gt;
      click_button &amp;quot;Edit/View advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('Edit an existing questionnaire')&lt;br /&gt;
      # setting intital advice in the field&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;Initial advice&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
      expect(page).to have_content('Initial advice')&lt;br /&gt;
      # editing a review rubric - Setting any element with new data&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;Edited the advice&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
      expect(page).to have_content('Edited the advice')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  describe &amp;quot;Remove a rubric advice&amp;quot; do&lt;br /&gt;
    it &amp;quot;should be able to delete a rubric advice&amp;quot; do&lt;br /&gt;
      load_question 'Criterion'&lt;br /&gt;
      click_button &amp;quot;Edit/View advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('Edit an existing questionnaire')&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;Initial advice&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
      expect(page).to have_content('Initial advice')&lt;br /&gt;
      # edit review advice to set to blank i.e. delete rubric advice&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apart from the major test case for Rubric advice, it is essential to test if the logged in instructor is an authorized instructor. To test this, we have added the following test in review_rubric_spec.rb. &lt;br /&gt;
Also, the task of loading the questionnaire and the question types is implemented in separate methods to allow reuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
include InstructorInterfaceHelperSpec&lt;br /&gt;
&lt;br /&gt;
# Feature test of rubric advice&lt;br /&gt;
describe &amp;quot;Edit rubric advice&amp;quot; do&lt;br /&gt;
  before(:each) do&lt;br /&gt;
    assignment_setup&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Login test&lt;br /&gt;
  describe &amp;quot;Login as instructor&amp;quot; do&lt;br /&gt;
    it &amp;quot;logs in with valid username and password&amp;quot; do&lt;br /&gt;
      login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
      visit '/tree_display/list'&lt;br /&gt;
      expect(page).to have_content(&amp;quot;Manage content&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    it &amp;quot;logs in with invalid username and password&amp;quot; do&lt;br /&gt;
      visit root_path&lt;br /&gt;
      fill_in 'login_name', with: 'instructor6'&lt;br /&gt;
      fill_in 'login_password', with: 'wrongpassword'&lt;br /&gt;
      click_button 'SIGN IN'&lt;br /&gt;
      expect(page).to have_text('Your username or password is incorrect.')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def load_questionnaire&lt;br /&gt;
    login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
    visit '/questionnaires/new?model=ReviewQuestionnaire&amp;amp;private=0'&lt;br /&gt;
    fill_in('questionnaire_name', with: 'DummyReview')&lt;br /&gt;
    fill_in('questionnaire_min_question_score', with: '0')&lt;br /&gt;
    fill_in('questionnaire_max_question_score', with: '5')&lt;br /&gt;
    select('no', from: 'questionnaire_private')&lt;br /&gt;
    click_button &amp;quot;Create&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def load_question question_type&lt;br /&gt;
    load_questionnaire&lt;br /&gt;
    fill_in('question_total_num', with: '1')&lt;br /&gt;
    select(question_type, from: 'question_type')&lt;br /&gt;
    click_button &amp;quot;Add&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Factories.rb'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
factory :question_advices, class: QuestionAdvice do&lt;br /&gt;
    question_id 1&lt;br /&gt;
    score 5&lt;br /&gt;
    advice &amp;quot;Good work&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It associates a merit score with each type of advice. As an example, 5 denotes 'very good'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
&lt;br /&gt;
* [https://youtu.be/0a5FUXhJHBQ  Demo Video of Testing]&lt;br /&gt;
* Build passed with Coverage increase of +0.3%&lt;br /&gt;
&lt;br /&gt;
[[File:coverage.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Testing Instructions ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Clone Expertiza on local Repository]&lt;br /&gt;
* [http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation#Development_Environment_Setup_Guides Setup expertiza on your local machine]&lt;br /&gt;
* Run the test cases: &lt;br /&gt;
&amp;lt;pre&amp;gt;spec/features/peer_review_spec.rb &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;spec/features/review_rubric_spec.rb using [https://relishapp.com/rspec Rspec]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/rcoutin/expertiza Forked Github Expertiza Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza Github Expertiza Repository]&lt;br /&gt;
* [https://relishapp.com/rspec Rspec Documentation]&lt;/div&gt;</summary>
		<author><name>Pjain15</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_rubric_advice&amp;diff=110888</id>
		<title>CSC/ECE 517 Fall 2017/E1754 Feature test of rubric advice</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_rubric_advice&amp;diff=110888"/>
		<updated>2017-10-29T16:41:40Z</updated>

		<summary type="html">&lt;p&gt;Pjain15: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application which provides a dashboard to the students where they can submit and peer-review assignments, projects, codes, and other such objects. It allows students to review each other’s work and improve their work upon this feedback. Rubric advice allows reviewers to see what characteristics of work merit a particular score.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The problem statement ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rubric advice lets a user see what criterion or characteristics of work merit a particular score. An instructor can retrieve peer review assignments and leave some advice or give scores based on some criteria. Similarly, students can log in and retrieve the rubric advice left by the instructor. We mocked the behavior of the user (both as an instructor and student) to see how different scenarios work, like modifying, saving and retrieving advice and building feature tests for it. The testing frameworks used for the same were Selenium and Capybara.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tasks identified ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Student Side:'''&lt;br /&gt;
A student, when filling a peer review should be able to see the rubric advice associated with a particular test score. We test this task through adding a test case in the peer_review_spec.rb since Peer Review is superset of the Rubric Advice feature as it is a task where a student uses the rubric advice and submit it.&lt;br /&gt;
&lt;br /&gt;
Files changed: peer_review_spec.rb&lt;br /&gt;
The test case checks if student is able to select a rubric advice that the instructor has created and then submit it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;able to view and use rubric advice&amp;quot;, :js =&amp;gt; true do&lt;br /&gt;
    load_questionnaire&lt;br /&gt;
    expect(page).to have_content &amp;quot;Show advice&amp;quot;&lt;br /&gt;
    page.find('#showAdivce_1').click&lt;br /&gt;
    expect(page).to have_content &amp;quot;5 - Good&amp;quot;&lt;br /&gt;
    page.find(&amp;quot;a&amp;quot;, :text =&amp;gt; &amp;quot;5 - Good&amp;quot;).click&lt;br /&gt;
    click_button &amp;quot;Save Review&amp;quot;&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your response was successfully saved.&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The existing code given creates the required environment for the test student. It sets up a team, assignment and other required elements for the test student to submit a review.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
before(:each) do&lt;br /&gt;
    create(:assignment, name: &amp;quot;TestAssignment&amp;quot;, directory_path: 'test_assignment')&lt;br /&gt;
    create_list(:participant, 3)&lt;br /&gt;
    create(:assignment_node)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;submission&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;review&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;metareview&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;drop_topic&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;signup&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;team_formation&amp;quot;)&lt;br /&gt;
    create(:deadline_right)&lt;br /&gt;
    create(:deadline_right, name: 'Late')&lt;br /&gt;
    create(:deadline_right, name: 'OK')&lt;br /&gt;
    create(:assignment_due_date, deadline_type: DeadlineType.where(name: 'review').first, due_at: Time.now.in_time_zone + 1.day)&lt;br /&gt;
    create(:topic)&lt;br /&gt;
    create(:topic, topic_name: &amp;quot;TestReview&amp;quot;)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).first)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).second)&lt;br /&gt;
    create(:assignment_team)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).third, team: AssignmentTeam.second)&lt;br /&gt;
    create(:signed_up_team)&lt;br /&gt;
    create(:signed_up_team, team_id: 2, topic: SignUpTopic.second)&lt;br /&gt;
    create(:assignment_questionnaire)&lt;br /&gt;
    create(:question)&lt;br /&gt;
    create(:question_advices)&lt;br /&gt;
   end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rubric advice is prepared in factory.rb with the following code addition . This allows our test Student to get a ready rubric advice that he can choose.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  factory :question_advices, class: QuestionAdvice do&lt;br /&gt;
    question_id 1&lt;br /&gt;
    score 5&lt;br /&gt;
    advice &amp;quot;Good work&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Instructor side:'''&lt;br /&gt;
&lt;br /&gt;
Edit a certain review rubric, and add advice to it.&lt;br /&gt;
Test that when advice is added for a particular criterion, the advice can be retrieved and that it is exactly the advice that was added. Files added: review_rubric_spec.rb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;Edit a rubric advice&amp;quot; do&lt;br /&gt;
    it &amp;quot;is able to edit a review rubric advice&amp;quot; do&lt;br /&gt;
      # creating a new rubric advice&lt;br /&gt;
      load_question 'Criterion'&lt;br /&gt;
      click_button &amp;quot;Edit/View advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('Edit an existing questionnaire')&lt;br /&gt;
      # setting intital advice in the field&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;Initial advice&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
      expect(page).to have_content('Initial advice')&lt;br /&gt;
      # editing a review rubric - Setting any element with new data&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;Edited the advice&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
      expect(page).to have_content('Edited the advice')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  describe &amp;quot;Remove a rubric advice&amp;quot; do&lt;br /&gt;
    it &amp;quot;should be able to delete a rubric advice&amp;quot; do&lt;br /&gt;
      load_question 'Criterion'&lt;br /&gt;
      click_button &amp;quot;Edit/View advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('Edit an existing questionnaire')&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;Initial advice&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
      expect(page).to have_content('Initial advice')&lt;br /&gt;
      # edit review advice to set to blank i.e. delete rubric advice&lt;br /&gt;
      first(:css, &amp;quot;textarea[id^='horizontal_'][id$='advice']&amp;quot;).set(&amp;quot;&amp;quot;)&lt;br /&gt;
      click_button &amp;quot;Save and redisplay advice&amp;quot;&lt;br /&gt;
      expect(page).to have_content('advice was successfully saved')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apart from the major test case for Rubric advice, it is essential to test if the logged in instructor is an authorized instructor. To test this, we have added the following test in review_rubric_spec.rb. &lt;br /&gt;
Also, the task of loading the questionnaire and the question types is implemented in separate methods to allow reuse.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
include InstructorInterfaceHelperSpec&lt;br /&gt;
&lt;br /&gt;
# Feature test of rubric advice&lt;br /&gt;
describe &amp;quot;Edit rubric advice&amp;quot; do&lt;br /&gt;
  before(:each) do&lt;br /&gt;
    assignment_setup&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Login test&lt;br /&gt;
  describe &amp;quot;Login as instructor&amp;quot; do&lt;br /&gt;
    it &amp;quot;logs in with valid username and password&amp;quot; do&lt;br /&gt;
      login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
      visit '/tree_display/list'&lt;br /&gt;
      expect(page).to have_content(&amp;quot;Manage content&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    it &amp;quot;logs in with invalid username and password&amp;quot; do&lt;br /&gt;
      visit root_path&lt;br /&gt;
      fill_in 'login_name', with: 'instructor6'&lt;br /&gt;
      fill_in 'login_password', with: 'wrongpassword'&lt;br /&gt;
      click_button 'SIGN IN'&lt;br /&gt;
      expect(page).to have_text('Your username or password is incorrect.')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def load_questionnaire&lt;br /&gt;
    login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
    visit '/questionnaires/new?model=ReviewQuestionnaire&amp;amp;private=0'&lt;br /&gt;
    fill_in('questionnaire_name', with: 'DummyReview')&lt;br /&gt;
    fill_in('questionnaire_min_question_score', with: '0')&lt;br /&gt;
    fill_in('questionnaire_max_question_score', with: '5')&lt;br /&gt;
    select('no', from: 'questionnaire_private')&lt;br /&gt;
    click_button &amp;quot;Create&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def load_question question_type&lt;br /&gt;
    load_questionnaire&lt;br /&gt;
    fill_in('question_total_num', with: '1')&lt;br /&gt;
    select(question_type, from: 'question_type')&lt;br /&gt;
    click_button &amp;quot;Add&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Factories.rb'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
factory :question_advices, class: QuestionAdvice do&lt;br /&gt;
    question_id 1&lt;br /&gt;
    score 5&lt;br /&gt;
    advice &amp;quot;Good work&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It associates a merit score with each type of advice. As an example, 5 denotes 'very good'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
An instructor when creating a questionnaire, can associate marks with comments which can enable a student to understand what score is appropriate for a particular work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing Instructions ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Clone Expertiza on local Repository]&lt;br /&gt;
* [http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation#Development_Environment_Setup_Guides Setup expertiza on your local machine]&lt;br /&gt;
* Run the test cases: &lt;br /&gt;
&amp;lt;pre&amp;gt;spec/features/peer_review_spec.rb &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;spec/features/review_rubric_spec.rb using [https://relishapp.com/rspec Rspec]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/rcoutin/expertiza Forked Github Expertiza Repository]&lt;br /&gt;
* [https://github.com/expertiza/expertiza Github Expertiza Repository]&lt;br /&gt;
* [https://relishapp.com/rspec Rspec Documentation]&lt;br /&gt;
* [https://youtu.be/wB9a--SMNVs Demo Video]&lt;/div&gt;</summary>
		<author><name>Pjain15</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_rubric_advice&amp;diff=109992</id>
		<title>CSC/ECE 517 Fall 2017/E1754 Feature test of rubric advice</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_rubric_advice&amp;diff=109992"/>
		<updated>2017-10-27T17:55:58Z</updated>

		<summary type="html">&lt;p&gt;Pjain15: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application which provides a dashboard to the students where they can submit and peer-review assignments, projects, codes, and other such objects. It allows students to review each other’s work and improve their work upon this feedback. Rubric advice allows reviewers to see what characteristics of work merit a particular score.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The problem statement ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rubric advice lets a user see what criterion or characteristics of work merit a particular score. An instructor can retrieve peer review assignments and leave some advice or give scores based on some criteria. Similarly, students can log in and retrieve the rubric advice left by the instructor. We mocked the behavior of the user (both as an instructor and student) to see how different scenarios work, like modifying, saving and retrieving advice and building feature tests for it. The testing frameworks used for the same were Selenium and Capybara.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tasks identified ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Student Side:&lt;br /&gt;
A student, when filling a peer review should be able to see the rubric advice associated with a particular test score. We test this task through adding a test case in the peer_review_spec.rb since Peer Review is superset of the Rubric Advice feature as it is a task where a student uses the rubric advice and submit it.&lt;br /&gt;
&lt;br /&gt;
Files changed: peer_review_spec.rb&lt;br /&gt;
The test case checks if student is able to select a rubric advice that the instructor has created and then submit it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;able to view and use rubric advice&amp;quot;, :js =&amp;gt; true do&lt;br /&gt;
    load_questionnaire&lt;br /&gt;
    expect(page).to have_content &amp;quot;Show advice&amp;quot;&lt;br /&gt;
    page.find('#showAdivce_1').click&lt;br /&gt;
    expect(page).to have_content &amp;quot;5 - Good&amp;quot;&lt;br /&gt;
    page.find(&amp;quot;a&amp;quot;, :text =&amp;gt; &amp;quot;5 - Good&amp;quot;).click&lt;br /&gt;
    click_button &amp;quot;Save Review&amp;quot;&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your response was successfully saved.&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The existing code given creates the required environment for the test student. It sets up a team, assignment and other required elements for the test student to submit a review.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
before(:each) do&lt;br /&gt;
    create(:assignment, name: &amp;quot;TestAssignment&amp;quot;, directory_path: 'test_assignment')&lt;br /&gt;
    create_list(:participant, 3)&lt;br /&gt;
    create(:assignment_node)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;submission&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;review&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;metareview&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;drop_topic&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;signup&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;team_formation&amp;quot;)&lt;br /&gt;
    create(:deadline_right)&lt;br /&gt;
    create(:deadline_right, name: 'Late')&lt;br /&gt;
    create(:deadline_right, name: 'OK')&lt;br /&gt;
    create(:assignment_due_date, deadline_type: DeadlineType.where(name: 'review').first, due_at: Time.now.in_time_zone + 1.day)&lt;br /&gt;
    create(:topic)&lt;br /&gt;
    create(:topic, topic_name: &amp;quot;TestReview&amp;quot;)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).first)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).second)&lt;br /&gt;
    create(:assignment_team)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).third, team: AssignmentTeam.second)&lt;br /&gt;
    create(:signed_up_team)&lt;br /&gt;
    create(:signed_up_team, team_id: 2, topic: SignUpTopic.second)&lt;br /&gt;
    create(:assignment_questionnaire)&lt;br /&gt;
    create(:question)&lt;br /&gt;
    create(:question_advices)&lt;br /&gt;
   end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rubric advice is prepared in factory.rb with the following code addition . This allows our test Student to get a ready rubric advice that he can choose.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  factory :question_advices, class: QuestionAdvice do&lt;br /&gt;
    question_id 1&lt;br /&gt;
    score 5&lt;br /&gt;
    advice &amp;quot;Good work&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instructor side:&lt;br /&gt;
&lt;br /&gt;
Edit a certain review rubric, and add advice to it.&lt;br /&gt;
Test that when advice is added for a particular criterion, the advice can be retrieved and that it is exactly the advice that was added.&lt;br /&gt;
&lt;br /&gt;
== Testing using Selenium ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.seleniumhq.org/projects/ide/ Selenium IDE] is an integrated development environment for Selenium scripts which lets you  record, edit, and debug tests. It's recording feature allows you to record user actions and exports them as a reusable programming scripts which can be executed later.&lt;br /&gt;
&lt;br /&gt;
'''Testing Intructions'''&lt;br /&gt;
* &lt;br /&gt;
* Login to Expertiza  using following credentials: &lt;br /&gt;
          Instructor username: instructor6, password: password&lt;br /&gt;
          Student username: student2064, password: password&lt;/div&gt;</summary>
		<author><name>Pjain15</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_rubric_advice&amp;diff=109982</id>
		<title>CSC/ECE 517 Fall 2017/E1754 Feature test of rubric advice</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_rubric_advice&amp;diff=109982"/>
		<updated>2017-10-27T17:28:02Z</updated>

		<summary type="html">&lt;p&gt;Pjain15: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application which provides a dashboard to the students where they can submit and peer-review assignments, projects, codes, and other such objects. It allows students to review each other’s work and improve their work upon this feedback. Rubric advice allows reviewers to see what characteristics of work merit a particular score.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The problem statement ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rubric advice lets a user see what criterion or characteristics of work merit a particular score. An instructor can retrieve peer review assignments and leave some advice or give scores based on some criteria. Similarly, students can log in and retrieve the rubric advice left by the instructor. We mocked the behavior of the user (both as an instructor and student) to see how different scenarios work, like modifying, saving and retrieving advice and building feature tests for it. The testing frameworks used for the same were Selenium and Capybara.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tasks identified ==&lt;br /&gt;
&lt;br /&gt;
Student Side:&lt;br /&gt;
A student, when filling a peer review should be able to see the rubric advice associated with a particular test score. We test this task through adding a test case in the peer_review_spec.rb since Peer Review is superset of the Rubric Advice feature as it is a task where a student uses the rubric advice and submit it.&lt;br /&gt;
&lt;br /&gt;
Files changed: peer_review_spec.rb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;able to view and use rubric advice&amp;quot;, :js =&amp;gt; true do&lt;br /&gt;
    load_questionnaire&lt;br /&gt;
    expect(page).to have_content &amp;quot;Show advice&amp;quot;&lt;br /&gt;
    page.find('#showAdivce_1').click&lt;br /&gt;
    expect(page).to have_content &amp;quot;5 - Good&amp;quot;&lt;br /&gt;
    page.find(&amp;quot;a&amp;quot;, :text =&amp;gt; &amp;quot;5 - Good&amp;quot;).click&lt;br /&gt;
    click_button &amp;quot;Save Review&amp;quot;&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your response was successfully saved.&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The existing code given creates an environment for the student to access an assignment , review it and hence reach the point of viewing the rubric advice.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
before(:each) do&lt;br /&gt;
    create(:assignment, name: &amp;quot;TestAssignment&amp;quot;, directory_path: 'test_assignment')&lt;br /&gt;
    create_list(:participant, 3)&lt;br /&gt;
    create(:assignment_node)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;submission&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;review&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;metareview&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;drop_topic&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;signup&amp;quot;)&lt;br /&gt;
    create(:deadline_type, name: &amp;quot;team_formation&amp;quot;)&lt;br /&gt;
    create(:deadline_right)&lt;br /&gt;
    create(:deadline_right, name: 'Late')&lt;br /&gt;
    create(:deadline_right, name: 'OK')&lt;br /&gt;
    create(:assignment_due_date, deadline_type: DeadlineType.where(name: 'review').first, due_at: Time.now.in_time_zone + 1.day)&lt;br /&gt;
    create(:topic)&lt;br /&gt;
    create(:topic, topic_name: &amp;quot;TestReview&amp;quot;)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).first)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).second)&lt;br /&gt;
    create(:assignment_team)&lt;br /&gt;
    create(:team_user, user: User.where(role_id: 2).third, team: AssignmentTeam.second)&lt;br /&gt;
    create(:signed_up_team)&lt;br /&gt;
    create(:signed_up_team, team_id: 2, topic: SignUpTopic.second)&lt;br /&gt;
    create(:assignment_questionnaire)&lt;br /&gt;
    create(:question)&lt;br /&gt;
    create(:question_advices)&lt;br /&gt;
    # create(:review_response_map, reviewer_id: User.where(role_id: 2).third.id)&lt;br /&gt;
    # create(:review_response_map, reviewer_id: User.where(role_id: 2).second.id, reviewee: AssignmentTeam.second)&lt;br /&gt;
    # sleep(10000)&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rubric advice is prepared in factory.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instructor side:&lt;br /&gt;
&lt;br /&gt;
Edit a certain review rubric, and add advice to it.&lt;br /&gt;
Test that when advice is added for a particular criterion, the advice can be retrieved, and that it is exactly the advice that was added.&lt;br /&gt;
&lt;br /&gt;
== Testing using Selenium ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.seleniumhq.org/projects/ide/ Selenium IDE] is an integrated development environment for Selenium scripts which lets you  record, edit, and debug tests. It's recording feature allows you to record user actions and exports them as a reusable programming scripts which can be executed later.&lt;br /&gt;
&lt;br /&gt;
'''Testing Intructions'''&lt;br /&gt;
* Install [http://www.seleniumhq.org/projects/ide/ Selenium IDE]&lt;br /&gt;
* Login to Expertiza (Instructor username: instructor6, password: password)&lt;/div&gt;</summary>
		<author><name>Pjain15</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_rubric_advice&amp;diff=109972</id>
		<title>CSC/ECE 517 Fall 2017/E1754 Feature test of rubric advice</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_rubric_advice&amp;diff=109972"/>
		<updated>2017-10-27T17:17:03Z</updated>

		<summary type="html">&lt;p&gt;Pjain15: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application which provides a dashboard to the students where they can submit and peer-review assignments, projects, codes, and other such objects. It allows students to review each other’s work and improve their work upon this feedback. Rubric advice allows reviewers to see what characteristics of work merit a particular score.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The problem statement ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rubric advice lets a user see what criterion or characteristics of work merit a particular score. An instructor can retrieve peer review assignments and leave some advice or give scores based on some criteria. Similarly, students can log in and retrieve the rubric advice left by the instructor. We mocked the behavior of the user (both as an instructor and student) to see how different scenarios work, like modifying, saving and retrieving advice and building feature tests for it. The testing frameworks used for the same were Selenium and Capybara.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tasks identified ==&lt;br /&gt;
&lt;br /&gt;
Student Side:&lt;br /&gt;
A student, when filling a peer review should be able to see the rubric advice associated with a particular test score. We test this task through adding a test case in the peer_review_spec.rb since Peer Review is superset of the Rubric Advice feature as it is a task where a student uses the rubric advice and submit it.&lt;br /&gt;
&lt;br /&gt;
Files changed: peer_review_spec.rb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;able to view and use rubric advice&amp;quot;, :js =&amp;gt; true do&lt;br /&gt;
    load_questionnaire&lt;br /&gt;
    expect(page).to have_content &amp;quot;Show advice&amp;quot;&lt;br /&gt;
    page.find('#showAdivce_1').click&lt;br /&gt;
    expect(page).to have_content &amp;quot;5 - Good&amp;quot;&lt;br /&gt;
    page.find(&amp;quot;a&amp;quot;, :text =&amp;gt; &amp;quot;5 - Good&amp;quot;).click&lt;br /&gt;
    click_button &amp;quot;Save Review&amp;quot;&lt;br /&gt;
    expect(page).to have_content &amp;quot;Your response was successfully saved.&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instructor side:&lt;br /&gt;
&lt;br /&gt;
Edit a certain review rubric, and add advice to it.&lt;br /&gt;
Test that when advice is added for a particular criterion, the advice can be retrieved, and that it is exactly the advice that was added.&lt;br /&gt;
&lt;br /&gt;
== Testing using Selenium ==&lt;br /&gt;
&lt;br /&gt;
[http://www.seleniumhq.org/projects/ide/ Selenium IDE] is an integrated development environment for Selenium scripts which lets you  record, edit, and debug tests.&lt;/div&gt;</summary>
		<author><name>Pjain15</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_rubric_advice&amp;diff=109963</id>
		<title>CSC/ECE 517 Fall 2017/E1754 Feature test of rubric advice</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_rubric_advice&amp;diff=109963"/>
		<updated>2017-10-27T17:09:57Z</updated>

		<summary type="html">&lt;p&gt;Pjain15: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application which provides a dashboard to the students where they can submit and peer-review assignments, projects, codes, and other such objects. It allows students to review each other’s work and improve their work upon this feedback. Rubric advice allows reviewers to see what characteristics of work merit a particular score.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The problem statement ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rubric advice lets a user see what criterion or characteristics of work merit a particular score. An instructor can retrieve peer review assignments and leave some advice or give scores based on some criteria. Similarly, students can log in and retrieve the rubric advice left by the instructor. We mocked the behavior of the user (both as an instructor and student) to see how different scenarios work, like modifying, saving and retrieving advice and building feature tests for it. The testing frameworks used for the same were Selenium and Capybara.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tasks identified ==&lt;br /&gt;
&lt;br /&gt;
Student Side:&lt;br /&gt;
A student, when filling a peer &lt;br /&gt;
&lt;br /&gt;
Files changed: peer_review_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instructor side:&lt;br /&gt;
&lt;br /&gt;
Edit a certain review rubric, and add advice to it.&lt;br /&gt;
Test that when advice is added for a particular criterion, the advice can be retrieved, and that it is exactly the advice that was added.&lt;br /&gt;
&lt;br /&gt;
== Testing using Selenium ==&lt;/div&gt;</summary>
		<author><name>Pjain15</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_Rubric_Advice.rb&amp;diff=109515</id>
		<title>CSC/ECE 517 Fall 2017/E1754 Feature test of Rubric Advice.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1754_Feature_test_of_Rubric_Advice.rb&amp;diff=109515"/>
		<updated>2017-10-26T21:39:21Z</updated>

		<summary type="html">&lt;p&gt;Pjain15: Created page with &amp;quot;EXPERTIZA&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;EXPERTIZA&lt;/div&gt;</summary>
		<author><name>Pjain15</name></author>
	</entry>
</feed>