4525: add test to verify selection on tab switching.
[arvados.git] / apps / workbench / test / integration / jobs_test.rb
index 50616de45fc077326cfed3de2e06f1e49276bcc6..d1f5e780932fcaab959bf07ad486c07aefc68edc 100644 (file)
@@ -1,6 +1,18 @@
+require 'fileutils'
+require 'tmpdir'
+
 require 'integration_helper'
 
 class JobsTest < ActionDispatch::IntegrationTest
+
+  def fakepipe_with_log_data
+    content =
+      "2014-01-01_12:00:01 zzzzz-8i9sb-0vsrcqi7whchuil 0  log message 1\n" +
+      "2014-01-01_12:00:02 zzzzz-8i9sb-0vsrcqi7whchuil 0  log message 2\n" +
+      "2014-01-01_12:00:03 zzzzz-8i9sb-0vsrcqi7whchuil 0  log message 3\n"
+    StringIO.new content, 'r'
+  end
+
   test "add job description" do
     Capybara.current_driver = Capybara.javascript_driver
     visit page_with_token("active", "/jobs")
@@ -25,4 +37,39 @@ class JobsTest < ActionDispatch::IntegrationTest
     click_link 'Go to dashboard'
     assert page.has_text? 'Active pipelines'
   end
+
+  test "view job log" do
+    Capybara.current_driver = Capybara.javascript_driver
+    job = api_fixture('jobs')['job_with_real_log']
+
+    IO.expects(:popen).returns(fakepipe_with_log_data)
+
+    visit page_with_token("active", "/jobs/#{job['uuid']}")
+    assert page.has_text? job['script_version']
+
+    click_link 'Log'
+    wait_for_ajax
+    assert page.has_text? 'Started at'
+    assert page.has_text? 'Finished at'
+    assert page.has_text? 'log message 1'
+    assert page.has_text? 'log message 2'
+    assert page.has_text? 'log message 3'
+    assert page.has_no_text? 'Showing only 100 bytes of this log'
+  end
+
+  test 'view partial job log' do
+    Capybara.current_driver = Capybara.javascript_driver
+    # This config will be restored during teardown by ../test_helper.rb:
+    Rails.configuration.log_viewer_max_bytes = 100
+
+    IO.expects(:popen).returns(fakepipe_with_log_data)
+    job = api_fixture('jobs')['job_with_real_log']
+
+    visit page_with_token("active", "/jobs/#{job['uuid']}")
+    assert page.has_text? job['script_version']
+
+    click_link 'Log'
+    wait_for_ajax
+    assert page.has_text? 'Showing only 100 bytes of this log'
+  end
 end