3296: good tests do add value.
authorradhika <radhika@curoverse.com>
Sat, 9 Aug 2014 14:14:10 +0000 (10:14 -0400)
committerradhika <radhika@curoverse.com>
Sat, 9 Aug 2014 14:14:10 +0000 (10:14 -0400)
apps/workbench/app/controllers/application_controller.rb
apps/workbench/app/views/users/profile.html.erb
apps/workbench/test/integration/application_layout_test.rb

index cd74dffdfdbfea66183f730b81cf8bec90094b81..0593ee38dc66e66d1bb59508f5456ebced04d35d 100644 (file)
@@ -536,7 +536,9 @@ class ApplicationController < ActionController::Base
 
       profile_config.kind_of?(Array) && profile_config.andand.each do |entry|
         if entry['required']
-          if !current_user_profile || !current_user_profile[entry['key'].to_sym]
+          if !current_user_profile ||
+             !current_user_profile[entry['key'].to_sym] ||
+             current_user_profile[entry['key'].to_sym].empty?
             missing_required_profile = true
             break
           end
index 193c8b5115f0172f73f56ce6ee8acc8a1efc96e6..dfb1948e331890b94cdb90c137c41fc9b90d5009 100644 (file)
@@ -62,7 +62,7 @@
                   <div class="form-group">
                     <label for="<%=entry['key']%>"
                            class="col-sm-3 control-label"
-                           style=<%="color:red" if entry['required']&&!value%>> <%=label%>
+                           style=<%="color:red" if entry['required']&&(!value||value.empty?)%>> <%=label%>
                     </label>
                     <% if entry['type'] == 'select' %>
                       <div class="col-sm-9">
index f4b9880825aea2f6df46b3db8c396ddbabdf885e..e8a904920a89f0d49e378fe3ea3df2aafd5a04f1 100644 (file)
@@ -170,7 +170,7 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest
     assert page.has_text? 'added_in_test'
   end
 
-  # check manage profile page and add missing profile to the user
+  # Check manage profile page and add missing profile to the user
   def add_profile user
     assert page.has_no_text? 'My projects'
     assert page.has_no_text? 'Projects shared with me'
@@ -182,7 +182,16 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest
     assert page.has_text? 'Email'
     assert page.has_text? user['email']
 
-    # using the default profile which has message and one required field
+    # Using the default profile which has message and one required field
+
+    # Save profile without filling in the required field. Expect to be back in this profile page again
+    click_button "Save profile"
+    assert page.has_text? 'Profile'
+    assert page.has_text? 'First name'
+    assert page.has_text? 'Last name'
+    assert page.has_text? 'Save profile'
+
+    # This time fill in required field and then save. Expect to go to requested page after that.
     profile_config = Rails.configuration.user_profile_form_fields
     profile_message = ''
     required_field_title = ''
@@ -212,16 +221,30 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest
   # test the search box
   def check_search_box user
     if user
-      # let's search for the anonymously accessible project
-      publicly_accessible_project = api_fixture('groups')['anonymously_accessible_project']
-
+      # let's search for a valid uuid
       within('.navbar-fixed-top') do
         page.find_field('search').set user['uuid']
         page.find('.glyphicon-search').click
-        
-        # we should now be in the user's page as a result of search
-        assert page.has_text? user['email']
+      end
+
+      # we should now be in the user's page as a result of search
+      assert page.has_text? user['first_name']
+
+      # let's search again for an invalid valid uuid
+      within('.navbar-fixed-top') do
+        search_for = user['uuid']
+        search_for[0]='1'
+        page.find_field('search').set search_for
+        page.find('.glyphicon-search').click
+      end
 
+      # we should see 'not found' error page
+      assert page.has_text? 'Not Found'
+
+      # let's search for the anonymously accessible project
+      publicly_accessible_project = api_fixture('groups')['anonymously_accessible_project']
+
+      within('.navbar-fixed-top') do
         # search again for the anonymously accessible project
         page.find_field('search').set publicly_accessible_project['name'][0,10]
         page.find('.glyphicon-search').click