3112: add tests for the new show version info and report problem buttons in help...
authorradhika <radhika@curoverse.com>
Thu, 14 Aug 2014 18:15:07 +0000 (14:15 -0400)
committerradhika <radhika@curoverse.com>
Thu, 14 Aug 2014 18:15:07 +0000 (14:15 -0400)
apps/workbench/app/mailers/issue_reporter.rb
apps/workbench/app/views/application/_report_issue_popup.html.erb
apps/workbench/test/integration/application_layout_test.rb

index 533883b5d8fc9a7af97249c4e5b6b4e1a6ad1f4d..5f3cf13386a6e5f2516dd3ff6c65023047f5ee9d 100644 (file)
@@ -5,6 +5,8 @@ class IssueReporter < ActionMailer::Base
   def send_report(user, params)
     @user = user
     @params = params
-    mail(subject: 'Issue reported')
+    subject = 'Issue reported'
+    subject += " by #{@user.email}" if @user
+    mail(subject: subject)
   end
 end
index 105af38c906143442b981f13ba257b8d73403e5e..4a56fded84878a9516d610ba4557e36c3c228e7b 100644 (file)
@@ -1,7 +1,8 @@
 <%
   api_version = arvados_api_client.discovery[:source_version]
   generated_at = arvados_api_client.discovery[:generatedAt]
-  wb_version = Rails.configuration.source_version + ' ' + Rails.configuration.local_modified
+  wb_version = Rails.configuration.source_version
+  wb_version += Rails.configuration.source_version if Rails.configuration.local_modified
   arvados_base = Rails.configuration.arvados_v1_base
   support_email = Rails.configuration.support_email_address
 
   additional_info['arvados_base'] = arvados_base
   additional_info['support_email'] = support_email
   additional_info['error_message'] = @popup_params[:error_message] if @popup_params[:error_message]
+  additional_info['api_error_request_url'] = @popup_params[:api_error_request_url] if @popup_params[:api_error_request_url]
+  additional_info['api_error_response'] = @popup_params[:api_error_response] if @popup_params[:api_error_response]
 %>
+
 <div class="modal-dialog modal-with-loading-spinner">
   <div class="modal-content">
 
@@ -47,7 +51,7 @@
         </div>
 
         <div class="form-group">
-          <label for="server_version" class="col-sm-4 control-label"> Server Version </label>
+          <label for="server_version" class="col-sm-4 control-label"> Server version </label>
           <div class="col-sm-8">
             <p class="form-control-static" name="server_version"><%=api_version%></p>
           </div>
@@ -76,7 +80,7 @@
 
         <% if @popup_params[:popup_type] == 'report' %>
           <div class="form-group">
-            <label for="report_text" class="col-sm-4 control-label"> Report text </label>
+            <label for="report_text_label" class="col-sm-4 control-label"> Report text </label>
             <div class="col-sm-8">
               <textarea class="form-control" rows="1" name="report_text" type="text"/>
             </div>
index 8a0ebc3c29c8ba04c27c41227fff289a4bdbf534..9b1085a327187c2bfd38e05a842bec126b36548c 100644 (file)
@@ -64,15 +64,64 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest
   end
 
   # test the help menu
-  def check_help_menu
+  def check_help_menu user
     within('.navbar-fixed-top') do
       page.find("#arv-help").click
       within('.dropdown-menu') do
         assert page.has_link? 'Tutorials and User guide'
         assert page.has_link? 'API Reference'
         assert page.has_link? 'SDK Reference'
+        assert page.has_link? 'Show version / debugging info'
+        assert page.has_link? 'Report a problem'
+
+        # check show version info link      
+        click_link 'Show version / debugging info'
       end
     end
+
+    if user && user['is_active']  # TBD - no user as well as inactive user also should be able to report issue
+    within '.modal-content' do
+      assert page.has_text? 'Version / debugging info'
+      assert page.has_no_text? 'Report a problem'
+      assert page.has_text? 'Server version'
+      assert page.has_text? 'Server restarted at'
+      assert page.has_text? 'Workbench version'
+      assert page.has_text? 'Arvados base'
+      assert page.has_text? 'Additional info'
+      assert page.has_no_text? 'Report text'
+      assert page.has_button? 'Close'
+      assert page.has_no_button? 'Report issue'
+      click_button 'Close'
+    end
+
+    # check report issue link      
+    within('.navbar-fixed-top') do
+      page.find("#arv-help").click
+      within('.dropdown-menu') do
+        click_link 'Report a problem'
+      end
+    end
+
+    within '.modal-content' do
+      assert page.has_text? 'Report a problem'
+      assert page.has_no_text? 'Version / debugging info'
+      assert page.has_text? 'Server version'
+      assert page.has_text? 'Server restarted at'
+      assert page.has_text? 'Workbench version'
+      assert page.has_text? 'Arvados base'
+      assert page.has_text? 'Additional info'
+      assert page.has_text? 'Report text'
+      assert page.has_no_button? 'Close'
+      assert page.has_button? 'Report issue'
+      assert page.has_button? 'Cancel'
+
+      # enter a report text and click on report
+      page.find_field('report_text').set 'my test report text'
+      click_button 'Report issue'
+    end
+    end   # TBD - when no user and inactive user work, this should go away
+
+    assert page.has_no_text? 'Version / debugging info'
   end
 
   def verify_system_menu user
@@ -226,6 +275,21 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest
 
       # we should see 'not found' error page
       assert page.has_text? 'Not Found'
+      assert page.has_link? 'Report problem'
+      click_link 'Report problem'
+      within '.modal-content' do
+        assert page.has_text? 'Report a problem'
+        assert page.has_no_text? 'Version / debugging info'
+        assert page.has_text? 'Server version'
+        assert page.has_text? 'Server restarted at'
+        assert page.has_text? 'Report text'
+        assert page.has_button? 'Report issue'
+        assert page.has_button? 'Cancel'
+
+        # enter a report text and click on report
+        page.find_field('report_text').set 'my test report text'
+        click_button 'Report issue'
+      end
 
       # let's search for the anonymously accessible project
       publicly_accessible_project = api_fixture('groups')['anonymously_accessible_project']
@@ -261,6 +325,7 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest
     ['active_no_prefs', api_fixture('users')['active_no_prefs'], true, false],
     ['active_no_prefs_profile', api_fixture('users')['active_no_prefs_profile'], true, false],
   ].each do |token, user, invited, has_profile|
+
     test "visit home page when profile is configured for user #{token}" do
       # Our test config enabled profile by default. So, no need to update config
       if !token
@@ -291,14 +356,16 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest
         visit page_with_token(token)
       end
 
-      check_help_menu
+      check_help_menu user
     end
+
   end
 
   [
     ['active', api_fixture('users')['active'], true, true],
     ['admin', api_fixture('users')['admin'], true, true],
   ].each do |token, user|
+
     test "test system menu for user #{token}" do
       visit page_with_token(token)
       verify_system_menu user
@@ -313,5 +380,7 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest
       visit page_with_token(token)
       verify_search_box user
     end
+
   end
+
 end