glib-web 4.34.4 → 4.34.5

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
  SHA256:
3
- metadata.gz: ce49a23fa2c7a5bf890e9b7d333b58b3b9880254e9c1b5177ecf1a43d0fe19c5
4
- data.tar.gz: ca1ae7dc7858240000d72de5910bbdaf7d903755a7a3554b952e6b7ce22f2f93
3
+ metadata.gz: 71657e9b80c2a5759e3df0ee81e068470bb5dfb627b8339241703b948e72129f
4
+ data.tar.gz: 9b754b492975ebea6d3d5b2a18b667ae00398a2f1cebdd2a6b33fcca377b8b0f
5
5
  SHA512:
6
- metadata.gz: c31cca19a9d044a161e5829579d8cf7abad6f486c99d53ad97519b2ab6331800413c735521e24ebb3b52018b9f4bd226a67886d55c9d8954a70bd6af9b66bcfa
7
- data.tar.gz: 64ac3b7bb7f694c1e028f2912d3e009061811c6c9cb2ddf1e0e9db8b43db20aadf289f33d2c09e91fd79d6f3758af1728c8eef50bf88967abbc796b411a2e6d1
6
+ metadata.gz: 96e3dd7df23643cc4bdff6e7fd4d3cdc8ca0cb05c1a955686ffb94707569a16bccbd50d1ee9fcb0cb469d2c946cb96f0786c7b8590b6136d39f086848ab3350a
7
+ data.tar.gz: 6ca9a5ec915680ecc074c369807838e56541e3946ba928d751965198a984cee991232aa5d8be389d75fef64cd77c9502a90d6338e200cc4cfcb855746ca23391
@@ -1,10 +1,12 @@
1
+ require 'damerau-levenshtein'
2
+
1
3
  module Glib
2
4
  module JsonCrawler
3
5
  class Router
4
6
  attr_reader :read_only_actions # deprecated
5
7
  attr_reader :logger, :last_log, :deferred_actions
6
8
  attr_reader :http_actions
7
- attr_accessor :host
9
+ attr_accessor :host, :skip_similar_page
8
10
 
9
11
  def log(action, url, response = nil)
10
12
  @last_log = [
@@ -53,6 +55,7 @@ module Glib
53
55
  @host ||= 'localhost:3000'
54
56
  @page_specs = []
55
57
  @page_urls = []
58
+ @skip_similar_page = false
56
59
  end
57
60
 
58
61
  def step(http, args)
@@ -85,6 +88,8 @@ module Glib
85
88
  assert_target_ids_exist(params)
86
89
 
87
90
  if action.present?
91
+ return if similar_page?(params)
92
+
88
93
  @depth += 1
89
94
  case action
90
95
  when 'initiate_navigation'
@@ -205,6 +210,22 @@ module Glib
205
210
  regex = Regexp.new("#{host}.+(?<!\.pdf)$")
206
211
  regex.match(url)
207
212
  end
213
+
214
+ private
215
+ def similar_page?(params)
216
+ return false if http_actions.blank? || params['url'].blank?
217
+ return false if !skip_similar_page
218
+
219
+ result = false
220
+ http_actions.each do |http_action|
221
+ next if http_action[1].blank?
222
+ distance = ::DamerauLevenshtein.distance(http_action[1], params['url'])
223
+ result = (distance <= 1) && (http_action[0] == params['action'])
224
+
225
+ break if result
226
+ end
227
+ result
228
+ end
208
229
  end
209
230
  end
210
231
  end
@@ -7,10 +7,10 @@ module Glib
7
7
  end
8
8
 
9
9
  module ClassMethods
10
- def define_crawler_test(user, crawled_at, dump_path:, &on_after_crawl)
10
+ def define_crawler_test(user, crawled_at, dump_path: , skip_similar_page: false, &on_after_crawl)
11
11
  test "crawl api for #{user[:email]} #{user[:device]} #{user[:version] || 'current'}" do
12
12
  Timecop.freeze(crawled_at || user[:crawled_at]) do
13
- router = crawl_json_pages(user, dump_actions: dump_path.present?, dump_path: dump_path)
13
+ router = crawl_json_pages(user, dump_actions: dump_path.present?, dump_path: dump_path, skip_similar_page: skip_similar_page)
14
14
  on_after_crawl&.call(router)
15
15
  end
16
16
 
@@ -36,10 +36,11 @@ module Glib
36
36
  assert_equal JSON.parse(expected), JSON.parse(result), "Result mismatch! #{__git_is_available? ? `git diff #{__controller_log_dir}/#{__controller_log_file}` : ''}"
37
37
  end
38
38
 
39
- def crawl_json_pages(user, log_file: nil, dump_actions: false, dump_path: nil, &block)
39
+ def crawl_json_pages(user, log_file: nil, dump_actions: false, dump_path: nil, skip_similar_page: false, &block)
40
40
  __execute_crawler(user, inspect_http: true) do |router, http|
41
41
  path = user[:path] ? "#{user[:path]}?format=json" : '/users/me?format=json&redirect=default'
42
42
  router.host = HOST
43
+ router.skip_similar_page = skip_similar_page
43
44
  router.step(
44
45
  http,
45
46
  'onClick' => {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glib-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.34.4
4
+ version: 4.34.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: damerau-levenshtein
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
125
139
  description:
126
140
  email: ''
127
141
  executables: []