marty 2.8.0 → 2.9.1

Sign up to get free protection for your applications and to get access to all the features.
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