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 +4 -4
- data/Gemfile +1 -0
- data/Gemfile.lock +5 -5
- data/Makefile +1 -1
- data/README.md +3 -3
- data/app/components/marty/main_auth_app.rb +5 -5
- data/app/components/marty/{background_job_schedule_view.rb → schedule_jobs_dashboard.rb} +4 -3
- data/app/models/marty/data_grid.rb +6 -6
- data/app/models/marty/tag.rb +1 -1
- data/docker-compose.dummy.yml +2 -2
- data/lib/marty/mcfly_model.rb +13 -11
- data/lib/marty/version.rb +1 -1
- data/{make-dummy.mk → make-app.mk} +16 -17
- data/marty.gemspec +1 -1
- data/spec/features/{background_job_schedule_spec.rb → schedule_jobs_dashboard_spec.rb} +6 -6
- data/spec/lib/mcfly_model_spec.rb +4 -32
- data/spec/spec_helper.rb +14 -0
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c435918b8631f55957b62cb3137f3aab3fede68f9f36b9fb5e23ad5eba146d7a
|
4
|
+
data.tar.gz: cb3cd4077c2fea46d6d7a6575d00894ea7db6703bfdb898490f893703d909bfb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 364f286811546d110fff8a4325a4e488e3f79d166f5696f12ad7d9a2c2a481316745d54347f19a04c692315b518ee9d85ac7de80b3c71aeb1b14cd0fc6adb22d
|
7
|
+
data.tar.gz: ae33ba46d6118abcd9b25e06510250b11502b175cb078d80a3be7e463f621713ac9fe11c73b31060c6375ee79d56f8a12e575f21fccb7d425f8e298dcb287614
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
marty (2.
|
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
|
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.
|
101
|
-
activerecord
|
102
|
-
treetop
|
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-
|
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
|
75
|
+
$ make app-initialise-docker
|
76
76
|
|
77
|
-
$ make
|
77
|
+
$ make app-start
|
78
78
|
```
|
79
79
|
|
80
80
|
To run tests:
|
81
81
|
|
82
82
|
```bash
|
83
|
-
$ make
|
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/
|
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
|
-
:
|
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 :
|
282
|
-
a.text = 'Schedule
|
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 :
|
386
|
+
component :schedule_jobs_dashboard
|
387
387
|
|
388
388
|
component :config_view
|
389
389
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class Marty::
|
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('
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
239
|
-
|
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
|
245
|
+
# FIXME: using delorean_fn just for the caching -- this is
|
246
246
|
# not expected to be called from Delorean.
|
247
|
-
|
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
|
data/app/models/marty/tag.rb
CHANGED
data/docker-compose.dummy.yml
CHANGED
@@ -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
|
-
|
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
|
|
data/lib/marty/mcfly_model.rb
CHANGED
@@ -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(
|
14
|
-
|
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,
|
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(
|
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(
|
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
|
-
|
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
|
-
|
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,47 +1,46 @@
|
|
1
|
-
|
1
|
+
app-build:
|
2
2
|
docker-compose --file=docker-compose.dummy.yml build
|
3
3
|
|
4
|
-
|
4
|
+
app:
|
5
5
|
docker-compose --file=docker-compose.dummy.yml up -d app
|
6
6
|
docker attach marty_app_1
|
7
7
|
|
8
|
-
|
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
|
-
|
12
|
+
app-stop:
|
13
13
|
docker-compose --file=docker-compose.dummy.yml stop
|
14
14
|
|
15
|
-
|
15
|
+
app-down:
|
16
16
|
docker-compose --file=docker-compose.dummy.yml down
|
17
17
|
|
18
|
-
|
18
|
+
app-bash:
|
19
19
|
docker-compose --file=docker-compose.dummy.yml run --rm app bash
|
20
20
|
|
21
|
-
|
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
|
-
|
24
|
+
app-initialise-docker:
|
25
25
|
touch .bash_history.docker
|
26
26
|
touch .pry_history.docker
|
27
|
-
make
|
28
|
-
make
|
27
|
+
make app-install
|
28
|
+
make app-db-prepare
|
29
29
|
|
30
|
-
|
30
|
+
app-install:
|
31
31
|
docker-compose --file=docker-compose.dummy.yml run --rm app gem install bundler
|
32
|
-
make
|
32
|
+
make app-install-bundle
|
33
33
|
|
34
|
-
|
34
|
+
app-install-bundle:
|
35
35
|
docker-compose --file=docker-compose.dummy.yml run --rm app bundle
|
36
36
|
|
37
|
-
|
37
|
+
app-db-drop:
|
38
38
|
docker-compose --file=docker-compose.dummy.yml run --rm app rake db:drop
|
39
39
|
|
40
|
-
|
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
|
-
|
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
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
feature '
|
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
|
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 '
|
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('
|
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
|
47
|
+
press('Schedule Jobs Dashboard')
|
48
48
|
|
49
49
|
wait_for_ajax
|
50
50
|
|
51
|
-
expect(page).to have_content '
|
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', '
|
87
|
-
'E2', '
|
88
|
-
'E3', '
|
89
|
-
'E4', '
|
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.
|
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-
|
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
|
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
|
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-
|
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
|