rubypitaya 3.13.1 → 3.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rubypitaya/app-template/Gemfile +1 -1
- data/lib/rubypitaya/app-template/Gemfile.lock +2 -2
- data/lib/rubypitaya/app-template/bin/console +7 -14
- data/lib/rubypitaya/app-template/features/step_definitions/rubypitaya_steps.rb +74 -15
- data/lib/rubypitaya/app-template/features/support/env.rb +8 -1
- data/lib/rubypitaya/core/config.rb +3 -0
- data/lib/rubypitaya/core/config_core.rb +4 -1
- data/lib/rubypitaya/core/config_hash_extension.rb +17 -0
- data/lib/rubypitaya/core/nats_connector.rb +1 -1
- data/lib/rubypitaya/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8cbe5d3feb8670d5bf12a7fa24a1c825c05eaad6fb2f1c4146bc578098e1f85a
|
4
|
+
data.tar.gz: bb46b49c67003ce15aaa6d56e945b8fb8c4e86b14ff587dacea6bcce55e0ed31
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dacc15e4ff35c2697bcaf13636e5be9a61603c86c0ff9be9e53355eaf1b91266d9105ad1ee5dd7ffdfba057abb5e0670b304ca2cc34ecf7509aaae62112ac761
|
7
|
+
data.tar.gz: c9fdd57684fb5cfc34847aa41872d4df02e1bb67eac3d6220433c23ac1d8623bcdd4851cdd70dcb5c18f0c255e710d0266b56ab570bb34928eedc59029a9701c
|
@@ -94,7 +94,7 @@ GEM
|
|
94
94
|
rspec-support (~> 3.12.0)
|
95
95
|
rspec-support (3.12.0)
|
96
96
|
ruby2_keywords (0.0.5)
|
97
|
-
rubypitaya (3.
|
97
|
+
rubypitaya (3.15.0)
|
98
98
|
activerecord (= 7.0.4)
|
99
99
|
etcdv3 (= 0.11.5)
|
100
100
|
google-protobuf (= 3.21.12)
|
@@ -132,7 +132,7 @@ DEPENDENCIES
|
|
132
132
|
listen (= 3.8.0)
|
133
133
|
pry (= 0.14.2)
|
134
134
|
rspec (= 3.12.0)
|
135
|
-
rubypitaya (= 3.
|
135
|
+
rubypitaya (= 3.15.0)
|
136
136
|
sinatra-contrib (= 3.0.5)
|
137
137
|
|
138
138
|
BUNDLED WITH
|
@@ -13,25 +13,18 @@ ActiveRecord::Base.logger = ActiveSupport::Logger.new(STDOUT)
|
|
13
13
|
ActiveSupport::LogSubscriber.colorize_logging = true
|
14
14
|
|
15
15
|
# Loading core files
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
path.include?('core/templates') ||
|
20
|
-
path.include?('core/spec-helpers') ||
|
21
|
-
path.include?('app-template')
|
22
|
-
end
|
16
|
+
gem_files = Dir.glob('/app/rubypitaya/lib/rubypitaya/core/**/*.rb')
|
17
|
+
gem_files.select! {|file| !file[/.+spec.rb/] && !file[/.*(?:app\/migrations|core\/templates|core\/spec-helpers|app-template).*/]}
|
18
|
+
gem_files.each {|file| require file}
|
23
19
|
|
24
20
|
# Loading application files
|
21
|
+
gem_files = []
|
25
22
|
app_folder_paths = RubyPitaya::Path::Plugins::APP_FOLDER_PATHS + [RubyPitaya::Path::APP_FOLDER_PATH]
|
26
23
|
app_folder_paths.each do |app_folder_path|
|
27
|
-
|
28
|
-
|
29
|
-
Dir[app_files_path].each do |path|
|
30
|
-
require path unless path.end_with?('spec.rb') ||
|
31
|
-
path.include?('app/migrations') ||
|
32
|
-
path.include?('spec_helper.rb')
|
33
|
-
end
|
24
|
+
gem_files += Dir.glob("#{app_folder_path}**/*.rb")
|
34
25
|
end
|
26
|
+
gem_files.select! {|file| !file[/.+(?:spec.rb|spec_helper.rb)/] && !file[/.*app\/migrations.*/]}
|
27
|
+
gem_files.each {|file| require file}
|
35
28
|
|
36
29
|
# Starting irb
|
37
30
|
require 'irb'
|
@@ -1,11 +1,6 @@
|
|
1
|
-
Given(/^the following User[s]?$/) do |table|
|
2
|
-
table.hashes.each do |table_hash|
|
3
|
-
User.create(id: table_hash[:user_id])
|
4
|
-
end
|
5
|
-
end
|
6
|
-
|
7
1
|
Given(/^the User ["'](.+)["'] is authenticated$/) do |user_id|
|
8
|
-
|
2
|
+
user = User.find(user_id)
|
3
|
+
@app_helper.authenticate(user.id)
|
9
4
|
end
|
10
5
|
|
11
6
|
Given(/^the setup key ["'](.+)["'] is ["'](.+)["']$/) do |key, value|
|
@@ -16,7 +11,7 @@ Given(/^the config key ["'](.+)["'] is ["'](.+)["']$/) do |key, value|
|
|
16
11
|
@app_helper.add_config(key, value)
|
17
12
|
end
|
18
13
|
|
19
|
-
Given(/^the config is the following json
|
14
|
+
Given(/^the config is the following json$/) do |config_json|
|
20
15
|
config = JSON.parse(config_json)
|
21
16
|
@app_helper.set_config(config)
|
22
17
|
end
|
@@ -44,28 +39,92 @@ end
|
|
44
39
|
Then(/^the server response ["'](.+)["'] should be ["'](.+)["']$/) do |response_key, expected_value|
|
45
40
|
response_value = @app_helper.response.dig(*response_key.split('.').map(&:to_sym))
|
46
41
|
|
42
|
+
response_value = to_string(response_value)
|
43
|
+
expected_value = to_string(expected_value)
|
44
|
+
|
47
45
|
expect(response_value.to_s).to eq(expected_value)
|
48
46
|
end
|
49
47
|
|
48
|
+
Then(/^the server response ["'](.+)["'] should not be ["'](.+)["']$/) do |response_key, expected_value|
|
49
|
+
response_value = @app_helper.response.dig(*response_key.split('.').map(&:to_sym))
|
50
|
+
|
51
|
+
response_value = to_string(response_value)
|
52
|
+
expected_value = to_string(expected_value)
|
53
|
+
|
54
|
+
expect(response_value.to_s).not_to eq(expected_value)
|
55
|
+
end
|
56
|
+
|
50
57
|
Then(/^the server response(?: ["'](.+)["'])? should be the following json$/) do |response_key, expected_json_text|
|
51
|
-
|
52
|
-
|
58
|
+
response_hash = @app_helper.response
|
59
|
+
response_hash = @app_helper.response.dig(*response_key.split('.').map(&:to_sym)) unless response_key.blank?
|
60
|
+
expected_hash = JSON.parse(expected_json_text.strip)
|
53
61
|
|
54
|
-
expected_json = JSON.
|
62
|
+
expected_json = JSON.generate(expected_hash)
|
63
|
+
response_json = JSON.generate(response_hash)
|
55
64
|
|
56
65
|
expect(response_json).to eq(expected_json)
|
57
66
|
end
|
58
67
|
|
59
68
|
Then(/^the server response(?: ["'](.+)["'])? should contains the following json[:]?$/) do |response_key, expected_json_text|
|
60
|
-
|
61
|
-
|
69
|
+
response_hash = @app_helper.response
|
70
|
+
response_hash = @app_helper.response.dig(*response_key.split('.').map(&:to_sym)) unless response_key.blank?
|
71
|
+
expected_hash = JSON.parse(expected_json_text.strip, symbolize_names: true)
|
72
|
+
|
73
|
+
expected_hash = response_hash.deep_merge(expected_hash) do |key, response_value, expected_value|
|
74
|
+
next expected_value if response_value.class != Array
|
75
|
+
|
76
|
+
expect(response_value.size).to eq(expected_value.size), "Array '#{key}' doesn't have same size.\nexpected: #{expected_value.size}\n got: #{response_value.size}\n"
|
77
|
+
|
78
|
+
response_value.map.with_index do |_, i|
|
79
|
+
response_value[i].deep_merge(expected_value[i])
|
80
|
+
end
|
81
|
+
end
|
62
82
|
|
63
|
-
expected_json = JSON.
|
64
|
-
|
83
|
+
expected_json = JSON.generate(expected_hash)
|
84
|
+
response_json = JSON.generate(response_hash)
|
65
85
|
|
66
86
|
expect(response_json).to eq(expected_json)
|
67
87
|
end
|
68
88
|
|
89
|
+
###
|
90
|
+
# It validates a model field. Example:
|
91
|
+
#
|
92
|
+
# Given the following "Player"
|
93
|
+
# | id | name |
|
94
|
+
# | 00000000-0000-0000-0000-000000000001 | Jose |
|
95
|
+
# Then the "name" of the "Player" with "id" "00000000-0000-0000-0000-000000000001" should be "Jose"
|
96
|
+
Then(/^the ["'](.+)["'] of the ["'](.+)["'] with ["'](.+)["'] ["'](.+)["'] should be ["'](.+)["']$/) do |model_attribute, model_name, search_attribute_name, search_attribute_value, expected_value|
|
97
|
+
current_value = model_name.constantize.where(search_attribute_name => search_attribute_value).select(search_attribute_name).limit(1).pluck(model_attribute).first
|
98
|
+
|
99
|
+
current_value = to_string(current_value)
|
100
|
+
expected_value = to_string(expected_value)
|
101
|
+
|
102
|
+
expect(current_value).to eq(expected_value)
|
103
|
+
end
|
104
|
+
|
105
|
+
Then(/^the ["'](.+)["'] of the ["'](.+)["'] with ["'](.+)["'] ["'](.+)["'] should not be ["'](.+)["']$/) do |model_attribute, model_name, search_attribute_name, search_attribute_value, expected_value|
|
106
|
+
current_value = model_name.constantize.where(search_attribute_name => search_attribute_value).select(search_attribute_name).limit(1).pluck(model_attribute).first
|
107
|
+
|
108
|
+
current_value = to_string(current_value)
|
109
|
+
expected_value = to_string(expected_value)
|
110
|
+
|
111
|
+
expect(current_value).not_to eq(expected_value)
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
###
|
116
|
+
# It count the number of models. Example
|
117
|
+
#
|
118
|
+
# Then the number of 'Users' should be 10
|
119
|
+
Then(/^the number of ["'](.+)["'] should be (\d+)$/) do |model_name, model_amount|
|
120
|
+
model_name = model_name.singularize
|
121
|
+
|
122
|
+
expected_value = model_amount
|
123
|
+
current_value = model_name.constantize.count
|
124
|
+
|
125
|
+
expect(current_value).to eq(expected_value)
|
126
|
+
end
|
127
|
+
|
69
128
|
Given(/^print server response$/) do
|
70
129
|
puts JSON.pretty_generate(@app_helper.response)
|
71
130
|
end
|
@@ -10,4 +10,11 @@ RubyPitaya::AppSpecHelper.initialize_before_suite
|
|
10
10
|
|
11
11
|
at_exit do
|
12
12
|
RubyPitaya::AppSpecHelper.finalize_after_suite
|
13
|
-
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_string(value)
|
16
|
+
return value if value.class == String
|
17
|
+
return value.to_s if value.class == Integer
|
18
|
+
return 'nil' if value.nil?
|
19
|
+
value
|
20
|
+
end
|
@@ -4,6 +4,8 @@ module RubyPitaya
|
|
4
4
|
|
5
5
|
def initialize()
|
6
6
|
@config = {}
|
7
|
+
@config.extend(ConfigHashExtension)
|
8
|
+
|
7
9
|
configs_folder_paths = Path::Plugins::APP_CONFIG_FOLDER_PATHS + [Path::APP_CONFIG_FOLDER_PATH]
|
8
10
|
|
9
11
|
configs_folder_paths.each do |configs_folder_path|
|
@@ -42,10 +44,11 @@ module RubyPitaya
|
|
42
44
|
def load_config_file(configs_folder_path, file_path)
|
43
45
|
config_text = File.open(file_path, &:read)
|
44
46
|
config_hash = JSON.parse(config_text, symbolize_names: true)
|
47
|
+
config_hash.extend(ConfigHashExtension)
|
45
48
|
|
46
49
|
file_name = file_path.sub(/^#{configs_folder_path}/, '')[0..-6]
|
47
50
|
|
48
|
-
@config[file_name] = config_hash
|
51
|
+
@config[file_name.to_sym] = config_hash
|
49
52
|
|
50
53
|
rescue Exception => error
|
51
54
|
puts "ERROR: #{error}"
|
@@ -39,7 +39,7 @@ module RubyPitaya
|
|
39
39
|
|
40
40
|
response = yield request
|
41
41
|
|
42
|
-
nats_response = NatsResponse.new(data: response)
|
42
|
+
nats_response = NatsResponse.new(data: response.force_encoding('ascii-8bit'))
|
43
43
|
nats_response_encoded = NatsResponse.encode(nats_response)
|
44
44
|
|
45
45
|
@nats.publish(message.reply, nats_response_encoded)
|
data/lib/rubypitaya/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubypitaya
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luciano Prestes Cavalcanti
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-09-
|
11
|
+
date: 2023-09-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg
|
@@ -330,6 +330,7 @@ files:
|
|
330
330
|
- "./lib/rubypitaya/core/application_files_importer.rb"
|
331
331
|
- "./lib/rubypitaya/core/config.rb"
|
332
332
|
- "./lib/rubypitaya/core/config_core.rb"
|
333
|
+
- "./lib/rubypitaya/core/config_hash_extension.rb"
|
333
334
|
- "./lib/rubypitaya/core/database_config.rb"
|
334
335
|
- "./lib/rubypitaya/core/database_connector.rb"
|
335
336
|
- "./lib/rubypitaya/core/etcd_connector.rb"
|