Merge branch '5787-run-command-checkin' refs #5787
[arvados.git] / apps / workbench / test / controllers / repositories_controller_test.rb
index 1f1173eb3e0331fc7f2afb088a30c471001691db..25bf55768529f58327e7f8861835516e0b0f5f06 100644 (file)
@@ -1,7 +1,9 @@
 require 'test_helper'
+require 'helpers/repository_stub_helper'
 require 'helpers/share_object_helper'
 
 class RepositoriesControllerTest < ActionController::TestCase
+  include RepositoryStubHelper
   include ShareObjectHelper
 
   [
@@ -49,18 +51,74 @@ class RepositoriesControllerTest < ActionController::TestCase
   [
     [:active, ['#Sharing', '#Advanced']],
     [:admin,  ['#Attributes', '#Sharing', '#Advanced']],
-  ].each do |user, panes|
-    test "#{user} sees panes #{panes}" do
+  ].each do |user, expected_panes|
+    test "#{user} sees panes #{expected_panes}" do
       get :show, {
         id: api_fixture('repositories')['foo']['uuid']
       }, session_for(user)
       assert_response :success
 
-      panes = css_select('[data-toggle=tab]').select do |pane|
+      panes = css_select('[data-toggle=tab]').each do |pane|
         pane_name = pane.attributes['href']
-        assert_equal true, (panes.include? pane_name),
-                     "Did not find pane #{pane_name}"
+        assert_includes expected_panes, pane_name
       end
     end
   end
+
+  ### Browse repository content
+
+  [:active, :spectator].each do |user|
+    test "show tree to #{user}" do
+      reset_api_fixtures_after_test false
+      sha1, _, _ = stub_repo_content
+      get :show_tree, {
+        id: api_fixture('repositories')['foo']['uuid'],
+        commit: sha1,
+      }, session_for(user)
+      assert_response :success
+      assert_select 'tr td a', 'COPYING'
+      assert_select 'tr td', '625 bytes'
+      assert_select 'tr td a', 'apps'
+      assert_select 'tr td a', 'workbench'
+      assert_select 'tr td a', 'Gemfile'
+      assert_select 'tr td', '33.7 KiB'
+    end
+
+    test "show commit to #{user}" do
+      reset_api_fixtures_after_test false
+      sha1, commit, _ = stub_repo_content
+      get :show_commit, {
+        id: api_fixture('repositories')['foo']['uuid'],
+        commit: sha1,
+      }, session_for(user)
+      assert_response :success
+      assert_select 'pre', h(commit)
+    end
+
+    test "show blob to #{user}" do
+      reset_api_fixtures_after_test false
+      sha1, _, filedata = stub_repo_content filename: 'COPYING'
+      get :show_blob, {
+        id: api_fixture('repositories')['foo']['uuid'],
+        commit: sha1,
+        path: 'COPYING',
+      }, session_for(user)
+      assert_response :success
+      assert_select 'pre', h(filedata)
+    end
+  end
+
+  ['', '/'].each do |path|
+    test "show tree with path '#{path}'" do
+      reset_api_fixtures_after_test false
+      sha1, _, _ = stub_repo_content filename: 'COPYING'
+      get :show_tree, {
+        id: api_fixture('repositories')['foo']['uuid'],
+        commit: sha1,
+        path: path,
+      }, session_for(:active)
+      assert_response :success
+      assert_select 'tr td', 'COPYING'
+    end
+  end
 end