marty 2.8.0 → 2.9.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1e99ecbf41a6cda553cf318fb21bbe9c3150ec13e46b074171eaa1bd1ea12aed
4
- data.tar.gz: c6dcdf2a95d456e27189c1369ff54de3d62ce4cd58b5d7125bf8f83d57ba8d57
3
+ metadata.gz: c435918b8631f55957b62cb3137f3aab3fede68f9f36b9fb5e23ad5eba146d7a
4
+ data.tar.gz: cb3cd4077c2fea46d6d7a6575d00894ea7db6703bfdb898490f893703d909bfb
5
5
  SHA512:
6
- metadata.gz: a43ae65fe90a06f4c1c35652aaba4627431ea449fedc6c262aa37a384d5d4e02d879a47c145b9dab56c756025d42e92d2c49e1a9658301ba50598164dc3e514b
7
- data.tar.gz: ef2702ad5285cb59f777faa7b1ecceecd570945e490100e6542cd3fe7e237e597d491e3b9e7f7b9de32149645959b9142481efc3bf8614330a344a234f9c2397
6
+ metadata.gz: 364f286811546d110fff8a4325a4e488e3f79d166f5696f12ad7d9a2c2a481316745d54347f19a04c692315b518ee9d85ac7de80b3c71aeb1b14cd0fc6adb22d
7
+ data.tar.gz: ae33ba46d6118abcd9b25e06510250b11502b175cb078d80a3be7e463f621713ac9fe11c73b31060c6375ee79d56f8a12e575f21fccb7d425f8e298dcb287614
data/Gemfile CHANGED
@@ -20,6 +20,7 @@ group :development, :test do
20
20
  gem 'rails-controller-testing'
21
21
  gem 'rspec-instafail', require: false
22
22
  gem 'rspec-rails'
23
+ gem 'rspec-retry'
23
24
  gem 'rubocop', require: false
24
25
  gem 'selenium-webdriver'
25
26
  gem 'timecop'
data/Gemfile.lock CHANGED
@@ -1,14 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- marty (2.7.3)
4
+ marty (2.9.1)
5
5
  aws-sigv4 (~> 1.0, >= 1.0.2)
6
6
  axlsx (= 3.0.0pre)
7
7
  coderay
8
8
  daemons (~> 1.3.1)
9
9
  delayed_cron_job
10
10
  delayed_job_active_record
11
- delorean_lang (~> 0.6)
11
+ delorean_lang (~> 1.0)
12
12
  json-schema
13
13
  mcfly (~> 0.0.20)
14
14
  net-ldap (~> 0.16.1)
@@ -97,9 +97,9 @@ GEM
97
97
  delayed_job_active_record (4.1.3)
98
98
  activerecord (>= 3.0, < 5.3)
99
99
  delayed_job (>= 3.0, < 5)
100
- delorean_lang (0.6.1)
101
- activerecord (>= 3.2)
102
- treetop (~> 1.5)
100
+ delorean_lang (1.0.0)
101
+ activerecord
102
+ treetop
103
103
  diff-lcs (1.3)
104
104
  erubi (1.8.0)
105
105
  execjs (2.7.0)
data/Makefile CHANGED
@@ -1,2 +1,2 @@
1
- include make-dummy.mk
1
+ include make-app.mk
2
2
 
data/README.md CHANGED
@@ -72,15 +72,15 @@ $ cp -r PATH/TO/YOUR/EXTJS/FILES spec/dummy/public/extjs
72
72
  You can run it with docker:
73
73
 
74
74
  ```bash
75
- $ make dummy-app-initialise-docker
75
+ $ make app-initialise-docker
76
76
 
77
- $ make dummy-app-start
77
+ $ make app-start
78
78
  ```
79
79
 
80
80
  To run tests:
81
81
 
82
82
  ```bash
83
- $ make dummy-app-bash
83
+ $ make app-bash
84
84
 
85
85
  $ HEADLESS=true rspec
86
86
  ```
@@ -3,7 +3,7 @@ require 'marty/api_config_view'
3
3
  require 'marty/api_log_view'
4
4
  require 'marty/config_view'
5
5
  require 'marty/data_grid_view'
6
- require 'marty/background_job_schedule_view'
6
+ require 'marty/schedule_jobs_dashboard'
7
7
  require 'marty/event_view'
8
8
  require 'marty/import_type_view'
9
9
  require 'marty/new_posting_window'
@@ -113,7 +113,7 @@ class Marty::MainAuthApp < Marty::AuthApp
113
113
  :bg_status,
114
114
  :bg_stop,
115
115
  :bg_restart,
116
- :background_job_schedule_view,
116
+ :schedule_jobs_dashboard,
117
117
  ]
118
118
  },
119
119
  ]
@@ -278,8 +278,8 @@ class Marty::MainAuthApp < Marty::AuthApp
278
278
  a.disabled = !self.class.has_admin_perm?
279
279
  end
280
280
 
281
- action :background_job_schedule_view do |a|
282
- a.text = 'Schedule Background Jobs'
281
+ action :schedule_jobs_dashboard do |a|
282
+ a.text = 'Schedule Jobs Dashboard'
283
283
  a.tooltip = 'Edit Delayed Jobs Cron schedules'
284
284
  a.icon_cls = 'fa fa-cog glyph'
285
285
  a.disabled = !self.class.has_admin_perm?
@@ -383,7 +383,7 @@ class Marty::MainAuthApp < Marty::AuthApp
383
383
 
384
384
  component :api_config_view
385
385
 
386
- component :background_job_schedule_view
386
+ component :schedule_jobs_dashboard
387
387
 
388
388
  component :config_view
389
389
 
@@ -1,4 +1,4 @@
1
- class Marty::BackgroundJobScheduleView < Marty::Grid
1
+ class Marty::ScheduleJobsDashboard < Marty::Grid
2
2
  ACCESSIBLE_BY = [:admin]
3
3
 
4
4
  has_marty_permissions(
@@ -14,10 +14,11 @@ class Marty::BackgroundJobScheduleView < Marty::Grid
14
14
  def configure(c)
15
15
  super
16
16
 
17
- c.title ||= I18n.t('delayed_jobs_schedule_view_title', default: 'Background Jobs Schedule')
17
+ c.title ||= I18n.t('schedule_jobs_dashboard_view_title', default: 'Schedule Jobs Dashboard')
18
18
  c.model = 'Marty::BackgroundJob::Schedule'
19
19
  c.paging = :buffered
20
20
  c.editing = :in_form
21
+ c.multi_select = false
21
22
 
22
23
  c.attributes = [
23
24
  :job_class,
@@ -91,4 +92,4 @@ class Marty::BackgroundJobScheduleView < Marty::Grid
91
92
  end
92
93
  end
93
94
 
94
- BackgroundJobScheduleView = Marty::BackgroundJobScheduleView
95
+ ScheduleJobsDashboard = Marty::ScheduleJobsDashboard
@@ -86,13 +86,13 @@ class Marty::DataGrid < Marty::Base
86
86
 
87
87
  # FIXME: if the caller requests data as part of fields, there could
88
88
  # be memory concerns with caching since some data_grids have massive data
89
- cached_delorean_fn :lookup_h, sig: [2, 3] do |pt, name, fields = nil|
89
+ delorean_fn :lookup_h, cache: true, sig: [2, 3] do |pt, name, fields = nil|
90
90
  fields ||= %w(id group_id created_dt metadata data_type name)
91
91
  dga = mcfly_pt(pt).where(name: name).pluck(*fields).first
92
92
  dga && Hash[fields.zip(dga)]
93
93
  end
94
94
 
95
- cached_delorean_fn :exists, sig: 2 do |pt, name|
95
+ delorean_fn :exists, cache: true, sig: 2 do |pt, name|
96
96
  Marty::DataGrid.mcfly_pt(pt).where(name: name).exists?
97
97
  end
98
98
 
@@ -235,16 +235,16 @@ class Marty::DataGrid < Marty::Base
235
235
  end
236
236
 
237
237
  # private method used to cache lookup_grid_distinct_entry_h result
238
- cached_delorean_fn :lookup_grid_h_priv,
239
- private: true, sig: 4 do |pt, dgh, h, distinct|
238
+ delorean_fn :lookup_grid_h_priv,
239
+ private: true, cache: true, sig: 4 do |pt, dgh, h, distinct|
240
240
 
241
241
  lookup_grid_distinct_entry_h(
242
242
  pt, h, dgh, nil, true, false, distinct)['result']
243
243
  end
244
244
 
245
- # FIXME: using cached_delorean_fn just for the caching -- this is
245
+ # FIXME: using delorean_fn just for the caching -- this is
246
246
  # not expected to be called from Delorean.
247
- cached_delorean_fn :find_class_instance, sig: 3 do |pt, klass, v|
247
+ delorean_fn :find_class_instance, cache: true, sig: 3 do |pt, klass, v|
248
248
  if ::Marty::EnumHelper.pg_enum?(klass: klass)
249
249
  klass.find_by_name(v)
250
250
  else
@@ -64,7 +64,7 @@ class Marty::Tag < Marty::Base
64
64
  tag
65
65
  end
66
66
 
67
- cached_delorean_fn :lookup, sig: 1 do |name|
67
+ delorean_fn :lookup, cache: true, sig: 1 do |name|
68
68
  t = find_by_name(name).select(get_struct_attrs)
69
69
  t && t.attributes
70
70
  end
@@ -24,8 +24,7 @@ services:
24
24
  - .:/opt/app:delegated
25
25
  - '.bash_history.docker:/root/.bash_history'
26
26
  - '.pry_history.docker:/root/.pry_history'
27
- volumes_from:
28
- - bundle_box
27
+ - bundle_box:/bundle_box
29
28
  tty: true
30
29
  stdin_open: true
31
30
 
@@ -41,4 +40,5 @@ services:
41
40
 
42
41
  volumes:
43
42
  postgresql-data:
43
+ bundle_box:
44
44
 
@@ -10,10 +10,8 @@ module Mcfly::Model
10
10
  !private && q.is_a?(ActiveRecord::Base) ? make_openstruct(q) : q
11
11
  end
12
12
 
13
- def base_mcfly_lookup(meth, name, options = {}, &block)
14
- priv = options[:private]
15
-
16
- send(meth, name, options) do |ts, *args|
13
+ def base_mcfly_lookup(name, options = {}, &block)
14
+ delorean_fn name, options do |ts, *args|
17
15
  raise 'time cannot be nil' if ts.nil?
18
16
 
19
17
  # FIXME: sig is removed from delorean. We need to find a better way
@@ -37,16 +35,16 @@ module Mcfly::Model
37
35
 
38
36
  q = q.first if q.respond_to?(:first) && options[:mode] == :first
39
37
 
40
- hash_if_necessary(q, priv)
38
+ hash_if_necessary(q, options[:private])
41
39
  end
42
40
  end
43
41
 
44
42
  def cached_mcfly_lookup(name, options = {}, &block)
45
- base_mcfly_lookup(:cached_delorean_fn, name, options, &block)
43
+ base_mcfly_lookup(name, options.merge(cache: true), &block)
46
44
  end
47
45
 
48
46
  def mcfly_lookup(name, options = {}, &block)
49
- base_mcfly_lookup(:delorean_fn, name, options, &block)
47
+ base_mcfly_lookup(name, options, &block)
50
48
  end
51
49
 
52
50
  def gen_mcfly_lookup(name, attrs, options = {})
@@ -80,8 +78,7 @@ module Mcfly::Model
80
78
  raise 'bad attrs' unless Array === attrs
81
79
  end
82
80
 
83
- fn = cache ? :cached_delorean_fn : :delorean_fn
84
- base_mcfly_lookup(fn, name, options + { sig: attrs.length + 1,
81
+ base_mcfly_lookup(name, options + { sig: attrs.length + 1,
85
82
  mode: mode }) do |_t, *attr_list|
86
83
 
87
84
  attr_list_ids = attr_list.each_with_index.map do |_x, i|
@@ -140,10 +137,15 @@ module Mcfly::Model
140
137
  raise "need #{rel_attr} argument" unless lpi
141
138
 
142
139
  # cache if mode is not nil
143
- fn = options.fetch(:mode, :first) ? :cached_delorean_fn : :delorean_fn
144
140
  priv = options[:private]
145
141
 
146
- send(fn, name, sig: attrs.length + 1) do |ts, *args|
142
+ delorean_options = {
143
+ private: options.fetch(:private, false),
144
+ cache: options.fetch(:cache, false),
145
+ sig: attrs.length + 1
146
+ }
147
+
148
+ delorean_fn name, delorean_options do |ts, *args|
147
149
  # Example: rel is a Gemini::SecurityInstrument instance.
148
150
  rel = args[lpi]
149
151
  raise "#{rel_attr} can't be nil" unless rel
data/lib/marty/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Marty
2
- VERSION = '2.8.0'
2
+ VERSION = '2.9.1'
3
3
  end
@@ -1,47 +1,46 @@
1
- dummy-app-build:
1
+ app-build:
2
2
  docker-compose --file=docker-compose.dummy.yml build
3
3
 
4
- dummy-app:
4
+ app:
5
5
  docker-compose --file=docker-compose.dummy.yml up -d app
6
6
  docker attach marty_app_1
7
7
 
8
- dummy-app-start:
8
+ app-start:
9
9
  docker-compose --file=docker-compose.dummy.yml up -d app
10
10
  docker attach marty_app_1
11
11
 
12
- dummy-app-stop:
12
+ app-stop:
13
13
  docker-compose --file=docker-compose.dummy.yml stop
14
14
 
15
- dummy-app-down:
15
+ app-down:
16
16
  docker-compose --file=docker-compose.dummy.yml down
17
17
 
18
- dummy-app-bash:
18
+ app-bash:
19
19
  docker-compose --file=docker-compose.dummy.yml run --rm app bash
20
20
 
21
- dummy-app-console:
21
+ app-console:
22
22
  docker-compose --file=docker-compose.dummy.yml run --rm app /bin/bash -c "cd spec/dummy && bin/rails c"
23
23
 
24
- dummy-app-initialise-docker:
24
+ app-initialise-docker:
25
25
  touch .bash_history.docker
26
26
  touch .pry_history.docker
27
- make dummy-app-install
28
- make dummy-app-db-prepare
27
+ make app-install
28
+ make app-db-prepare
29
29
 
30
- dummy-app-install:
30
+ app-install:
31
31
  docker-compose --file=docker-compose.dummy.yml run --rm app gem install bundler
32
- make dummy-app-install-bundle
32
+ make app-install-bundle
33
33
 
34
- dummy-app-install-bundle:
34
+ app-install-bundle:
35
35
  docker-compose --file=docker-compose.dummy.yml run --rm app bundle
36
36
 
37
- dummy-app-db-drop:
37
+ app-db-drop:
38
38
  docker-compose --file=docker-compose.dummy.yml run --rm app rake db:drop
39
39
 
40
- dummy-app-db-prepare:
40
+ app-db-prepare:
41
41
  cp spec/dummy/config/database.yml.example spec/dummy/config/database.yml
42
42
  docker-compose --file=docker-compose.dummy.yml run --rm app bundle exec rake db:create db:migrate db:seed app:marty:load_scripts
43
43
 
44
- dummy-app-db-seed:
44
+ app-db-seed:
45
45
  docker-compose --file=docker-compose.dummy.yml run --rm app rake db:seed
46
46
 
47
-
data/marty.gemspec CHANGED
@@ -33,7 +33,7 @@ Gem::Specification.new do |s|
33
33
 
34
34
  s.add_dependency 'axlsx', '3.0.0pre'
35
35
 
36
- s.add_dependency 'delorean_lang', '~> 0.6'
36
+ s.add_dependency 'delorean_lang', '~> 1.0'
37
37
  s.add_dependency 'mcfly', '~> 0.0.20'
38
38
 
39
39
  s.add_dependency 'coderay'
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- feature 'Background jobs schedule view', js: true do
3
+ feature 'Schedule Jobs Dashboard', js: true do
4
4
  before do
5
5
  Delayed::Job.delete_all
6
6
  populate_test_users
@@ -12,17 +12,17 @@ feature 'Background jobs schedule view', js: true do
12
12
  wait_for_ajax
13
13
  press('System')
14
14
  press('Background Jobs')
15
- press('Schedule Background Jobs')
15
+ press('Schedule Jobs Dashboard')
16
16
  wait_for_ajax
17
17
  end
18
18
 
19
19
  it 'access denied' do
20
- expect(page).to_not have_content 'Background Jobs Schedule'
20
+ expect(page).to_not have_content 'Schedule Jobs Dashboard'
21
21
  end
22
22
  end
23
23
 
24
24
  context 'as admin' do
25
- let(:schedule_view) { netzke_find('background_job_schedule_view') }
25
+ let(:schedule_view) { netzke_find('schedule_jobs_dashboard') }
26
26
 
27
27
  let!(:schedule) do
28
28
  Marty::BackgroundJob::Schedule.create(
@@ -44,11 +44,11 @@ feature 'Background jobs schedule view', js: true do
44
44
  wait_for_ajax
45
45
  press('System')
46
46
  press('Background Jobs')
47
- press('Schedule Background Jobs')
47
+ press('Schedule Jobs Dashboard')
48
48
 
49
49
  wait_for_ajax
50
50
 
51
- expect(page).to have_content 'Background Jobs Schedule'
51
+ expect(page).to have_content 'Schedule Jobs Dashboard'
52
52
  end
53
53
 
54
54
  it 'creates new schedule' do
@@ -83,10 +83,10 @@ describe 'McflyModel' do
83
83
  {
84
84
  'AA' => script,
85
85
  }, dt)
86
- @errs = ['E1', 'lookup_p',
87
- 'E2', 'clookup_p',
88
- 'E3', 'lookupn_p',
89
- 'E4', 'clookupn_p']
86
+ @errs = ['E1', 'lookup',
87
+ 'E2', 'clookup',
88
+ 'E3', 'lookupn',
89
+ 'E4', 'clookupn']
90
90
 
91
91
  @errs.in_groups_of(2) do |name, fn|
92
92
  Marty::Script.load_script_bodies(
@@ -173,34 +173,6 @@ describe 'McflyModel' do
173
173
  end
174
174
  end
175
175
 
176
- it 'raises exception when too many arguments passed (2)' do
177
- # non-generated
178
- aggregate_failures 'errors' do
179
- expect do
180
- Marty::ScriptSet.new.get_engine('E5').evaluate(
181
- 'Err',
182
- ['result'],
183
- 'pt' => Time.zone.now, 'e_id' => nil, 'bc_id' => nil
184
- )
185
- end.to raise_error(
186
- ArgumentError,
187
- /Too many args to a_func_p/
188
- )
189
-
190
- expect do
191
- Marty::ScriptSet.new.get_engine('E6').evaluate(
192
- 'Err',
193
- ['result'],
194
- 'pt' => Time.zone.now, 'e_id' => nil,
195
- 'bc_id' => nil, 'mm' => nil
196
- )
197
- end.to raise_error(
198
- ArgumentError,
199
- /Too many args to b_func_p/
200
- )
201
- end
202
- end
203
-
204
176
  it 'caching times' do
205
177
  ts = DateTime.now
206
178
  x = Benchmark.measure do
data/spec/spec_helper.rb CHANGED
@@ -14,6 +14,8 @@ Dummy::Application.initialize! unless Dummy::Application.initialized?
14
14
  ActiveRecord::Migrator.migrate File.expand_path('../../db/migrate/', __FILE__)
15
15
  ActiveRecord::Migrator.migrate File.expand_path('../dummy/db/migrate/', __FILE__)
16
16
 
17
+ require 'rspec/retry'
18
+
17
19
  RSpec.configure do |config|
18
20
  config.include Marty::RSpec::Suite
19
21
  config.include Marty::RSpec::SharedConnection
@@ -58,4 +60,16 @@ RSpec.configure do |config|
58
60
  config.use_transactional_fixtures = true
59
61
 
60
62
  Netzke::Testing.rspec_init(config)
63
+
64
+ config.verbose_retry = true
65
+ config.display_try_failure_messages = true
66
+
67
+ config.around :each, :js do |ex|
68
+ ex.run_with_retry retry: 3
69
+ end
70
+
71
+ config.retry_callback = proc do |ex|
72
+ # run some additional clean up task - can be filtered by example metadata
73
+ Capybara.reset! if ex.metadata[:js]
74
+ end
61
75
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marty
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.0
4
+ version: 2.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arman Bostani
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2019-06-12 00:00:00.000000000 Z
17
+ date: 2019-06-17 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: pg
@@ -64,14 +64,14 @@ dependencies:
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '0.6'
67
+ version: '1.0'
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '0.6'
74
+ version: '1.0'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: mcfly
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -254,7 +254,6 @@ files:
254
254
  - app/components/marty/api_log_view.rb
255
255
  - app/components/marty/auth_app.rb
256
256
  - app/components/marty/auth_app/client/auth_app.js
257
- - app/components/marty/background_job_schedule_view.rb
258
257
  - app/components/marty/base_rule_view.rb
259
258
  - app/components/marty/config_view.rb
260
259
  - app/components/marty/data_grid_view.rb
@@ -295,6 +294,7 @@ files:
295
294
  - app/components/marty/report_select/client/report_select.js
296
295
  - app/components/marty/reporting.rb
297
296
  - app/components/marty/reporting/client/reporting.js
297
+ - app/components/marty/schedule_jobs_dashboard.rb
298
298
  - app/components/marty/script_form.rb
299
299
  - app/components/marty/script_form/client/script_form.js
300
300
  - app/components/marty/script_grid.rb
@@ -453,7 +453,7 @@ files:
453
453
  - lib/tasks/marty_jobs.rake
454
454
  - lib/tasks/marty_tasks.rake
455
455
  - lib/tasks/scripts_tasks.rake
456
- - make-dummy.mk
456
+ - make-app.mk
457
457
  - marty.gemspec
458
458
  - other/marty/api/base.rb
459
459
  - other/marty/diagnostic/aws/ec2_instance.rb
@@ -1582,7 +1582,6 @@ files:
1582
1582
  - spec/dummy/spec/features/javascripts
1583
1583
  - spec/dummy/tmp/.gitkeep
1584
1584
  - spec/features/auth_app_spec.rb
1585
- - spec/features/background_job_schedule_spec.rb
1586
1585
  - spec/features/data_import_spec.rb
1587
1586
  - spec/features/endpoint_access.rb
1588
1587
  - spec/features/enum_spec.rb
@@ -1592,6 +1591,7 @@ files:
1592
1591
  - spec/features/log_view_spec.rb
1593
1592
  - spec/features/reporting_spec.rb
1594
1593
  - spec/features/rule_spec.rb
1594
+ - spec/features/schedule_jobs_dashboard_spec.rb
1595
1595
  - spec/features/scripting_spec.rb
1596
1596
  - spec/features/scripting_test_spec.rb
1597
1597
  - spec/features/user_view_spec.rb