marty 9.3.0 → 9.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/.gemignore +2 -0
  3. data/.gitignore +3 -0
  4. data/.rubocop.yml +34 -1
  5. data/Gemfile +1 -0
  6. data/Rakefile +10 -0
  7. data/app/assets/javascripts/marty/cable.js +21 -9
  8. data/app/channels/application_cable/connection.rb +1 -1
  9. data/app/channels/marty/notification_channel.rb +4 -1
  10. data/app/components/marty/api_config_view.rb +1 -1
  11. data/app/components/marty/api_log_view.rb +1 -1
  12. data/app/components/marty/auth_app.rb +8 -1
  13. data/app/components/marty/auth_app/client/auth_app.js +6 -0
  14. data/app/components/marty/data_grid_view.rb +6 -6
  15. data/app/components/marty/extras/misc.rb +1 -1
  16. data/app/components/marty/log_view.rb +1 -1
  17. data/app/components/marty/posting_grid.rb +1 -1
  18. data/app/components/marty/script_form.rb +3 -3
  19. data/app/components/marty/user_view.rb +1 -1
  20. data/app/components/marty/users/user_view.rb +1 -1
  21. data/app/controllers/marty/application_controller.rb +7 -7
  22. data/app/controllers/marty/delayed_job_controller.rb +7 -4
  23. data/app/controllers/marty/diagnostic/controller.rb +1 -1
  24. data/app/controllers/marty/job_controller.rb +2 -2
  25. data/app/models/marty/api_auth.rb +3 -3
  26. data/app/models/marty/api_config.rb +1 -1
  27. data/app/models/marty/base_rule.rb +1 -1
  28. data/app/models/marty/config.rb +5 -5
  29. data/app/models/marty/data_grid.rb +3 -3
  30. data/app/models/marty/delorean_rule.rb +2 -2
  31. data/app/models/marty/grid_index_boolean.rb +2 -2
  32. data/app/models/marty/grid_index_int4range.rb +1 -1
  33. data/app/models/marty/grid_index_integer.rb +1 -1
  34. data/app/models/marty/grid_index_numrange.rb +1 -1
  35. data/app/models/marty/grid_index_string.rb +1 -1
  36. data/app/models/marty/import_type.rb +2 -2
  37. data/app/models/marty/notifications/notification.rb +2 -1
  38. data/app/models/marty/posting.rb +6 -6
  39. data/app/models/marty/posting_type.rb +2 -2
  40. data/app/models/marty/promise.rb +4 -3
  41. data/app/models/marty/script.rb +7 -7
  42. data/app/models/marty/tag.rb +5 -5
  43. data/app/models/marty/token.rb +1 -1
  44. data/app/models/marty/user.rb +11 -10
  45. data/app/models/marty/user_role.rb +2 -2
  46. data/app/models/marty/vw_promise.rb +2 -1
  47. data/app/services/marty/background_job/update_schedule.rb +1 -1
  48. data/app/services/marty/data_grid/constraint.rb +4 -3
  49. data/app/services/marty/jobs/schedule.rb +2 -2
  50. data/lib/marty/data_change.rb +1 -1
  51. data/lib/marty/data_conversion.rb +1 -1
  52. data/lib/marty/migrations.rb +2 -2
  53. data/lib/marty/rpc_call.rb +2 -1
  54. data/lib/marty/rule_script_set.rb +1 -3
  55. data/lib/marty/util.rb +2 -2
  56. data/lib/marty/version.rb +1 -1
  57. data/lib/tasks/scripts_tasks.rake +2 -2
  58. data/marty.gemspec +5 -1
  59. data/spec/controllers/job_controller_spec.rb +7 -7
  60. data/spec/controllers/rpc_controller_spec.rb +8 -8
  61. data/spec/controllers/rpc_import_spec.rb +3 -3
  62. data/spec/features/data_blame_report_spec.rb +1 -1
  63. data/spec/features/data_grid_spec.rb +101 -3
  64. data/spec/features/enum_values_report_spec.rb +1 -1
  65. data/spec/features/extjs_spec.rb +1 -1
  66. data/spec/features/jobs_dashboard_spec.rb +2 -2
  67. data/spec/features/log_view_spec.rb +1 -1
  68. data/spec/features/reporting_spec.rb +3 -3
  69. data/spec/features/scripting_spec.rb +3 -3
  70. data/spec/features/scripting_test_spec.rb +3 -3
  71. data/spec/features/user_list_report_spec.rb +1 -1
  72. data/spec/fixtures/misc/data_grid_6.txt +9 -0
  73. data/spec/fixtures/misc/data_grid_7.txt +7 -0
  74. data/spec/fixtures/misc/data_grid_8.txt +10 -0
  75. data/spec/fixtures/misc/data_grid_9.txt +10 -0
  76. data/spec/lib/data_blame_spec.rb +1 -1
  77. data/spec/lib/data_importer_spec.rb +4 -4
  78. data/spec/lib/delorean_query_spec.rb +1 -1
  79. data/spec/lib/logger_spec.rb +1 -1
  80. data/spec/lib/mcfly_model_spec.rb +2 -2
  81. data/spec/lib/table_report_spec.rb +1 -1
  82. data/spec/models/api_auth_spec.rb +2 -2
  83. data/spec/models/data_grid_spec.rb +3 -3
  84. data/spec/models/posting_spec.rb +12 -12
  85. data/spec/models/promise_spec.rb +1 -1
  86. data/spec/models/rule_spec.rb +1 -1
  87. data/spec/models/script_spec.rb +1 -1
  88. data/spec/other/diagnostic/delayed_job_version_spec.rb +1 -1
  89. data/spec/spec_helper.rb +3 -0
  90. data/spec/support/netzke.rb +2 -2
  91. data/spec/support/setup.rb +1 -1
  92. data/spec/support/simplecov_helper.rb +94 -0
  93. data/spec/support/users.rb +2 -2
  94. metadata +8 -3
  95. data/.gitlab-ci.yml +0 -117
@@ -203,7 +203,7 @@ class Marty::DataConversion
203
203
  # got an id for an association -- FIXME: perhaps this should
204
204
  # not be allowed at all?
205
205
  raise "#{type[:assoc_class].name} with id #{v} not found" unless
206
- type[:assoc_class].find_by_id(v)
206
+ type[:assoc_class].find_by(id: v)
207
207
 
208
208
  h[ga] = v
209
209
  else
@@ -201,7 +201,7 @@ EOSQL
201
201
  end.group_by { |a| a[:name] }.each do |_k, v|
202
202
  v.sort! { |a, b| b[:version] <=> a[:version] }
203
203
  end
204
- time_now = Time.now.utc
204
+ time_now = Time.zone.now.utc
205
205
  gen_count = 0
206
206
 
207
207
  sql_files.each do |sql|
@@ -224,7 +224,7 @@ EOSQL
224
224
  File.open(sql_snap_literal, 'w') do |f|
225
225
  f.print sql_lines.join
226
226
  end
227
- puts "creating #{newbase}.rb"
227
+ Rails.logger.info "creating #{newbase}.rb"
228
228
 
229
229
  # only split on "GO" at the start of a line with optional whitespace
230
230
  # before EOL. GO in comments could trigger this and will cause an error
@@ -25,7 +25,7 @@ class Marty::RpcCall
25
25
  end
26
26
 
27
27
  res = JSON.parse(response.body)
28
- raise res['error'] if res.is_a?(Hash) && !res['error'].blank?
28
+ raise res['error'] if res.is_a?(Hash) && res['error'].present?
29
29
 
30
30
  res
31
31
  end
@@ -55,6 +55,7 @@ class Marty::RpcCall
55
55
  http = Net::HTTP.new(host, port)
56
56
  request = Net::HTTP::Post.new(path)
57
57
  http.use_ssl = use_ssl
58
+ http.ciphers = options[:ciphers] if options[:ciphers]
58
59
  http.read_timeout = options[:read_timeout] if options[:read_timeout]
59
60
  http.open_timeout = options[:open_timeout] if options[:open_timeout]
60
61
  request.add_field('Content-Type', 'xml')
@@ -28,9 +28,7 @@ class Marty::RuleScriptSet < Delorean::AbstractContainer
28
28
  super()
29
29
  end
30
30
 
31
- def parse_check(sname, body)
32
- sset.parse_check(sname, body)
33
- end
31
+ delegate :parse_check, to: :sset
34
32
 
35
33
  def write_attr(k, v)
36
34
  equals, rhs = v == :parameter ? [' =?', ''] :
@@ -1,6 +1,6 @@
1
1
  module Marty::Util
2
2
  def self.set_posting_id(sid)
3
- snap = Marty::Posting.find_by_id(sid)
3
+ snap = Marty::Posting.find_by(id: sid)
4
4
  sid = nil if snap && (snap.created_dt == Float::INFINITY)
5
5
  Netzke::Base.session[:posting] = sid
6
6
  end
@@ -9,7 +9,7 @@ module Marty::Util
9
9
  sid = Netzke::Base.session && Netzke::Base.session[:posting]
10
10
  return unless sid.is_a? Integer
11
11
 
12
- sid && Marty::Posting.find_by_id(sid)
12
+ sid && Marty::Posting.find_by(id: sid)
13
13
  end
14
14
 
15
15
  def self.get_posting_time
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Marty
4
- VERSION = '9.3.0'
4
+ VERSION = '9.3.2'
5
5
  end
@@ -6,8 +6,8 @@ namespace :marty do
6
6
 
7
7
  desc 'load scripts from the LOAD_DIR directory'
8
8
  task load_scripts: :environment do
9
- Mcfly.whodunnit = Marty::User.find_by_login(
10
- Rails.configuration.marty.system_account
9
+ Mcfly.whodunnit = Marty::User.find_by(
10
+ login: Rails.configuration.marty.system_account
11
11
  )
12
12
 
13
13
  raise 'must have system user account seeded' unless Mcfly.whodunnit
@@ -7,6 +7,10 @@ require 'zlib'
7
7
  require 'csv'
8
8
  require 'pathname'
9
9
 
10
+ git_tracked_files = `git ls-files`.split($\)
11
+ gem_ignored_files = `git ls-files -i -X .gemignore`.split($\)
12
+ files = git_tracked_files - gem_ignored_files
13
+
10
14
  Gem::Specification.new do |s|
11
15
  s.name = 'marty'
12
16
  s.version = Marty::VERSION
@@ -24,7 +28,7 @@ Gem::Specification.new do |s|
24
28
  s.summary = 'A framework for working with versioned data'
25
29
  s.description =
26
30
  'Marty is a framework for viewing and reporting on versioned data.'
27
- s.files = `git ls-files`.split($\)
31
+ s.files = files
28
32
  s.licenses = ['MIT']
29
33
  # used for signing aws ec2 requests
30
34
  s.add_dependency 'actioncable'
@@ -17,7 +17,7 @@ describe Marty::JobController, slow: true do
17
17
  # means we lose the globally set uesr
18
18
  Mcfly.whodunnit = system_user
19
19
 
20
- Marty::Script.load_script_bodies(promise_bodies, Date.today)
20
+ Marty::Script.load_script_bodies(promise_bodies, Time.zone.today)
21
21
 
22
22
  start_delayed_job
23
23
  end
@@ -111,7 +111,7 @@ describe Marty::JobController, slow: true do
111
111
  res = engine.background_eval('Z', { 'p_title' => NAME_C }, ['result'])
112
112
  wait_for_jobs
113
113
 
114
- promise = Marty::Promise.find_by_title(NAME_C)
114
+ promise = Marty::Promise.find_by(title: NAME_C)
115
115
 
116
116
  get 'download', params: {
117
117
  job_id: promise.id,
@@ -126,7 +126,7 @@ describe Marty::JobController, slow: true do
126
126
  engine.background_eval('Z', { 'p_title' => NAME_E }, ['result'])
127
127
  wait_for_jobs
128
128
 
129
- promise = Marty::Promise.find_by_title(NAME_E)
129
+ promise = Marty::Promise.find_by(title: NAME_E)
130
130
 
131
131
  res = promise.result['result']
132
132
 
@@ -167,7 +167,7 @@ describe Marty::JobController, slow: true do
167
167
  engine.background_eval('Y', { 'p_title' => title }, ['d'])
168
168
  sleep 5
169
169
 
170
- promise = Marty::Promise.find_by_title(title)
170
+ promise = Marty::Promise.find_by(title: title)
171
171
 
172
172
  res = { 'd' => [
173
173
  { 'z' => 0.875, 'a' => { 'b' => { 'e' => 0.125 } } },
@@ -194,7 +194,7 @@ describe Marty::JobController, slow: true do
194
194
  )
195
195
  sleep 5
196
196
 
197
- promise = Marty::Promise.find_by_title(NAME_B)
197
+ promise = Marty::Promise.find_by(title: NAME_B)
198
198
 
199
199
  expect(promise.result).to eq(
200
200
  'result' => [{ 'a' => 1, 'b' => 1 }, { 'a' => 2, 'b' => 4 }, { 'a' => 3, 'b' => 9 }],
@@ -237,8 +237,8 @@ describe Marty::JobController, slow: true do
237
237
  engine = Marty::ScriptSet.new.get_engine(NAME_G)
238
238
  res = engine.evaluate('V', 'result', {})
239
239
  expect(res).to eq [123]
240
- p1 = Marty::Promise.find_by_title(NAME_G.to_s)
241
- p2 = Marty::Promise.find_by_title("#{NAME_G}2")
240
+ p1 = Marty::Promise.find_by(title: NAME_G.to_s)
241
+ p2 = Marty::Promise.find_by(title: "#{NAME_G}2")
242
242
  expect(p2.parent_id).to eq p1.id
243
243
  end
244
244
  end
@@ -438,7 +438,7 @@ describe Marty::RpcController do
438
438
  end
439
439
 
440
440
  before(:each) do
441
- @p0 = Marty::Posting.do_create('BASE', Date.today, 'a comment')
441
+ @p0 = Marty::Posting.do_create('BASE', Time.zone.today, 'a comment')
442
442
 
443
443
  @t1 = Marty::Script.load_script_bodies({
444
444
  'M1' => sample_script,
@@ -463,16 +463,16 @@ describe Marty::RpcController do
463
463
  'M9Schemas' => script9_schema,
464
464
  'M10Schemas' => script10_schema,
465
465
  'M11Schemas' => script11_schema,
466
- }, Date.today + 1.minute)
466
+ }, Time.zone.today + 1.minute)
467
467
 
468
- @p1 = Marty::Posting.do_create('BASE', Date.today + 2.minute, 'a comment')
468
+ @p1 = Marty::Posting.do_create('BASE', Time.zone.today + 2.minutes, 'a comment')
469
469
 
470
470
  @t2 = Marty::Script.load_script_bodies({
471
471
  'M1' =>
472
472
  sample_script.gsub(/A/, 'AA') + ' e =? "hello"',
473
- }, Date.today + 3.minute)
473
+ }, Time.zone.today + 3.minutes)
474
474
 
475
- @p2 = Marty::Posting.do_create('BASE', Date.today + 4.minute, 'a comment')
475
+ @p2 = Marty::Posting.do_create('BASE', Time.zone.today + 4.minutes, 'a comment')
476
476
  @data = [['some data', 7, [1, 2, 3], { foo: 'bar', baz: 'quz' }, 5, 'string'],
477
477
  ['some more data', [1, 2, 3], 5, { foo: 'bar', baz: 'quz' }, 5, 'string']]
478
478
  @data_json = @data.to_json
@@ -517,7 +517,7 @@ describe Marty::RpcController do
517
517
  expect(res).to include('job_id')
518
518
  job_id = res['job_id']
519
519
 
520
- promise = Marty::Promise.find_by_id(job_id)
520
+ promise = Marty::Promise.find_by(id: job_id)
521
521
 
522
522
  expect(promise.result).to eq('e' => 4)
523
523
 
@@ -542,7 +542,7 @@ describe Marty::RpcController do
542
542
  job_id = res['job_id']
543
543
 
544
544
  marty_whodunnit
545
- Marty::Script.load_scripts(File.join(Rails.root, '../../delorean'), Date.today)
545
+ Marty::Script.load_scripts(Rails.root.join('../../delorean'), Time.zone.today)
546
546
 
547
547
  post 'evaluate', params: {
548
548
  format: :json,
@@ -574,7 +574,7 @@ describe Marty::RpcController do
574
574
  expect(res).to include('job_id')
575
575
  job_id = res['job_id']
576
576
 
577
- promise = Marty::Promise.find_by_id(job_id)
577
+ promise = Marty::Promise.find_by(id: job_id)
578
578
 
579
579
  expect(promise.result).to eq('e' => 4)
580
580
 
@@ -8,15 +8,15 @@ describe Marty::RpcController do
8
8
  @tags << Marty::Script.load_script_bodies({
9
9
  'A' => "A:\n a = 1\n",
10
10
  'B' => "B:\n b = 0\n",
11
- }, Date.today)
11
+ }, Time.zone.today)
12
12
 
13
13
  @tags << Marty::Script.load_script_bodies({
14
14
  'B' => "import A\nB:\n b = A::A().a\n",
15
- }, Date.today + 1.minute)
15
+ }, Time.zone.today + 1.minute)
16
16
 
17
17
  @tags << Marty::Script.load_script_bodies({
18
18
  'A' => "A:\n a = 2\n",
19
- }, Date.today + 2.minute)
19
+ }, Time.zone.today + 2.minutes)
20
20
 
21
21
  # create an untagged version for DEV
22
22
  s = Marty::Script.find_by(obsoleted_dt: 'infinity', name: 'A')
@@ -12,7 +12,7 @@ feature 'Data Blame report', js: true do
12
12
  end
13
13
 
14
14
  def with_user(uname)
15
- u = Marty::User.find_by_login(uname)
15
+ u = Marty::User.find_by(login: uname)
16
16
  begin
17
17
  old_u, Mcfly.whodunnit = Mcfly.whodunnit, u
18
18
  yield(u)
@@ -10,10 +10,15 @@ feature 'data grid view', js: true, speed: :super_slow do
10
10
  Marty::Script.load_scripts
11
11
  dt = DateTime.parse('2017-1-1')
12
12
  p = File.expand_path('../../fixtures/misc', __FILE__)
13
- Dir.glob(p + '/data_grid_*.txt').each do |path|
13
+ Dir.glob(p + '/data_grid_*.txt').sort.each do |path|
14
+ next if path.include?('data_grid_7')
15
+
14
16
  n = File.basename(path, '.txt').camelize
15
17
  Marty::DataGrid.create_from_import(n, File.read(path), dt)
16
18
  end
19
+ path = p + '/data_grid_7.txt'
20
+ Marty::DataGrid.create_from_import('DataGrid7', File.read(path),
21
+ dt + 1.second)
17
22
  u = Marty::User.create!(login: 'grid_user',
18
23
  firstname: 'grid',
19
24
  lastname: 'user',
@@ -295,7 +300,7 @@ feature 'data grid view', js: true, speed: :super_slow do
295
300
  log_in_as('marty')
296
301
  go_to_data_grids
297
302
  dgv = netzke_find('data_grid_view')
298
- grids = dgv.get_col_vals('name', 5)
303
+ grids = dgv.get_col_vals('name', 6)
299
304
  set_one = lambda do |grid, perms|
300
305
  pos = grids.index(grid) + 1
301
306
  dgv.select_row(pos)
@@ -398,7 +403,7 @@ feature 'data grid view', js: true, speed: :super_slow do
398
403
  log_in_as('grid_user')
399
404
  go_to_data_grids(admin: false)
400
405
  dgv = netzke_find('data_grid_user_view')
401
- grids = dgv.get_col_vals('name', 5)
406
+ grids = dgv.get_col_vals('name', 9)
402
407
 
403
408
  # now test some editing, saving, and cancel logic
404
409
  get_latest = lambda do
@@ -407,6 +412,99 @@ feature 'data grid view', js: true, speed: :super_slow do
407
412
  grid = get_latest.call
408
413
  grid.constraint = '>=0<200'
409
414
  grid.save!
415
+
416
+ # check boolean validation
417
+ pos = grids.index('DataGrid6') + 1
418
+ dgv.select_row(pos)
419
+ press('Edit Grid')
420
+ wait_for_ajax
421
+ grid_setup
422
+ cell_edit(3, 0, 'bad')
423
+ press('Save')
424
+ expect(page).to have_content('error: some entries failed constraint or '\
425
+ 'data type check')
426
+ press('OK')
427
+ wait_for_ajax
428
+ press('Cancel')
429
+ press('Yes')
430
+ wait_for_ajax
431
+ press('Edit Grid')
432
+ wait_for_ajax
433
+ # test saving and validation etc
434
+ grid_setup
435
+ cell_edit(3, 0, 'true')
436
+ cell_edit(3, 2, 'true')
437
+ press('Save')
438
+ wait_for_ajax
439
+ dg_data = Marty::DataGrid.mcfly_pt('infinity').find_by(name: 'DataGrid6').
440
+ data.flatten
441
+ expect(dg_data).to eq([true, false, true, false])
442
+
443
+ # class validation
444
+ pos = grids.index('DataGrid7') + 1
445
+ dgv.select_row(pos)
446
+ press('Edit Grid')
447
+ wait_for_ajax
448
+ grid_setup
449
+ cell_edit(1, 0, 'bad')
450
+ press('Save')
451
+ expect(page).to have_content('error: some entries failed constraint or '\
452
+ 'data type check')
453
+ press('OK')
454
+ wait_for_ajax
455
+ press('Cancel')
456
+ press('Yes')
457
+ wait_for_ajax
458
+ press('Edit Grid')
459
+ wait_for_ajax
460
+ # test saving and validation etc
461
+ grid_setup
462
+ cell_edit(1, 0, 'DataGrid8')
463
+ press('Save')
464
+ wait_for_ajax
465
+ dg_data = Marty::DataGrid.mcfly_pt('infinity').find_by(name: 'DataGrid7').
466
+ data.flatten
467
+ expect(dg_data).to eq(['DataGrid8', 'DataGrid3', 'DataGrid4', 'DataGrid5'])
468
+
469
+ # int validation
470
+ pos = grids.index('DataGrid8') + 1
471
+ dgv.select_row(pos)
472
+ press('Edit Grid')
473
+ wait_for_ajax
474
+ grid_setup
475
+ cell_edit(2, 0, 'bad')
476
+ press('Save')
477
+ expect(page).to have_content('error: some entries failed constraint or '\
478
+ 'data type check')
479
+ press('OK')
480
+ wait_for_ajax
481
+ press('Cancel')
482
+ press('Yes')
483
+ wait_for_ajax
484
+ press('Edit Grid')
485
+ wait_for_ajax
486
+ # test saving and validation etc
487
+ grid_setup
488
+ cell_edit(2, 0, 123)
489
+ press('Save')
490
+ wait_for_ajax
491
+ dg_data = Marty::DataGrid.mcfly_pt('infinity').find_by(name: 'DataGrid8').
492
+ data.flatten
493
+ expect(dg_data).to eq([123, 360, 120, 180, 240, 360])
494
+
495
+ # string grid
496
+ pos = grids.index('DataGrid9') + 1
497
+ dgv.select_row(pos)
498
+ press('Edit Grid')
499
+ wait_for_ajax
500
+ grid_setup
501
+ cell_edit(2, 0, 'bad')
502
+ press('Save')
503
+ wait_for_ajax
504
+ dg_data = Marty::DataGrid.mcfly_pt('infinity').find_by(name: 'DataGrid9').
505
+ data.flatten
506
+ expect(dg_data).to eq(['bad', '360', '120', '180', '240', '360'])
507
+
410
508
  pos = grids.index('DataGrid5') + 1
411
509
  dgv.select_row(pos)
412
510
  press('Edit Grid')
@@ -12,7 +12,7 @@ feature 'Enum Values List report', js: true do
12
12
  end
13
13
 
14
14
  def with_user(uname)
15
- u = Marty::User.find_by_login(uname)
15
+ u = Marty::User.find_by(login: uname)
16
16
  begin
17
17
  old_u, Mcfly.whodunnit = Mcfly.whodunnit, u
18
18
  yield(u)
@@ -16,7 +16,7 @@ feature 'on grid cells', js: true do
16
16
  let(:uv) { netzke_find('user_view') }
17
17
 
18
18
  before do
19
- Mcfly.whodunnit = Marty::User.find_by_login('marty')
19
+ Mcfly.whodunnit = Marty::User.find_by(login: 'marty')
20
20
  end
21
21
 
22
22
  it 'grid cells should encode html' do
@@ -10,14 +10,14 @@ describe 'Jobs Dashboard', type: :feature, js: true, capybara: true do
10
10
  title: 'Test Job 1',
11
11
  user: Marty::User.find_by(login: 'marty'),
12
12
  cformat: 'csv',
13
- start_dt: Time.now,
13
+ start_dt: Time.zone.now,
14
14
  promise_type: 'delorean'
15
15
  )
16
16
  Marty::Promise.create!(
17
17
  title: 'Test Job 2',
18
18
  user: other_user,
19
19
  cformat: 'csv',
20
- start_dt: Time.now,
20
+ start_dt: Time.zone.now,
21
21
  promise_type: 'delorean'
22
22
  )
23
23
 
@@ -23,7 +23,7 @@ feature 'logger view', js: true, capybara: true do
23
23
  timestamp: Time.zone.now - 10.days)
24
24
 
25
25
  @ts = Marty::Log.select(:timestamp).order(timestamp: :desc).map do |(ts)|
26
- Time.zone.at(ts[:timestamp]).strftime('%Y-%m-%dT%H:%M:%S.%L%:z')
26
+ Time.zone.at(ts[:timestamp]).strftime('%Y-%m-%d %H:%M:%S')
27
27
  end
28
28
 
29
29
  @clean_file = "/tmp/clean_#{Process.pid}.psql"
@@ -22,7 +22,7 @@ feature 'under Applications menu, Reports workflows', js: true do
22
22
  end
23
23
 
24
24
  def with_user(uname, &block)
25
- u = Marty::User.find_by_login(uname)
25
+ u = Marty::User.find_by(login: uname)
26
26
  begin
27
27
  old_u, Mcfly.whodunnit = Mcfly.whodunnit, u
28
28
  block.call(u)
@@ -81,13 +81,13 @@ DELOREAN
81
81
 
82
82
  Marty::Script.
83
83
  load_script_bodies({ 'SomeReport' => a_report, },
84
- Date.today)
84
+ Time.zone.today)
85
85
 
86
86
  Marty::Script.
87
87
  load_script_bodies({ 'SomeReport' =>
88
88
  a_report +
89
89
  "CC: BB\n title=\"CC\"\n result = 123" },
90
- Date.today + 1.minute)
90
+ Time.zone.today + 1.minute)
91
91
  end
92
92
  end
93
93