cuculungwa 0.0.66 → 0.0.70
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 +4 -4
- data/lib/cuculungwa.rb +4 -185
- data/lib/cuculungwa/formatters.rb +64 -0
- data/lib/cuculungwa/generators.rb +97 -0
- data/lib/cuculungwa/utils.rb +59 -0
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ef31328c71a6f8e202ad29d63a6df61a976c4d2
|
4
|
+
data.tar.gz: 193b2af612793570373e5ed64b0157abfd8f23e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 491fd78a49611a0e6ea55200bb63bc8f9a7891c1785d53d86456581ef026dddc3a527aa20ee0faebd5b1b79e2a56f05c90c530a03c5a0d12c4076f048af4188a
|
7
|
+
data.tar.gz: fef4c75c5d1d32996225bd69d6357a4b7bf5fcdc1cc37994514df9c1b0b6dc2b74db9d76a9ada1b76d26d76bd8b2d62b7c661da4e5e22969932e82d18624f5db
|
data/lib/cuculungwa.rb
CHANGED
@@ -11,6 +11,10 @@ require 'rspec/expectations'
|
|
11
11
|
require 'site_prism'
|
12
12
|
require 'yaml'
|
13
13
|
|
14
|
+
require 'cuculungwa/generators'
|
15
|
+
require 'cuculungwa/utils'
|
16
|
+
require 'cuculungwa/formatters'
|
17
|
+
|
14
18
|
config = YAML::load(File.open('config/config.yml'))
|
15
19
|
if ENV['CONFIG']
|
16
20
|
config.merge!(YAML::load(File.open(ENV['CONFIG'])))
|
@@ -87,188 +91,3 @@ AfterConfiguration do |configuration|
|
|
87
91
|
potential_feature_files.shuffle
|
88
92
|
end
|
89
93
|
end
|
90
|
-
|
91
|
-
module GenerateData
|
92
|
-
def pesel_generator(data_type)
|
93
|
-
if (data_type.eql? 'positive_data_set')
|
94
|
-
weights = Array[1, 3, 7, 9, 1, 3, 7, 9, 1, 3]
|
95
|
-
year = rand()*100
|
96
|
-
month = rand()*12+1
|
97
|
-
day = rand()*28+1
|
98
|
-
evidence_number = rand()*999
|
99
|
-
sex=rand()*9
|
100
|
-
pesel="%02d%02d%02d%03d%d"%[year,month,day,evidence_number,sex]
|
101
|
-
temp_cs = 0
|
102
|
-
pesel_elem = pesel.each_char.map {|c| c.to_i}
|
103
|
-
for i in 0..weights.length-1
|
104
|
-
temp_cs +=weights[i]*pesel_elem[i]
|
105
|
-
end
|
106
|
-
control_sum = (10-(temp_cs%10))%10
|
107
|
-
return pesel + control_sum.to_s
|
108
|
-
elsif (data_type.eql? 'negative_data_set')
|
109
|
-
return "00000000000"
|
110
|
-
else
|
111
|
-
return ""
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
def nip_generator(data_type)
|
116
|
-
if (data_type.eql? 'positive_data_set')
|
117
|
-
weights = [6, 5, 7, 2, 3, 4, 5, 6, 7]
|
118
|
-
code = rand(998-101) + 101
|
119
|
-
number = rand(1000000)
|
120
|
-
nip = code.to_s + number.to_s.rjust(6, '0')
|
121
|
-
|
122
|
-
c = nip.split(//).map! {|x| x.to_i}
|
123
|
-
sum = c.zip(weights).map! {|x| x[0]*x[1]}.reduce(:+) % 11
|
124
|
-
|
125
|
-
sum = sum == 10 ? 0 : sum
|
126
|
-
return nip + sum.to_s
|
127
|
-
elsif (data_type.eql? 'negative_data_set')
|
128
|
-
return "000"
|
129
|
-
else
|
130
|
-
return ""
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
def pl_iban_formatter(number)
|
135
|
-
number = number.gsub(/\s+/, "").gsub('PL','')
|
136
|
-
number = number[0..1] + ' ' + number[2..-1].gsub(/(.{4})/, '\1 ').strip
|
137
|
-
return number
|
138
|
-
end
|
139
|
-
|
140
|
-
def pl_iban_generator(data_type = 'positive_set', bank_prefix = nil, polish_format = false)
|
141
|
-
# data_type: if you want correct iban use positive_set, anything else will return 00111122223333444455556666
|
142
|
-
# bank_prefix: if you want specify bank prefix (minimum 4 and maximum 8 digits)
|
143
|
-
# polish_format: if you want add spaces for readability
|
144
|
-
bank_prefix ||= sprintf('%08d', rand(10**8))
|
145
|
-
bank_prefix = bank_prefix.to_s.gsub(/\s+/, "")
|
146
|
-
|
147
|
-
if bank_prefix.length < 4
|
148
|
-
raise 'Bank prefix error!'
|
149
|
-
end
|
150
|
-
|
151
|
-
if bank_prefix.length == 4
|
152
|
-
bank_prefix << '0001'
|
153
|
-
end
|
154
|
-
|
155
|
-
if (data_type.eql? 'positive_set')
|
156
|
-
account_no = sprintf('%016d', rand(10**16))
|
157
|
-
num = bank_prefix + account_no + "252100"
|
158
|
-
control_digit = sprintf('%02d', 98 - (num.to_i % 97))
|
159
|
-
number = control_digit + bank_prefix + account_no
|
160
|
-
else
|
161
|
-
number = '00111122223333444455556666'
|
162
|
-
end
|
163
|
-
|
164
|
-
if polish_format
|
165
|
-
pl_iban_formatter(number)
|
166
|
-
else
|
167
|
-
number
|
168
|
-
end
|
169
|
-
end
|
170
|
-
end
|
171
|
-
World(GenerateData)
|
172
|
-
|
173
|
-
module Utils
|
174
|
-
def click(element)
|
175
|
-
if (@app.config['capybara']['browser']=='phantomjs')
|
176
|
-
element.trigger('click')
|
177
|
-
else
|
178
|
-
element.click
|
179
|
-
end
|
180
|
-
end
|
181
|
-
|
182
|
-
def set_app(app)
|
183
|
-
Capybara.app_host = @app.config['project']['default_host'][app]
|
184
|
-
end
|
185
|
-
|
186
|
-
def take_screenshot
|
187
|
-
save_screenshot(@app.config['capybara']['save_and_open_page_path'] + "/manual_screenshots/#{Time.now.to_i}.png", :full => true)
|
188
|
-
end
|
189
|
-
|
190
|
-
def short_iban(iban)
|
191
|
-
if iban.length >= 15
|
192
|
-
first_part = iban[0..1]+" "+iban[2..3]+" "+iban[4..7]
|
193
|
-
middle_part=" ... "
|
194
|
-
last_part=iban[-4..-1]
|
195
|
-
iban_number=first_part+middle_part + last_part
|
196
|
-
else
|
197
|
-
iban_number = add_space = iban[0..1]+" "+iban[2..iban.length]
|
198
|
-
end
|
199
|
-
return iban_number
|
200
|
-
end
|
201
|
-
|
202
|
-
def wait_for_expected_result(timespan = @app.config['capybara']['default_wait_time'], exception_type = RSpec::Expectations::ExpectationNotMetError)
|
203
|
-
# Default setting: get default wait time from config.yml
|
204
|
-
_then = Time.now
|
205
|
-
while true
|
206
|
-
begin
|
207
|
-
yield
|
208
|
-
break
|
209
|
-
rescue exception_type => e
|
210
|
-
# Expectations were not met, check if we timed out, otherwise try one more time
|
211
|
-
if Time.now > _then + timespan then
|
212
|
-
puts "Timeout."
|
213
|
-
raise e
|
214
|
-
end
|
215
|
-
end
|
216
|
-
end
|
217
|
-
#for debug purpose
|
218
|
-
#puts "Waiting for expected result took #{Time.now - _then}s."
|
219
|
-
end
|
220
|
-
|
221
|
-
def I18n_first(text)
|
222
|
-
begin
|
223
|
-
text = I18n.t(text, :raise => I18n::MissingTranslationData)
|
224
|
-
return text
|
225
|
-
rescue I18n::MissingTranslationData
|
226
|
-
return text
|
227
|
-
end
|
228
|
-
end
|
229
|
-
|
230
|
-
# Function creates localalized version of a number represented by a string based on locale_spec
|
231
|
-
# eg. 123456.55 -> 123,45.55 (with locale_spec = {:separator : ',', :delimiter '.'}
|
232
|
-
# 5123456.55 -> 5 123 45,55 (with locale_spec = {:separator : ' ', :delimiter '.'}
|
233
|
-
def i18n_number(number_str, locale_spec)
|
234
|
-
splits = number_str.split('.')
|
235
|
-
|
236
|
-
unless splits.length == 2
|
237
|
-
raise Exception.new("#{number_str} doesn't contain dot.")
|
238
|
-
end
|
239
|
-
|
240
|
-
whole_part = splits[0]
|
241
|
-
fractional_part = splits[1]
|
242
|
-
separator = locale_spec[:separator]
|
243
|
-
|
244
|
-
unless fractional_part.empty?
|
245
|
-
delimiter = locale_spec[:delimiter]
|
246
|
-
else
|
247
|
-
delimiter = ''
|
248
|
-
end
|
249
|
-
|
250
|
-
negative = false
|
251
|
-
if whole_part[0] == '-'
|
252
|
-
negative = true
|
253
|
-
whole_part = whole_part[1..-1]
|
254
|
-
end
|
255
|
-
|
256
|
-
whole_part_result = ''
|
257
|
-
for i in whole_part.length.downto(1)
|
258
|
-
j = whole_part.length - i
|
259
|
-
|
260
|
-
if j % 3 == 0 and j > 0
|
261
|
-
whole_part_result = separator + whole_part_result
|
262
|
-
end
|
263
|
-
|
264
|
-
whole_part_result = whole_part[i-1] + whole_part_result
|
265
|
-
end
|
266
|
-
|
267
|
-
unless negative
|
268
|
-
return whole_part_result + delimiter + fractional_part
|
269
|
-
else
|
270
|
-
return '-' + whole_part_result + delimiter + fractional_part
|
271
|
-
end
|
272
|
-
end
|
273
|
-
end
|
274
|
-
World(Utils)
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module Formatters
|
2
|
+
# Function creates localized version of a number represented by a string based on locale_spec
|
3
|
+
# eg. 123456.55 -> 123,45.55 (with locale_spec = {:separator : ',', :delimiter '.'}
|
4
|
+
# 5123456.55 -> 5 123 45,55 (with locale_spec = {:separator : ' ', :delimiter '.'}
|
5
|
+
def i18n_number(number_str, locale_spec)
|
6
|
+
splits = number_str.split('.')
|
7
|
+
|
8
|
+
unless splits.length == 2
|
9
|
+
raise Exception.new("#{number_str} doesn't contain dot.")
|
10
|
+
end
|
11
|
+
|
12
|
+
whole_part = splits[0]
|
13
|
+
fractional_part = splits[1]
|
14
|
+
separator = locale_spec[:separator]
|
15
|
+
|
16
|
+
unless fractional_part.empty?
|
17
|
+
delimiter = locale_spec[:delimiter]
|
18
|
+
else
|
19
|
+
delimiter = ''
|
20
|
+
end
|
21
|
+
|
22
|
+
negative = false
|
23
|
+
if whole_part[0] == '-'
|
24
|
+
negative = true
|
25
|
+
whole_part = whole_part[1..-1]
|
26
|
+
end
|
27
|
+
|
28
|
+
whole_part_result = ''
|
29
|
+
for i in whole_part.length.downto(1)
|
30
|
+
j = whole_part.length - i
|
31
|
+
|
32
|
+
if j % 3 == 0 and j > 0
|
33
|
+
whole_part_result = separator + whole_part_result
|
34
|
+
end
|
35
|
+
|
36
|
+
whole_part_result = whole_part[i-1] + whole_part_result
|
37
|
+
end
|
38
|
+
|
39
|
+
unless negative
|
40
|
+
return whole_part_result + delimiter + fractional_part
|
41
|
+
else
|
42
|
+
return '-' + whole_part_result + delimiter + fractional_part
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def short_iban(iban)
|
47
|
+
if iban.length >= 15
|
48
|
+
first_part = iban[0..1]+" "+iban[2..3]+" "+iban[4..7]
|
49
|
+
middle_part=" ... "
|
50
|
+
last_part=iban[-4..-1]
|
51
|
+
iban_number=first_part+middle_part + last_part
|
52
|
+
else
|
53
|
+
iban_number = add_space = iban[0..1]+" "+iban[2..iban.length]
|
54
|
+
end
|
55
|
+
return iban_number
|
56
|
+
end
|
57
|
+
|
58
|
+
def pl_iban_formatter(number)
|
59
|
+
number = number.gsub(/\s+/, "").gsub('PL','')
|
60
|
+
number = number[0..1] + ' ' + number[2..-1].gsub(/(.{4})/, '\1 ').strip
|
61
|
+
return number
|
62
|
+
end
|
63
|
+
end
|
64
|
+
World(Formatters)
|
@@ -0,0 +1,97 @@
|
|
1
|
+
module GenerateData
|
2
|
+
def get_unique_email(prefix = 'email', domain = 'test.com')
|
3
|
+
# returns unique test email
|
4
|
+
"#{prefix}-#{(Time.now.to_f * 1000000).to_i}@#{domain}"
|
5
|
+
end
|
6
|
+
|
7
|
+
def get_test_password
|
8
|
+
# returns standard test password
|
9
|
+
'q1w2e3r4'
|
10
|
+
end
|
11
|
+
|
12
|
+
def get_random_currency_symbol
|
13
|
+
currencies = [
|
14
|
+
'PLN', 'EUR', 'USD', 'GBP', 'CZK'
|
15
|
+
]
|
16
|
+
currencies.sample
|
17
|
+
end
|
18
|
+
|
19
|
+
# generators below perform typical polish data
|
20
|
+
|
21
|
+
def pesel_generator(data_type)
|
22
|
+
# returns polish registration number of the population
|
23
|
+
if data_type.eql? 'positive_data_set'
|
24
|
+
weights = Array[1, 3, 7, 9, 1, 3, 7, 9, 1, 3]
|
25
|
+
year = rand()*100
|
26
|
+
month = rand()*12+1
|
27
|
+
day = rand()*28+1
|
28
|
+
evidence_number = rand()*999
|
29
|
+
sex=rand()*9
|
30
|
+
pesel="%02d%02d%02d%03d%d"%[year,month,day,evidence_number,sex]
|
31
|
+
temp_cs = 0
|
32
|
+
pesel_elem = pesel.each_char.map {|c| c.to_i}
|
33
|
+
for i in 0..weights.length-1
|
34
|
+
temp_cs +=weights[i]*pesel_elem[i]
|
35
|
+
end
|
36
|
+
control_sum = (10-(temp_cs%10))%10
|
37
|
+
return pesel + control_sum.to_s
|
38
|
+
elsif data_type.eql? 'negative_data_set'
|
39
|
+
return '00000000000'
|
40
|
+
else
|
41
|
+
return ''
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def nip_generator(data_type)
|
46
|
+
# returns polish business registration number
|
47
|
+
if data_type.eql? 'positive_data_set'
|
48
|
+
weights = [6, 5, 7, 2, 3, 4, 5, 6, 7]
|
49
|
+
code = rand(998-101) + 101
|
50
|
+
number = rand(1000000)
|
51
|
+
nip = code.to_s + number.to_s.rjust(6, '0')
|
52
|
+
|
53
|
+
c = nip.split(//).map! {|x| x.to_i}
|
54
|
+
sum = c.zip(weights).map! {|x| x[0]*x[1]}.reduce(:+) % 11
|
55
|
+
|
56
|
+
sum = sum == 10 ? 0 : sum
|
57
|
+
return nip + sum.to_s
|
58
|
+
elsif data_type.eql? 'negative_data_set'
|
59
|
+
return '000'
|
60
|
+
else
|
61
|
+
return ''
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def pl_iban_generator(data_type = 'positive_set', bank_prefix = nil, polish_format = false)
|
66
|
+
# return polish fashioned iban bank account number
|
67
|
+
# data_type: if you want correct iban use positive_set, anything else will return 00111122223333444455556666
|
68
|
+
# bank_prefix: if you want specify bank prefix (minimum 4 and maximum 8 digits)
|
69
|
+
# polish_format: if you want add spaces for readability
|
70
|
+
bank_prefix ||= sprintf('%08d', rand(10**8))
|
71
|
+
bank_prefix = bank_prefix.to_s.gsub(/\s+/, "")
|
72
|
+
|
73
|
+
if bank_prefix.length < 4
|
74
|
+
raise 'Bank prefix error!'
|
75
|
+
end
|
76
|
+
|
77
|
+
if bank_prefix.length == 4
|
78
|
+
bank_prefix << '0001'
|
79
|
+
end
|
80
|
+
|
81
|
+
if (data_type.eql? 'positive_set')
|
82
|
+
account_no = sprintf('%016d', rand(10**16))
|
83
|
+
num = bank_prefix + account_no + "252100"
|
84
|
+
control_digit = sprintf('%02d', 98 - (num.to_i % 97))
|
85
|
+
number = control_digit + bank_prefix + account_no
|
86
|
+
else
|
87
|
+
number = '00111122223333444455556666'
|
88
|
+
end
|
89
|
+
|
90
|
+
if polish_format
|
91
|
+
pl_iban_formatter(number)
|
92
|
+
else
|
93
|
+
number
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
World(GenerateData)
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module Utils
|
2
|
+
def click(element)
|
3
|
+
if @app.config['capybara']['browser']=='phantomjs'
|
4
|
+
element.trigger('click')
|
5
|
+
else
|
6
|
+
element.click
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def set_app(app)
|
11
|
+
Capybara.app_host = @app.config['project']['default_host'][app]
|
12
|
+
end
|
13
|
+
|
14
|
+
def take_screenshot
|
15
|
+
save_screenshot(@app.config['capybara']['save_and_open_page_path'] + "/manual_screenshots/#{Time.now.to_i}.png", :full => true)
|
16
|
+
end
|
17
|
+
|
18
|
+
def wait_for_expected_result(timespan = @app.config['capybara']['default_wait_time'], exception_type = RSpec::Expectations::ExpectationNotMetError)
|
19
|
+
# Default setting: get default wait time from config.yml
|
20
|
+
_then = Time.now
|
21
|
+
while true
|
22
|
+
begin
|
23
|
+
yield
|
24
|
+
break
|
25
|
+
rescue exception_type => e
|
26
|
+
# Expectations were not met, check if we timed out, otherwise try one more time after 10ms
|
27
|
+
if Time.now > _then + timespan then
|
28
|
+
puts "Timeout."
|
29
|
+
raise e
|
30
|
+
end
|
31
|
+
sleep 0.01
|
32
|
+
end
|
33
|
+
end
|
34
|
+
#for debug purpose
|
35
|
+
#puts "Waiting for expected result took #{Time.now - _then}s."
|
36
|
+
end
|
37
|
+
|
38
|
+
def I18n_first(text)
|
39
|
+
begin
|
40
|
+
text = I18n.t(text, :raise => I18n::MissingTranslationData)
|
41
|
+
return text
|
42
|
+
rescue I18n::MissingTranslationData
|
43
|
+
return text
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def wait_for_ajax
|
48
|
+
sleep 1
|
49
|
+
Timeout.timeout(Capybara.default_wait_time, Timeout::Error) do
|
50
|
+
loop until finished_all_ajax_requests?
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def finished_all_ajax_requests?
|
55
|
+
page.evaluate_script('jQuery.active').zero?
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
World(Utils)
|
metadata
CHANGED
@@ -1,17 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cuculungwa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.70
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michal Kaftanski
|
8
|
-
- Jakub Kubiak
|
9
8
|
- Tomasz Tokarski
|
10
9
|
- Jarosław Biniek
|
11
10
|
autorequire:
|
12
11
|
bindir: bin
|
13
12
|
cert_chain: []
|
14
|
-
date: 2015-
|
13
|
+
date: 2015-12-29 00:00:00.000000000 Z
|
15
14
|
dependencies:
|
16
15
|
- !ruby/object:Gem::Dependency
|
17
16
|
name: aruba
|
@@ -240,6 +239,9 @@ extensions: []
|
|
240
239
|
extra_rdoc_files: []
|
241
240
|
files:
|
242
241
|
- lib/cuculungwa.rb
|
242
|
+
- lib/cuculungwa/formatters.rb
|
243
|
+
- lib/cuculungwa/generators.rb
|
244
|
+
- lib/cuculungwa/utils.rb
|
243
245
|
homepage: http://rubygems.org/gems/cuculungwa
|
244
246
|
licenses:
|
245
247
|
- MIT
|
@@ -252,7 +254,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
252
254
|
requirements:
|
253
255
|
- - ">="
|
254
256
|
- !ruby/object:Gem::Version
|
255
|
-
version:
|
257
|
+
version: 2.2.2
|
256
258
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
257
259
|
requirements:
|
258
260
|
- - ">="
|