CSC/ECE 517 Spring 2018- Project E1804: OSS project Yellow: Topic management
This page provides a description of our Expertiza project.
>>>>>>>>>>>>> RUN "./setup.sh" BEFORE RUNNING APP; CONTENTS OF "bower.json" HAVE CHANGED <<<<<<<<<<<<<<
Introduction
Expertiza Background
Expertiza is a web-based framework designed in Ruby on Rails to serve as a medium for students and professors to interact, provide feedback, and manage their assignments. It facilitates all of the electronic turn-ins and provides a good place to review your peers' work.
Problem Statement
To enhance topic management for instructors and students.
- Issue 971: Change create topic UI to AJAX
- Issue 926: Sort topics by topic number in assignment#edit
- Issue 718: Allow instructors to give feedback when accepting or rejecting suggestions
Our Goals
We planned to improve the functionality such that when instructors have to manage the topics for an assignment, they can do so much quicker and more reliably.
Files Edited
- app/spec/controllers/assignments_controller_spec.rb
- app/spec/controllers/sign_up_sheet_controller_spec.rb
Issue 971
Implementation
Further Implementation Required
Testing
- For testing the newly created JSGrid, it is important to ensure it maintains correct functionality from before. To that end, we created quite a few tests that test manage topic functionality.
- Testing that if an assignment due date has passed:
- Topics are no longer editable and you can no longer add/delete topics
- Testing that if an assignment due date has passed:
- app/spec/controllers/assignments_controller_spec.rb
- For testing the newly created JSGrid, it is important to ensure it maintains correct functionality from before. To that end, we created quite a few tests that test manage topic functionality.
context 'assignment due dates have not passed' do before(:each) do due_date.due_at = DateTime.now.in_time_zone + 1.day allow(assignment.due_dates).to receive(:find_by).with(deadline_type_id: 6).and_return(due_date) end it 'allows a topic to be edited' do params = {id: 1, anchor: 'tabs-2'} get :edit, params, xhr: true expect(response).to respond_to(:edit) end it 'allows a topic to be deleted' do params = {id: 1, anchor: 'tabs-2'} get :edit, params, xhr: true expect(response).to respond_to(:destroy) end it 'allows a new topic to be added' do params = {id: 1, anchor: 'tabs-2'} get :edit, params, xhr: true expect(response).to respond_to(:new) end end
- Testing that if an assignment due date has not passed:
- Topics are editable and you can add/delete topics
- Testing that if an assignment due date has not passed:
- app/spec/controllers/assignments_controller_spec.rb
context 'all assignment due dates have passed' do before(:each) do due_date.due_at = DateTime.now.in_time_zone - 1.day allow(assignment.due_dates).to receive(:find_by).with(deadline_type_id: 6).and_return(due_date) end it 'does not allow a topic to be edited' do params = {id: 1, anchor: 'tabs-2'} get :edit, params, xhr: true expect(response).not_to respond_to(:edit) end it 'does not allow a topic to be deleted' do params = {id: 1, anchor: 'tabs-2'} get :edit, params, xhr: true expect(response).not_to respond_to(:destroy) end it 'does not allow a new topic to be added' do params = {id: 1, anchor: 'tabs-2'} get :edit, params, xhr: true expect(response).not_to respond_to(:new) end end
- Testing that default topic available slots is 1
- app/spec/controllers/sign_up_sheet_controller_spec.rb
define '#new' do it 'has default available slots of 1' do params = {id: 1} get :new, params expect(response).to have_field('max_choosers', with: '1') end end
Further Testing Required
- Unfortunately we were unable to exhaustively test the topic table, but here are the things we plan to test about managing topics over the next week:
- If assignment deadline has passed, you can not add students to a topic
- Ensure students cant see which students are on other topics
- Check that Advertisement Horn shows in the table if a team has an ad open
- If you login as student, you can't add/delete topics in the table
- Unfortunately we were unable to exhaustively test the topic table, but here are the things we plan to test about managing topics over the next week:
Issue 926
Implementation
- We let JSGrid handle the sorting of topics by the headers in the table. We altered the AJAX controller to enable this sorting.
Further Implementation Required
- While the table is able to be sorted by the header row, whenever you make a new topic the initial list of topics is not resorted right away. This leads to say E1502, a new topic just made, to be at the bottom of the list when it would normally precede say E1700, if it were in the same topic list.
Testing
- There is no testing required in this aspect, since sorting is a feature of the AJAX table itself, and therefore it wouldn't make sense to test the implementation.
Issue 718
Implementation
- We implemented the functionality for approving and rejecting any topic suggestions made by the students. Furthermore we have included comments which the instructor can give for a particular topic suggestion. Editing the comment has been partially implemented till now.
Further Implementation Required
- The comments have to be editable(in process).