marty 1.0.13 → 1.0.14

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
  SHA1:
3
- metadata.gz: 6954bc349cc4800a6505d17737f5ddcb91ce16b2
4
- data.tar.gz: 8bfff59fcd54425f3f076b0fdc61ec98a5d52b23
3
+ metadata.gz: 9490119689a36383db480bd8b3f892904a08a3cf
4
+ data.tar.gz: bc813657c712c00d9b26da1a20c7cb8332a0ffc8
5
5
  SHA512:
6
- metadata.gz: f3d5897c69ee0feb698f467a30095273ba724a030fbeae9032f82129e3341b6905c67ededb6256264079702a68a286076ae216d9384b06eb84edbf3d1b4c7300
7
- data.tar.gz: f36961f6208fbdef9d54a9f717cadb04cac2bb5a3d7c956905a650718d7996c155469d93f0ac3dce78d16991fbac1d6947625acb81ca2f0ccaf5458c48821459
6
+ metadata.gz: 3bfa1deaffa80e3a1587026420911090696aa1c5221921dbec985b894f1a9ae506234935d6f5dfbae51e4e9079556669c5c393bf76451087072e0867a326cb85
7
+ data.tar.gz: ad7b61d596677b04ff6445122096103b520912022d79871254a881e8775ee5141728da76d141b3d77b3acfbf344539e027d4f21b54e8b8ec8f005e81246540f1
@@ -221,9 +221,7 @@ class Marty::MainAuthApp < Marty::AuthApp
221
221
 
222
222
  def bg_command(param)
223
223
  e, root, p = ENV['RAILS_ENV'], Rails.root, Marty::Config["RUBY_PATH"]
224
- # preserve backward compatability with Gemini
225
- # for new Rails apps, use 'bin/delayed_job'
226
- dj_path = Marty::Config["DELAYED_JOB_PATH"] || 'script/delayed_job'
224
+ dj_path = Marty::Config["DELAYED_JOB_PATH"] || 'bin/delayed_job'
227
225
  cmd = "export RAILS_ENV=#{e};"
228
226
  # FIXME: Environment looks to be setup incorrectly - this is a hack
229
227
  cmd += "export PATH=#{p}:$PATH;" if p
@@ -13,6 +13,10 @@ class Marty::Event < Marty::Base
13
13
 
14
14
  validates_with EventValidator
15
15
 
16
+ after_validation(on: [:create, :update]) do
17
+ self.comment = self.comment.truncate(255) if self.comment
18
+ end
19
+
16
20
  BASE_QUERY = "SELECT ev.id,
17
21
  ev.klass,
18
22
  ev.subject_id,
@@ -102,7 +106,7 @@ class Marty::Event < Marty::Base
102
106
  hash = all_running.select do |pm|
103
107
  pm["klass"] == klass && pm["subject_id"] == subject_id.to_i &&
104
108
  (operation.nil? || pm["enum_event_operation"] == operation)
105
- end.sort { |a, b| b["start_dt"] <=> a["start_dt"] }.first
109
+ end.last
106
110
 
107
111
  return hash if hash
108
112
 
@@ -111,7 +115,7 @@ class Marty::Event < Marty::Base
111
115
  get_data("SELECT * FROM (#{BASE_QUERY}) sub
112
116
  WHERE klass = '#{klass}'
113
117
  AND subject_id = #{subject_id} #{op_sql}
114
- ORDER BY start_dt desc").first
118
+ ORDER BY end_dt desc").first
115
119
  end
116
120
 
117
121
  def self.currently_running(klass, subject_id)
@@ -188,7 +192,8 @@ class Marty::Event < Marty::Base
188
192
  ORDER BY end_dt DESC) rownum, *
189
193
  FROM (#{BASE_QUERY}) sub2
190
194
  WHERE end_dt IS NOT NULL and end_dt > '#{cutoff}') sub1
191
- WHERE rownum = 1"
195
+ WHERE rownum = 1
196
+ ORDER BY end_dt"
192
197
  )
193
198
  @all_finished[:timestamp] = time_now_i
194
199
  raw.each_with_object(@all_finished[:data]) do |ev, hash|
@@ -47,6 +47,7 @@ unless Marty::Tag.find_by_name('DEV')
47
47
  tag.save!
48
48
  end
49
49
 
50
- # one time set up for delayed_job/promises, override as needed
50
+ # one time set up for delayed_job/promises, override only needed
51
+ # if DELAYED_JOB_PATH is not bin/delayed_job
51
52
  Marty::Config["DELAYED_JOB_PARAMS"] = "-n 4"
52
- Marty::Config["DELAYED_JOB_PATH"] = "bin/delayed_job"
53
+ # Marty::Config["DELAYED_JOB_PATH"] = "script/delayed_job"
@@ -39,9 +39,8 @@ module Marty::Migrations
39
39
  SELECT ENUM_RANGE(null::#{enum_name});
40
40
  SQL
41
41
 
42
- db_values = res.first['enum_range'].gsub(/[{}]/, '').split(',')
42
+ db_values = res.first['enum_range'].gsub(/[{"}]/, '').split(',')
43
43
  ex_values = klass::VALUES - db_values
44
-
45
44
  puts "no new #{klass}::VALUES to add" if ex_values.empty?
46
45
 
47
46
  #hack to prevent transaction
@@ -13,6 +13,7 @@ class Delorean::BaseModule::NodeCall
13
13
  # Monkey-patch '|' method for Delorean NodeCall to create promise
14
14
  # jobs and return promise proxy objects.
15
15
  def |(args)
16
+
16
17
  if args.is_a?(String)
17
18
  attr = args
18
19
  args = [attr]
@@ -56,22 +57,25 @@ class Delorean::BaseModule::NodeCall
56
57
  # been reserved yet.
57
58
  promise.job_id = job.id
58
59
  promise.save!
60
+
59
61
  event = Marty::Event.
60
- create!(promise_id: promise.id,
61
- klass: params[:__metadata__][:klass],
62
- subject_id: params[:__metadata__][:id],
63
- enum_event_operation:
64
- params[:__metadata__][:operation]) if
65
- params[:__metadata__]
62
+ create!(promise_id: promise.id,
63
+ klass: params["p_event"]["klass"],
64
+ subject_id: params["p_event"]["id"],
65
+ enum_event_operation:
66
+ params["p_event"]["operation"]) if
67
+ params["p_event"]
66
68
  Marty::PromiseProxy.new(promise.id, timeout, attr)
67
69
  end
68
70
  end
69
71
 
70
72
 
71
73
  class Delorean::Engine
72
- def background_eval(node, params, attrs, meta = {})
74
+ def background_eval(node, params, attrs, event = {})
73
75
  raise "background_eval bad params" unless params.is_a?(Hash)
74
- params[:__metadata__] = meta unless meta.empty?
76
+ params["p_event"] = event.each_with_object({}) do |(k, v), h|
77
+ h[k.to_s] = v
78
+ end unless event.empty?
75
79
  nc = Delorean::BaseModule::NodeCall.new({}, self, node, params)
76
80
  # start the background promise
77
81
  nc | attrs
@@ -1,3 +1,3 @@
1
1
  module Marty
2
- VERSION = "1.0.13"
2
+ VERSION = "1.0.14"
3
3
  end
@@ -373,6 +373,7 @@ feature 'under Applications menu, Scripting workflows', js: true do
373
373
  end
374
374
 
375
375
  and_by 'delete script' do
376
+ wait_for_ajax
376
377
  script_grid.select_row(1)
377
378
  press('Delete Script')
378
379
  find(:xpath, "//div[text()='Confirmation']", wait: 5)
@@ -4,6 +4,7 @@ require 'job_helper'
4
4
  describe Marty::Event do
5
5
  before(:all) do
6
6
  @clean_file = "/tmp/clean_#{Process.pid}.psql"
7
+ @save_file = "/tmp/save_#{Process.pid}.psql"
7
8
  save_clean_db(@clean_file)
8
9
 
9
10
  # transactional fixtures interfere with queueing jobs
@@ -48,6 +49,7 @@ describe Marty::Event do
48
49
  operation: 'PRICING'})
49
50
  res.force
50
51
  sleep 5
52
+ save_clean_db(@save_file)
51
53
  end
52
54
 
53
55
  after(:all) do
@@ -56,8 +58,13 @@ describe Marty::Event do
56
58
  stop_delayed_job
57
59
  end
58
60
 
61
+ before(:each) do
62
+ restore_clean_db(@save_file, false)
63
+ Marty::Event.clear_cache
64
+ end
65
+
59
66
 
60
- it "Event tests" do
67
+ it "reports currently running" do
61
68
  expect(Marty::Event.currently_running('testcl1', 123)).to eq(
62
69
  ['AVM', 'CRA', 'PRICING'])
63
70
  expect(Marty::Event.currently_running('testcl2', 123)).to eq([])
@@ -100,9 +107,12 @@ describe Marty::Event do
100
107
  ['AVM', 'CRA', 'PRICING'])
101
108
  expect(Marty::Event.currently_running('testcl2', 123)).to eq(
102
109
  [])
103
-
104
110
  Timecop.return
105
111
 
112
+ end
113
+
114
+ it "misc API tests" do
115
+
106
116
  af = Marty::Event.all_finished
107
117
  expect(af.count).to eq(2)
108
118
  expect(af).to include(['testcl3', 987])
@@ -143,6 +153,9 @@ describe Marty::Event do
143
153
  expect(af[['testcl1', 123]]).to include('AVM')
144
154
  expect(af[['testcl1', 123]]['AVM']).to start_with(@date_string)
145
155
 
156
+ end
157
+
158
+ it "raises on error" do
146
159
  expect {Marty::Event.create_event('testcl', 1234, 'AVM', Time.zone.now, 600,
147
160
  "the comment") }.not_to raise_error
148
161
 
@@ -164,13 +177,38 @@ describe Marty::Event do
164
177
  to raise_error(%r!PG::.*invalid input value for enum.*"AMV"!)
165
178
  Marty::Event.clear_cache
166
179
  af = Marty::Event.all_finished
167
- expect(af.count).to eq(5)
180
+ expect(af.count).to eq(4)
168
181
  expect(af).to include(['testcl', 1234])
169
182
  expect(af).to include(['testcl', 2345])
170
183
  expect(af[['testcl', 1234]]).to include('AVM')
171
184
  expect(af[['testcl', 2345]]).to include('AVM')
172
185
  expect(af[['testcl', 1234]]['AVM']).to start_with(@date_string)
173
186
  expect(af[['testcl', 2345]]['AVM']).to start_with(@date_string)
187
+ end
188
+
189
+ it "truncates long comment" do
190
+ long_comment = "comment string abcdefg"*100
191
+ long_comment_truncated = long_comment.truncate(255)
192
+ Marty::Event.create_event('testcl', 123, 'PRICING', Time.zone.now, 600,
193
+ long_comment)
194
+ Marty::Event.create!(klass: 'testcl',
195
+ subject_id: 456,
196
+ enum_event_operation: 'CRA',
197
+ start_dt: Time.zone.now,
198
+ expire_secs: 600,
199
+ comment: long_comment)
200
+
201
+ Marty::Event.create_event('testcl', 789, 'AVM', Time.zone.now, 600,
202
+ "comment")
203
+ Marty::Event.finish_event('testcl', 789, 'AVM', long_comment)
204
+
205
+ e1 = Marty::Event.lookup_event('testcl', 123, 'PRICING').first
206
+ e2 = Marty::Event.lookup_event('testcl', 456, 'CRA').first
207
+ e3 = Marty::Event.lookup_event('testcl', 789, 'AVM').first
208
+
209
+ expect(e1["comment"]).to eq(long_comment_truncated)
210
+ expect(e2["comment"]).to eq(long_comment_truncated)
211
+ expect(e3["comment"]).to eq(long_comment_truncated)
174
212
 
175
213
  end
176
214
  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: 1.0.13
4
+ version: 1.0.14
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: 2016-10-28 00:00:00.000000000 Z
17
+ date: 2016-11-18 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: pg