CSC/ECE 517 Fall 2015/ossE1572VGA: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
 
(16 intermediate revisions by the same user not shown)
Line 12: Line 12:
==Project Links==
==Project Links==


* [http://www.wikipedia.org Github repo]
* [https://github.com/gmeneze/expertiza Github repo]
* [http://www.wikipedia.org Expertiza pull request]
* [http://www.wikipedia.org Expertiza pull request]
* [http://www.wikipedia.org Youtube video manual]
* [https://www.youtube.com/watch?v=yC_heDL6GSw Youtube video manual]


==Reviewer Instructions==
==Reviewer Instructions==
===Clone the reopsitory===
===Clone the reopsitory===
Visit [https://github.com/expertiza/expertiza Github repo] for the repository URL. Make sure you're logged in if you have commit access, because the URL will be different.
Visit [https://github.com/gmeneze/expertiza Github repo] for the repository URL. Make sure you're logged in if you have commit access, because the URL will be different.
        
        
       git clone (repository URL)
       git clone (repository URL)
Line 29: Line 29:
     bundle install
     bundle install


===Set up databses===
*Go to the expertiza directory.
  cd expertiza
*Create the development and test databases.
  rake db:create:all
*If available, import the database dump that you received in class to pre-populate your database. eg:
 
  mysql -u root expertiza_development < expertiza-scrubbed.sql
*Run the Expertiza database migrations. This should populate your database with the current tables of the schema.
 
  rake db:migrate
===Running the tests===
*Go to the expertiza directory if you are not already there.
*Run the test
    rspec spec/features/assignment_creation_spec.rb
'''Note''' : As our project involves implementation of feature tests for assignment creation rather than refactoring, we do not test the new code via UI (as the new code added are themselves tests).
'''Note''' : Travis CI build fails because we are directly using the development database for our tests, thus Travis CI is not able to locate the login information. This was done because it was not possible to create factories or fixtures for our tests. So, please don’t consider the build failure in the pull request to be a valid error.
==Solutions to problems while setting up the repository==
===rjb gem error===
* To solve this, make sure that you have java installed on your system or else you could do that from [https://help.ubuntu.com/community/Java here].
* Then set the JAVA_HOME environment variable by typing this on the terminal
     
    export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
* Run bundle install again.
===pg gem error===
* To solve this, we have to install PostgreSQL.
* Then type in the following set of commands in the terminal
      sudo sh -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main' > /etc/apt/sources.list.d/pgdg.list"
      wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
      sudo apt-get update
      sudo apt-get install postgresql-common
      sudo apt-get install postgresql-9.3 libpq-dev
*Run bundle install again
===Database related errors===
* Here is the link of Expertiza scrubbed DB (https://drive.google.com/a/ncsu.edu/file/d/0B2vDvVjH76uESEkzSWpJRnhGbmc/view?usp=sharing)
* Download the file, unzip it and dump to MySQL.
* Then type
   
    rake db:migrate RAILS_ENV=development
    rake db:migrate RAILS_ENV=test
===Other errors===
For any other kind of errors faced during setting up the repository, you can write to us at any of the following ids.
* aslingwa@ncsu.edu
* gmeneze@ncsu.edu
* vpaul@ncsu.edu


==Classes Involved==
==Classes Involved==
Line 35: Line 98:
* rails_helper.rb
* rails_helper.rb


The assignment_creation.rb contains the feature tests written to test the creation of the assignment. The rails_helper is copied to spec/ when you run 'rails generate rspec:install'. All the rspec-expectations config goes into the spec_helper_file. We have used Capybara and RSpec to test our application. Capybara helps you test web applications by simulating how a real user would interact with your app.  
The assignment_creation.rb contains the feature tests written to test the creation of the assignment. The rails_helper is copied to spec/ when you run 'rails generate rspec:install'. All the rspec-expectations config goes into the spec_helper_file. We have used Capybara and RSpec to test our application. Capybara helps you test web applications by simulating how a real user would interact with your app. One of the major reasons for selecting Capybara to write our tests was that it has an intuitive API which mimics the language an actual user would use and also we can run tests from fast headless mode to an actual browser with no changes to our tests.
 
==Scenarios Tested==
No matter which combination of parameters are selected in the creation of the assignment, the test cases should pass. Following are some of the scenarios which we have tested.
 
===Scenarios for private assignment===
*Create Assignment with Has teams parameter
*Create Assignment with Has quiz parameter
*Create Assignment with Wiki assignment parameter
*Create Assignment with Micro-task assignment parameter
*Create Assignment with Reviews visible to all other reviewers parameter
*Create Assignment with Is code submission required parameter
*Create Assignment with Available to students parameter
*Create Assignment with all options
*Create Assignment with no options
*Create Assignment with Has teams and Has quiz parameters
*Create Assignment with Micro-task assignment and Reviews visible to all other reviewers parameters
*Create Assignment with Is code submission required and Available to students parameters
*Create Assignment with Has team, Has quiz and Wiki assignment parameters
*Create Assignment with negative scenario
 
===Scenarios for public assignment===
*Create Assignment with has teams parameter
*Create Assignment with has quiz parameter
*Create Assignment with has Wiki Assignment parameter
*Create Assignment with has Micro-task assignment parameter
*Create Assignment with has Reviews visible to all other reviewers parameter
*Create Assignment with has Is code submission required parameter
 
==Flow of our test==
[[File:test flow.png]]


==Code==
==Code==
Line 106: Line 199:
         end  
         end  


        scenario "Create Assignment with Wiki assignment?", :js => true  do
            uncheck('assignment_form_assignment_availability_flag')
            check('assignment_wiki_assignment')
            click_on('Create')
            click_on('Rubrics')
            within('#questionnaire_table_ReviewQuestionnaire') do
            select('Animation', from: 'assignment_form[assignment_questionnaire][][questionnaire_id]').first()
            end
            within('#questionnaire_table_ReviewQuestionnaire') do
              select('Animation', from: 'assignment_form[assignment_questionnaire][][questionnaire_id]')
            end
            within('#questionnaire_table_AuthorFeedbackQuestionnaire') do
              select('Author feedback OTD1', from: 'assignment_form[assignment_questionnaire][][questionnaire_id]')
            end
            expect(page).to have_content("Rubrics")
            click_on('submit_btn')
            expect(page).to have_content("successfully",:wait=>5)
        end
        scenario "Create Assignment with Reviews visible to all other reviewers?",  :js => true  do
            uncheck('assignment_form_assignment_availability_flag')
            check('assignment_form_assignment_reviews_visible_to_all')
            click_on('Create')
            click_on('Rubrics')
            within('#questionnaire_table_ReviewQuestionnaire') do
            select('Animation', from: 'assignment_form[assignment_questionnaire][][questionnaire_id]').first()
            end
            within('#questionnaire_table_ReviewQuestionnaire') do
              select('Animation', from: 'assignment_form[assignment_questionnaire][][questionnaire_id]')
            end
            within('#questionnaire_table_AuthorFeedbackQuestionnaire') do
              select('Author feedback OTD1', from: 'assignment_form[assignment_questionnaire][][questionnaire_id]')
            end
            expect(page).to have_content("Rubrics")
            click_on('submit_btn')
            expect(page).to have_content("successfully",:wait=>5)
        end
        scenario "Create Assignment with negative scenario", :skip_before, :js => true  do
            visit root_path
            fill_in('login_name', :with => 'instructor6')
            fill_in('login_password', :with => 'password')
            click_on('SIGN IN')
            expect(page).to have_content('Manage')
            within(".content") do
            click_on("Assignments")
            click_button 'New private assignment'
            click_on('Create')
            expect(page).to have_content("New Assignment")
            end
      end


The test cases written also contain tests for the creation of public assignments. Listed below are the following tests. Once again we need to sign in the instructor before he can create any assignments.
The test cases written also contain tests for the creation of public assignments. Listed below are the following tests. Once again we need to sign in the instructor before he can create any assignments.
Line 216: Line 258:
         expect(page).to have_content("successfully",:wait=>5)
         expect(page).to have_content("successfully",:wait=>5)
     end
     end
===spec_helper.rb===
  # This file was generated by the `rails generate rspec:install` command. Conventionally, all
  # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
  # The generated `.rspec` file contains `--require spec_helper` which will cause
  # this file to always be loaded, without a need to explicitly require it in any
  # files.
  #
  # Given that it is always loaded, you are encouraged to keep this file as
  # light-weight as possible. Requiring heavyweight dependencies from this file
  # will add to the boot time of your test suite on EVERY test run, even for an
  # individual file that may not need all of that loaded. Instead, consider making
  # a separate helper file that requires the additional dependencies and performs
  # the additional setup, and require it from the spec files that actually need
  # it.
  #
  # The `.rspec` file also contains a few flags that are not defaults but that
  # users commonly want.
  #
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
  RSpec.configure do |config|
    # rspec-expectations config goes here. You can use an alternate
    # assertion/expectation library such as wrong or the stdlib/minitest
    # assertions if you prefer.
  #
  config.expect_with :rspec do |expectations|
    # This option will default to `true` in RSpec 4. It makes the `description`
    # and `failure_message` of custom matchers include text for helper methods
    # defined using `chain`, e.g.:
    #    be_bigger_than(2).and_smaller_than(4).description
    #    # => "be bigger than 2 and smaller than 4"
    # ...rather than:
    #    # => "be bigger than 2"
    expectations.include_chain_clauses_in_custom_matcher_descriptions = true
  end
  #
  # rspec-mocks config goes here. You can use an alternate test double
  # library (such as bogus or mocha) by changing the `mock_with` option here.
  config.mock_with :rspec do |mocks|
    # Prevents you from mocking or stubbing a method that does not exist on
    # a real object. This is generally recommended, and will default to
    # `true` in RSpec 4.
    mocks.verify_partial_doubles = true
  end
  #
  # The settings below are suggested to provide a good initial experience
  # with RSpec, but feel free to customize to your heart's content.
  =begin
    # These two settings work together to allow you to limit a spec run
    # to individual examples or groups you care about by tagging them with
    # `:focus` metadata. When nothing is tagged with `:focus`, all examples
    # get run.
    config.filter_run :focus
    config.run_all_when_everything_filtered = true
    # Allows RSpec to persist some state between runs in order to support
    # the `--only-failures` and `--next-failure` CLI options. We recommend
    # you configure your source control system to ignore this file.
    config.example_status_persistence_file_path = "spec/examples.txt"
    # Limits the available syntax to the non-monkey patched syntax that is
    # recommended. For more details, see:
    #  - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
    #  - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
    #  - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
    config.disable_monkey_patching!
    # Many RSpec users commonly either run the entire suite or an individual
    # file, and it's useful to allow more verbose output when running an
    # individual spec file.
    if config.files_to_run.one?
      # Use the documentation formatter for detailed output,
      # unless a formatter has already been configured
      # (e.g. via a command-line flag).
      config.default_formatter = 'doc'
    end
    # Print the 10 slowest examples and example groups at the
    # end of the spec run, to help surface which specs are running
    # particularly slow.
    config.profile_examples = 10
    # Run specs in random order to surface order dependencies. If you find an
    # order dependency and want to debug it, you can fix the order by providing
    # the seed, which is printed after each run.
    #    --seed 1234
    config.order = :random
    # Seed global randomization in this process using the `--seed` CLI option.
    # Setting this allows you to use `--seed` to deterministically reproduce
    # test failures related to randomization by passing the same `--seed` value
    # as the one that triggered the failure.
    Kernel.srand config.seed
  =end
  end
===rails_helper.rb===
  # This file is copied to spec/ when you run 'rails generate rspec:install'
  ENV['RAILS_ENV'] ||= 'test'
  require File.expand_path('../../config/environment', __FILE__)
  # Prevent database truncation if the environment is production
  abort("The Rails environment is running in production mode!") if Rails.env.production?
  require 'spec_helper'
  require 'rspec/rails'
  # Add additional requires below this line. Rails is not loaded until this point!
  #
  # Requires supporting ruby files with custom matchers and macros, etc, in
  # spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
  # run as spec files by default. This means that files in spec/support that end
  # in _spec.rb will both be required and run as specs, causing the specs to be
  # run twice. It is recommended that you do not name files matching this glob to
  # end with _spec.rb. You can configure this pattern with the --pattern
  # option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
  #
  # The following line is provided for convenience purposes. It has the downside
  # of increasing the boot-up time by auto-requiring all files in the support
  # directory. Alternatively, in the individual `*_spec.rb` files, manually
  # require only the support files necessary.
  #
  # Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
  #
  # Checks for pending migrations before tests are run.
  # If you are not using ActiveRecord, you can remove this line.
  ActiveRecord::Migration.maintain_test_schema!
  RSpec.configure do |config|
  # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
  config.fixture_path = "#{::Rails.root}/spec/fixtures"
  config.include FactoryGirl::Syntax::Methods
  #
  # If you're not using ActiveRecord, or you'd prefer not to run each of your
  # examples within a transaction, remove the following line or assign false
  # instead of true.
  #  config.use_transactional_fixtures = true
  #  config.before(:suite) do
  #    DatabaseCleaner.clean_with(:truncation,:only => ['users'])
  #  end
  #  config.before(:each) do
  #    DatabaseCleaner.strategy = :transaction
  #  end
  #  config.before(:each, :js => true) do
  #    DatabaseCleaner.strategy = :truncation
  #  end
  #  config.before(:each) do
  #    DatabaseCleaner.start
  #  end
  #
  # RSpec Rails can automatically mix in different behaviours to your tests
  # based on their file location, for example enabling you to call `get` and
  # `post` in specs under `spec/controllers`.
  #
  # You can disable this behaviour by removing the line below, and instead
  # explicitly tag your specs with their type, e.g.:
  #
  #    RSpec.describe UsersController, :type => :controller do
  #      # ...
  #    end
  #
  # The different available types are documented in the features, such as in
  # https://relishapp.com/rspec/rspec-rails/docs
  config.infer_spec_type_from_file_location!
  end

Latest revision as of 15:04, 7 November 2015

Template:Student sandbox

Introduction

This page provides a description of the Expertiza based OSS project. Expertiza is an open source rails application developed on ruby and rails. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc). The instructors can create assignments using this application and customize and manage them. It also helps to introduce the peer review system by which students can review the projects of their colleagues.

Problem Statement

We were expected to write a feature test which mocks the creation of an Assignment. For Expertiza Assignment management is the central part of the workflow. Goals:

  1. Understand the flow of the Assignment creation by instructor manually.
  2. Mock the same steps using capybara
  3. Create multiple assignments with different options and testing their existence.

Project Links

Reviewer Instructions

Clone the reopsitory

Visit Github repo for the repository URL. Make sure you're logged in if you have commit access, because the URL will be different.

     git clone (repository URL)

See https://help.github.com for help on setting up git, authenticating with SSH keys, and checking out a repository.

Installing Gems (ruby dependencies)

In the expertiza directory:

    bundle install

Set up databses

  • Go to the expertiza directory.
  cd expertiza
  • Create the development and test databases.
  rake db:create:all
  • If available, import the database dump that you received in class to pre-populate your database. eg:
  mysql -u root expertiza_development < expertiza-scrubbed.sql
  • Run the Expertiza database migrations. This should populate your database with the current tables of the schema.
  rake db:migrate

Running the tests

  • Go to the expertiza directory if you are not already there.
  • Run the test
   rspec spec/features/assignment_creation_spec.rb

Note : As our project involves implementation of feature tests for assignment creation rather than refactoring, we do not test the new code via UI (as the new code added are themselves tests).

Note : Travis CI build fails because we are directly using the development database for our tests, thus Travis CI is not able to locate the login information. This was done because it was not possible to create factories or fixtures for our tests. So, please don’t consider the build failure in the pull request to be a valid error.

Solutions to problems while setting up the repository

rjb gem error

  • To solve this, make sure that you have java installed on your system or else you could do that from here.
  • Then set the JAVA_HOME environment variable by typing this on the terminal
    export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
  • Run bundle install again.

pg gem error

  • To solve this, we have to install PostgreSQL.
  • Then type in the following set of commands in the terminal
     sudo sh -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main' > /etc/apt/sources.list.d/pgdg.list"
     wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
     sudo apt-get update
     sudo apt-get install postgresql-common
     sudo apt-get install postgresql-9.3 libpq-dev
  • Run bundle install again

Database related errors

   rake db:migrate RAILS_ENV=development
   rake db:migrate RAILS_ENV=test

Other errors

For any other kind of errors faced during setting up the repository, you can write to us at any of the following ids.

  • aslingwa@ncsu.edu
  • gmeneze@ncsu.edu
  • vpaul@ncsu.edu

Classes Involved

  • assignment_creation.rb
  • spec_helper.rb
  • rails_helper.rb

The assignment_creation.rb contains the feature tests written to test the creation of the assignment. The rails_helper is copied to spec/ when you run 'rails generate rspec:install'. All the rspec-expectations config goes into the spec_helper_file. We have used Capybara and RSpec to test our application. Capybara helps you test web applications by simulating how a real user would interact with your app. One of the major reasons for selecting Capybara to write our tests was that it has an intuitive API which mimics the language an actual user would use and also we can run tests from fast headless mode to an actual browser with no changes to our tests.

Scenarios Tested

No matter which combination of parameters are selected in the creation of the assignment, the test cases should pass. Following are some of the scenarios which we have tested.

Scenarios for private assignment

  • Create Assignment with Has teams parameter
  • Create Assignment with Has quiz parameter
  • Create Assignment with Wiki assignment parameter
  • Create Assignment with Micro-task assignment parameter
  • Create Assignment with Reviews visible to all other reviewers parameter
  • Create Assignment with Is code submission required parameter
  • Create Assignment with Available to students parameter
  • Create Assignment with all options
  • Create Assignment with no options
  • Create Assignment with Has teams and Has quiz parameters
  • Create Assignment with Micro-task assignment and Reviews visible to all other reviewers parameters
  • Create Assignment with Is code submission required and Available to students parameters
  • Create Assignment with Has team, Has quiz and Wiki assignment parameters
  • Create Assignment with negative scenario

Scenarios for public assignment

  • Create Assignment with has teams parameter
  • Create Assignment with has quiz parameter
  • Create Assignment with has Wiki Assignment parameter
  • Create Assignment with has Micro-task assignment parameter
  • Create Assignment with has Reviews visible to all other reviewers parameter
  • Create Assignment with has Is code submission required parameter

Flow of our test

Code

assignment_creation.rb

   require 'rails_helper'
   require 'spec_helper'
   def GenerateAssignmentName()
     (rand(1000) + 1).to_s + 'RSpecID' + (1 + rand(1000)).to_s
   end
   RSpec.feature "create private assignment"  do
   before(:each) do |example|
     unless example.metadata[:skip_before]
        visit root_path
        fill_in('login_name', :with => 'instructor6')
        fill_in('login_password', :with => 'password')
        click_on('SIGN IN')
        expect(page).to have_content('Manage')
        within(".content") do
        click_on("Assignments")
        click_button 'New private assignment'
        fill_in('assignment_form_assignment_name',:with => GenerateAssignmentName())
        select('CSC 517 Fall 2010', from: 'assignment_form_assignment_course_id')
        fill_in('assignment_form_assignment_directory_path',:with => '/')
        fill_in('assignment_form_assignment_spec_location',:with => 'google.com')
        end
     end 
   end

Given above is a portion of the code which we have to execute before testing each scenario. This is encapsulated within before(:each). In order to be able to create assignments, the instructor has to first login. So we set up the environment of logging in in the before(:each) block and navigating to the page where assignments can be created.

We have written a total of 27 test cases in the assignment_creation.rb testing all the permutations and combinations with which an instructor can create an assignment. Listed below are a few of those test cases for the creation of a private assignment.

       scenario "Create Assignment with Has teams?", :js => true  do        
           uncheck('assignment_form_assignment_availability_flag')
           check('team_assignment')
           click_on('Create')
           click_on('Rubrics')
           within('#questionnaire_table_ReviewQuestionnaire') do
            select('Animation', from: 'assignment_form[assignment_questionnaire][][questionnaire_id]').first()
           end
           within('#questionnaire_table_ReviewQuestionnaire') do
             select('Animation', from: 'assignment_form[assignment_questionnaire][][questionnaire_id]')
           end
           within('#questionnaire_table_AuthorFeedbackQuestionnaire') do
             select('Author feedback OTD1', from: 'assignment_form[assignment_questionnaire][][questionnaire_id]')
           end
           expect(page).to have_content("Rubrics")
           click_on('submit_btn')
           expect(page).to have_content("successfully",:wait=>5)
       end
       scenario "Create Assignment with Has quiz?", :js => true  do
           uncheck('assignment_form_assignment_availability_flag')
           check('assignment_form_assignment_require_quiz')
           click_on('Create')
           click_on('Rubrics')
           within('#questionnaire_table_ReviewQuestionnaire') do
            select('Animation', from: 'assignment_form[assignment_questionnaire][][questionnaire_id]').first()
           end
           within('#questionnaire_table_ReviewQuestionnaire') do
             select('Animation', from: 'assignment_form[assignment_questionnaire][][questionnaire_id]')
           end
           within('#questionnaire_table_AuthorFeedbackQuestionnaire') do
             select('Author feedback OTD1', from: 'assignment_form[assignment_questionnaire][][questionnaire_id]')
           end
           expect(page).to have_content("Rubrics")
           click_on('submit_btn')
           expect(page).to have_content("successfully",:wait=>5)
       end 


The test cases written also contain tests for the creation of public assignments. Listed below are the following tests. Once again we need to sign in the instructor before he can create any assignments.

  RSpec.feature "create public assignment"  do
   before(:each) do
     #@user = FactoryGirl.create(:user)
     visit root_path
     fill_in('login_name', :with => 'instructor6')
     fill_in('login_password', :with => 'password')
     click_on('SIGN IN')
     expect(page).to have_content('Manage')
     within(".content") do
       click_on("Assignments")
     end
   end
     scenario "Create Assignment has teams",:js => true  do        
       click_button 'New public assignment'
       fill_in('assignment_form_assignment_name',:with => GenerateAssignmentName())
       select('CSC 517 Fall 2010', from: 'assignment_form_assignment_course_id')
       fill_in('assignment_form_assignment_directory_path',:with => '/')
       fill_in('assignment_form_assignment_spec_location',:with => 'google.com')
       check('team_assignment')
       check('assignment_form_assignment_availability_flag')
       #find(:xpath, "//input[@id=]").set "0"
       click_on('Create')
       click_on('Rubrics')
       within('#questionnaire_table_ReviewQuestionnaire') do
         select('Animation', from: 'assignment_form[assignment_questionnaire][][questionnaire_id]')
       end
       within('#questionnaire_table_AuthorFeedbackQuestionnaire') do
         select('Author feedback OTD1', from: 'assignment_form[assignment_questionnaire][][questionnaire_id]')
       end
       expect(page).to have_content("Rubrics")
       click_on('submit_btn')
       expect(page).to have_content("successfully",:wait=>5)
     end
    scenario "Create Assignment has quiz",:js => true  do        
       click_button 'New public assignment'
       fill_in('assignment_form_assignment_name',:with => GenerateAssignmentName())
       select('CSC 517 Fall 2010', from: 'assignment_form_assignment_course_id')
       fill_in('assignment_form_assignment_directory_path',:with => '/')
       fill_in('assignment_form_assignment_spec_location',:with => 'google.com')
       check('assignment_form_assignment_require_quiz')
       check('assignment_form_assignment_availability_flag')
       #find(:xpath, "//input[@id=]").set "0"
       click_on('Create')
       click_on('Rubrics')
       within('#questionnaire_table_ReviewQuestionnaire') do
         select('Animation', from: 'assignment_form[assignment_questionnaire][][questionnaire_id]')
       end
       within('#questionnaire_table_AuthorFeedbackQuestionnaire') do
         select('Author feedback OTD1', from: 'assignment_form[assignment_questionnaire][][questionnaire_id]')
       end
       expect(page).to have_content("Rubrics")
       click_on('submit_btn')
       expect(page).to have_content("successfully",:wait=>5)
    end