Fixed tests + Added new ones
authorShrey <shrey14099@iiitd.ac.in>
Mon, 1 Jun 2015 17:07:25 +0000 (22:37 +0530)
committerMatt Amos <zerebubuth@gmail.com>
Mon, 22 Aug 2016 15:17:21 +0000 (16:17 +0100)
app/models/issue.rb
db/migrate/20150516073616_create_issues.rb
db/structure.sql
test/controllers/issues_controller_test.rb

index a9e2d24..cd3f515 100644 (file)
@@ -40,6 +40,7 @@ class Issue < ActiveRecord::Base
 
                event :reopen do
                        transitions :from => :resolved, :to => :open
+                       transitions :from => :ignored, :to => :open
                end
 
        end
index 32e9976..e77ea98 100644 (file)
@@ -17,7 +17,7 @@ class CreateIssues < ActiveRecord::Migration
 
     add_foreign_key :issues, :users, :column => :reported_user_id,:name => "issues_reported_user_id_fkey"
 
-    add_index :issues, :reported_user_id,
+    add_index :issues, :reported_user_id
     add_index :issues, [:reportable_id, :reportable_type]
     
   end
index efabdbe..e73925d 100644 (file)
@@ -1989,6 +1989,20 @@ CREATE INDEX index_issue_comments_on_issue_id ON issue_comments USING btree (iss
 CREATE INDEX index_issue_comments_on_user_id ON issue_comments USING btree (user_id);
 
 
+--
+-- Name: index_issues_on_reportable_id_and_reportable_type; Type: INDEX; Schema: public; Owner: -; Tablespace: 
+--
+
+CREATE INDEX index_issues_on_reportable_id_and_reportable_type ON issues USING btree (reportable_id, reportable_type);
+
+
+--
+-- Name: index_issues_on_reported_user_id; Type: INDEX; Schema: public; Owner: -; Tablespace: 
+--
+
+CREATE INDEX index_issues_on_reported_user_id ON issues USING btree (reported_user_id);
+
+
 --
 -- Name: index_note_comments_on_body; Type: INDEX; Schema: public; Owner: -
 --
@@ -2136,20 +2150,6 @@ CREATE INDEX relations_changeset_id_idx ON relations USING btree (changeset_id);
 CREATE INDEX relations_timestamp_idx ON relations USING btree ("timestamp");
 
 
---
--- Name: reportable_object_idx; Type: INDEX; Schema: public; Owner: -; Tablespace: 
---
-
-CREATE INDEX reportable_object_idx ON issues USING btree (reportable_id, reportable_type);
-
-
---
--- Name: reported_user_id_idx; Type: INDEX; Schema: public; Owner: -; Tablespace: 
---
-
-CREATE INDEX reported_user_id_idx ON issues USING btree (reported_user_id);
-
-
 --
 -- Name: unique_schema_migrations; Type: INDEX; Schema: public; Owner: -
 --
index 325e0c2..980603e 100644 (file)
 require 'test_helper'
 
 class IssuesControllerTest < ActionController::TestCase
-  test "should get index" do
-    get :index
-    assert_response :success
+  fixtures :users,:user_roles
+
+  def test_new_issue_without_login
+    # Test creation of a new issue and a new report without logging in
+    get :new, {reportable_id: 1, reportable_type: "DiaryEntry", reported_user_id: 1}
+    assert_response :redirect
+    assert_redirected_to login_path(:referer => new_issue_path(:reportable_id=>1, :reportable_type=>"DiaryEntry",:reported_user_id=> 1))
   end
 
-  def test_new_issue
+  def test_new_issue_after_login
     # Test creation of a new issue and a new report
-    get :new, {reportable_id: 1, reportable_type: "IssueOne", user: 1}
+
+    # Login
+    session[:user] = users(:normal_user).id
+
+    get :new, {reportable_id: 1, reportable_type: "DiaryEntry", reported_user_id: 1}
     assert_response :success
     assert_difference "Issue.count",1 do 
       details = "Details of a report"
       post :create, { :report => { :deatils => details},
-                      :issue => { reportable_id: 1, reportable_type: "IssueOne", user: 1} }
+                      :issue => { reportable_id: 1, reportable_type: "DiaryEntry", reported_user_id: 1} }
     end
     assert_response :redirect
   end
 
   def test_new_report
     # Test creation of a new report for an existing issue
-    get :new, {reportable_id: 1, reportable_type: "IssueOne", user: 1}
+
+    # Login
+    session[:user] = users(:normal_user).id
+
+    get :new, {reportable_id: 1, reportable_type: "DiaryEntry", reported_user_id: 1}
     assert_response :success
     assert_difference "Issue.count",1 do 
       details = "Details of a report"
       post :create, { :report => { :details => details},
-                      :issue => { reportable_id: 1, reportable_type: "IssueOne", user: 1} }
+                      :issue => { reportable_id: 1, reportable_type: "DiaryEntry", reported_user_id: 1} }
     end
     assert_response :redirect
     
-    get :new, {reportable_id: 1, reportable_type: "IssueOne", user: 1}
+    get :new, {reportable_id: 1, reportable_type: "DiaryEntry", reported_user_id: 1}
     assert_response :success
     assert_no_difference "Issue.count" do
       details = "Details of another report under the same issue"
       post :create, { :report => { :details => details},
-                      :issue => { reportable_id: 1, reportable_type: "IssueOne", user: 1} }
+                      :issue => { reportable_id: 1, reportable_type: "DiaryEntry", reported_user_id: 1} }
+    end
+    assert_response :redirect
+    assert_equal Issue.find_by_reportable_id_and_reportable_type(1,"DiaryEntry").reports.count,2
+  end
+
+  def test_change_status_by_normal_user
+    # Login as normal user
+    session[:user] = users(:normal_user).id
+    
+    # Create Issue
+
+    get :new, {reportable_id: 1, reportable_type: "DiaryEntry", user: 1}
+    assert_response :success
+    assert_difference "Issue.count",1 do 
+      details = "Details of a report"
+      post :create, { :report => { :deatils => details},
+                      :issue => { reportable_id: 1, reportable_type: "DiaryEntry", reported_user_id: 1} }
     end
     assert_response :redirect
-    assert_equal Issue.find_by_reportable_id_and_reportable_type(1,"IssueOne").reports.count,2
+    
+    get :resolve, id: Issue.find_by_reportable_id_and_reportable_type(1,"DiaryEntry").id
+    assert_response :redirect
+    assert_redirected_to root_path
   end
 
-  def test_change_status
+  def test_change_status_by_admin
+    # Login as normal user
+    session[:user] = users(:normal_user).id
+
     # Create Issue
-    get :new, {reportable_id: 1, reportable_type: "IssueOne", user: 1}
+
+    get :new, {reportable_id: 1, reportable_type: "DiaryEntry", user: 1}
     assert_response :success
     assert_difference "Issue.count",1 do 
       details = "Details of a report"
       post :create, { :report => { :deatils => details},
-                      :issue => { reportable_id: 1, reportable_type: "IssueOne", user: 1} }
+                      :issue => { reportable_id: 1, reportable_type: "DiaryEntry", reported_user_id: 1} }
     end
     assert_response :redirect
 
+    # Login as administrator
+    session[:user] = users(:administrator_user).id
+   
     # Test 'Resolved'
-    get :resolve, id: Issue.find_by_reportable_id_and_reportable_type(1,"IssueOne").id
-    assert_equal Issue.find_by_reportable_id_and_reportable_type(1,"IssueOne").resolved?, true
+    get :resolve, id: Issue.find_by_reportable_id_and_reportable_type(1,"DiaryEntry").id
+    assert_equal Issue.find_by_reportable_id_and_reportable_type(1,"DiaryEntry").resolved?, true
     assert_response :redirect
 
     # Test 'Reopen'
-    get :reopen, id: Issue.find_by_reportable_id_and_reportable_type(1,"IssueOne").id
-    assert_equal Issue.find_by_reportable_id_and_reportable_type(1,"IssueOne").open?, true
+    get :reopen, id: Issue.find_by_reportable_id_and_reportable_type(1,"DiaryEntry").id
+    assert_equal Issue.find_by_reportable_id_and_reportable_type(1,"DiaryEntry").open?, true
     assert_response :redirect
 
     # Test 'Ignored'
-    get :ignore, id: Issue.find_by_reportable_id_and_reportable_type(1,"IssueOne").id
-    assert_equal Issue.find_by_reportable_id_and_reportable_type(1,"IssueOne").ignored?, true
+    get :ignore, id: Issue.find_by_reportable_id_and_reportable_type(1,"DiaryEntry").id
+    assert_equal Issue.find_by_reportable_id_and_reportable_type(1,"DiaryEntry").ignored?, true
     assert_response :redirect
   end