glib-web 0.4.71 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (144) hide show
  1. checksums.yaml +5 -5
  2. data/app/controllers/concerns/glib/auth/policy.rb +0 -0
  3. data/app/controllers/concerns/glib/json/libs.rb +30 -7
  4. data/app/controllers/concerns/glib/json/new_dynamic_text.rb +0 -0
  5. data/app/controllers/concerns/glib/json/traversal.rb +0 -0
  6. data/app/controllers/glib/home_controller.rb +0 -0
  7. data/app/helpers/glib/dynamic_images_helper.rb +0 -0
  8. data/app/helpers/glib/dynamic_texts_helper.rb +0 -0
  9. data/app/helpers/glib/forms_helper.rb +0 -0
  10. data/app/helpers/glib/json_ui/abstract_builder.rb +0 -0
  11. data/app/helpers/glib/json_ui/action_builder.rb +0 -18
  12. data/app/helpers/glib/json_ui/action_builder/dialogs.rb +0 -0
  13. data/app/helpers/glib/json_ui/action_builder/http.rb +19 -0
  14. data/app/helpers/glib/json_ui/action_builder/sheets.rb +0 -0
  15. data/app/helpers/glib/json_ui/action_builder/snackbars.rb +0 -0
  16. data/app/helpers/glib/json_ui/action_builder/windows.rb +0 -0
  17. data/app/helpers/glib/json_ui/generic_builders.rb +0 -0
  18. data/app/helpers/glib/json_ui/list_builders.rb +0 -0
  19. data/app/helpers/glib/json_ui/menu_builder.rb +1 -0
  20. data/app/helpers/glib/json_ui/page_helper.rb +0 -0
  21. data/app/helpers/glib/json_ui/response_helper.rb +0 -0
  22. data/app/helpers/glib/json_ui/split_builders.rb +0 -0
  23. data/app/helpers/glib/json_ui/styling_helper.rb +0 -0
  24. data/app/helpers/glib/json_ui/table_builders.rb +0 -0
  25. data/app/helpers/glib/json_ui/view_builder.rb +0 -0
  26. data/app/helpers/glib/json_ui/view_builder/banners.rb +0 -0
  27. data/app/helpers/glib/json_ui/view_builder/fields.rb +0 -0
  28. data/app/helpers/glib/json_ui/view_builder/panels.rb +4 -3
  29. data/app/models/glib/active_storage/attachment.rb +0 -0
  30. data/app/models/glib/active_storage/blob.rb +0 -0
  31. data/app/models/glib/dynamic_text_record.rb +0 -0
  32. data/app/models/glib/text.rb +0 -0
  33. data/app/policies/glib/application_policy.rb +0 -0
  34. data/app/validators/email_typo_validator.rb +23 -23
  35. data/app/validators/email_validator.rb +0 -0
  36. data/app/validators/url_validator.rb +0 -0
  37. data/app/views/app/views/json_ui/vue/renderer.html.erb +0 -0
  38. data/app/views/json_ui/garage/_nav_menu.json.jbuilder +0 -0
  39. data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +0 -0
  40. data/app/views/json_ui/garage/actions/_http.json.jbuilder +18 -0
  41. data/app/views/json_ui/garage/actions/_reload.json.jbuilder +17 -0
  42. data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +0 -0
  43. data/app/views/json_ui/garage/actions/_snackbars.json.jbuilder +0 -0
  44. data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +0 -0
  45. data/app/views/json_ui/garage/actions/_windows.json.jbuilder +0 -0
  46. data/app/views/json_ui/garage/actions/index.json.jbuilder +3 -18
  47. data/app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder +0 -0
  48. data/app/views/json_ui/garage/forms/basic.json.jbuilder +0 -0
  49. data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +0 -0
  50. data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +0 -0
  51. data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +0 -0
  52. data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +0 -0
  53. data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +0 -0
  54. data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +0 -0
  55. data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +0 -0
  56. data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +0 -0
  57. data/app/views/json_ui/garage/forms/get_request.json.jbuilder +0 -0
  58. data/app/views/json_ui/garage/forms/index.json.jbuilder +0 -0
  59. data/app/views/json_ui/garage/forms/pickers.json.jbuilder +0 -0
  60. data/app/views/json_ui/garage/forms/rich_text.json.jbuilder +0 -0
  61. data/app/views/json_ui/garage/forms/selects.json.jbuilder +0 -0
  62. data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +0 -0
  63. data/app/views/json_ui/garage/forms/styled_boxes.json.jbuilder +0 -0
  64. data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +0 -0
  65. data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +0 -0
  66. data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +0 -0
  67. data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +0 -0
  68. data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +0 -0
  69. data/app/views/json_ui/garage/home/blank.json.jbuilder +0 -0
  70. data/app/views/json_ui/garage/home/index.json.jbuilder +0 -0
  71. data/app/views/json_ui/garage/home/slow.json.jbuilder +0 -0
  72. data/app/views/json_ui/garage/lists/_infinite_scroll_section.json.jbuilder +0 -0
  73. data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +0 -0
  74. data/app/views/json_ui/garage/lists/fab.json.jbuilder +0 -0
  75. data/app/views/json_ui/garage/lists/index.json.jbuilder +0 -0
  76. data/app/views/json_ui/garage/lists/infinite_scroll.json.jbuilder +0 -0
  77. data/app/views/json_ui/garage/lists/templating.json.jbuilder +1 -1
  78. data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +0 -0
  79. data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +0 -0
  80. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +0 -0
  81. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +10 -11
  82. data/app/views/json_ui/garage/pages/index.json.jbuilder +0 -0
  83. data/app/views/json_ui/garage/pages/layout.json.jbuilder +0 -0
  84. data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +0 -0
  85. data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +0 -0
  86. data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +0 -0
  87. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +0 -0
  88. data/app/views/json_ui/garage/panels/card.json.jbuilder +0 -0
  89. data/app/views/json_ui/garage/panels/carousel.json.jbuilder +0 -0
  90. data/app/views/json_ui/garage/panels/custom.json.jbuilder +0 -0
  91. data/app/views/json_ui/garage/panels/flow.json.jbuilder +0 -0
  92. data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +0 -0
  93. data/app/views/json_ui/garage/panels/index.json.jbuilder +0 -0
  94. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +0 -0
  95. data/app/views/json_ui/garage/panels/responsive.json.jbuilder +0 -0
  96. data/app/views/json_ui/garage/panels/split.json.jbuilder +0 -0
  97. data/app/views/json_ui/garage/panels/vertical.json.jbuilder +0 -0
  98. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +0 -0
  99. data/app/views/json_ui/garage/services/image.json.jbuilder +0 -0
  100. data/app/views/json_ui/garage/services/index.json.jbuilder +0 -0
  101. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +0 -0
  102. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +0 -0
  103. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +0 -0
  104. data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +0 -0
  105. data/app/views/json_ui/garage/tables/index.json.jbuilder +0 -0
  106. data/app/views/json_ui/garage/tables/layout.json.jbuilder +0 -0
  107. data/app/views/json_ui/garage/views/banners.json.jbuilder +0 -0
  108. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +0 -0
  109. data/app/views/json_ui/garage/views/carousels.json.jbuilder +0 -0
  110. data/app/views/json_ui/garage/views/charts.json.jbuilder +0 -0
  111. data/app/views/json_ui/garage/views/images.json.jbuilder +0 -0
  112. data/app/views/json_ui/garage/views/index.json.jbuilder +0 -0
  113. data/app/views/json_ui/garage/views/links.json.jbuilder +0 -0
  114. data/app/views/json_ui/garage/views/map_data.json.jbuilder +0 -0
  115. data/app/views/json_ui/garage/views/misc.json.jbuilder +0 -0
  116. data/app/views/json_ui/garage/views/texts.json.jbuilder +0 -0
  117. data/config/routes.rb +2 -0
  118. data/lib/generators/glib/install_generator.rb +0 -0
  119. data/lib/generators/templates/20191017062519_create_texts.rb +0 -0
  120. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +0 -0
  121. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +0 -0
  122. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +0 -0
  123. data/lib/generators/templates/database.yml +0 -0
  124. data/lib/generators/templates/dynamic_text.rb +0 -0
  125. data/lib/glib-web.rb +1 -0
  126. data/lib/glib/crypt.rb +1 -1
  127. data/lib/glib/crypt/utils.rb +0 -0
  128. data/lib/glib/dynamic_text.rb +1 -1
  129. data/lib/glib/dynamic_text/config.rb +0 -0
  130. data/lib/glib/engine.rb +0 -0
  131. data/lib/glib/json_crawler.rb +0 -0
  132. data/lib/glib/json_crawler/action_crawler.rb +0 -0
  133. data/lib/glib/json_crawler/action_crawlers/action_http.rb +0 -0
  134. data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +0 -0
  135. data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +0 -0
  136. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +7 -2
  137. data/lib/glib/json_crawler/coverage.rb +0 -0
  138. data/lib/glib/json_crawler/http.rb +4 -8
  139. data/lib/glib/json_crawler/router.rb +0 -4
  140. data/lib/glib/test_helpers.rb +40 -0
  141. data/lib/glib/value.rb +0 -0
  142. data/lib/glib/version.rb +0 -0
  143. data/lib/tasks/db.rake +0 -0
  144. metadata +6 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 484c96e0a3248d0e41548a4d4527edeb53748679
4
- data.tar.gz: 416c21f0c017de9501bdcd5e2d3444c8f5896056
2
+ SHA256:
3
+ metadata.gz: 92d880220ff29cbee352b8077c541e62b548796b4f1e7ef760f1f3b2967360be
4
+ data.tar.gz: 8d2f3393a965980996dc0408859f130551d7c840a88bd11435ecb48ee64aba99
5
5
  SHA512:
6
- metadata.gz: 2dccc517539bf275df626b273dd724b72fa651ad17f50ef4a7c6d1680f745b5dbbd01d8b061af9b603f0d237312d2139d31a88a538ac901192dad19fb2cea58a
7
- data.tar.gz: 85fb1678e0bee26f9c53fdd3eb0e1c5a7ea6fe27f8ec06bfafc07df09301ea413c7decd40ea1f3a1a30c292657ee1e8a61faefceda07415605c8b5b8d2397054
6
+ metadata.gz: a75416c64751c7b4680104e9bcd199bfec7945bf34a4e7cdc58f4fb9deadc16aa1a79e54e0d50dd3f968e133f6583f39fa0ef4979f2bff0e952eabf4ebc65593
7
+ data.tar.gz: f9024d9668c9e6198db90494237f7ca0f2a87199fbe5c1c17d2410f3382b1cd6600c8862aeb700171ab08172704b59bfa6a93359cda6ba57a11bea77f2aa93f3
@@ -46,14 +46,28 @@ module Glib::Json::Libs
46
46
  end
47
47
  end
48
48
 
49
- def json_libs_handle_404
50
- if json_ui_activated?
51
- render file: "#{Rails.root}/public/404.html", status: :not_found
49
+ def glib_json_handle_403
50
+ render file: Rails.root.join('public', '404.html'), status: :forbidden
51
+ end
52
+
53
+ def glib_json_handle_404
54
+ raise ActionController::RoutingError.new('Not Found')
55
+
56
+ # if json_ui_activated?
57
+ # render file: Rails.root.join('public', '404.html'), status: :not_found
58
+ # else
59
+ # raise exception
60
+ # end
61
+ end
62
+
63
+ def glib_json_handle_500(exception)
64
+ if json_ui_activated? && Rails.env.production?
65
+ Rollbar.error(exception) if defined?(Rollbar)
66
+ render file: Rails.root.join('public', '500.html'), status: :internal_server_error
52
67
  else
53
68
  raise exception
54
69
  end
55
70
  end
56
-
57
71
 
58
72
 
59
73
  module ClassMethods
@@ -111,11 +125,20 @@ module Glib::Json::Libs
111
125
  end
112
126
  end
113
127
 
114
- def json_libs_rescue_404
115
- rescue_from ActiveRecord::RecordNotFound do |exception|
116
- json_libs_handle_404
128
+ # Call this before other rescues. Later rescue_from statements will take precedence, so more specific
129
+ # rescues have to be declared later.
130
+ def json_libs_rescue_500
131
+ rescue_from StandardError do |exception|
132
+ glib_json_handle_500(exception)
117
133
  end
118
134
  end
119
135
 
136
+ def json_libs_rescue_404
137
+ # Removed because it doesn't seem to offer anything extra
138
+ # rescue_from ActiveRecord::RecordNotFound do |exception|
139
+ # glib_json_handle_404
140
+ # end
141
+ end
142
+
120
143
  end
121
144
  end
File without changes
File without changes
File without changes
File without changes
@@ -75,24 +75,6 @@ module Glib
75
75
  end
76
76
  end
77
77
 
78
- module Http
79
- class Post < Action
80
- string :url, cache: true
81
- hash :formData
82
- end
83
-
84
- class Patch < Action
85
- string :url, cache: true
86
- hash :formData
87
- end
88
-
89
- class Delete < Action
90
- string :url, cache: true
91
- hash :formData
92
- end
93
-
94
- end
95
-
96
78
  ###
97
79
  end
98
80
  end
@@ -0,0 +1,19 @@
1
+ class Glib::JsonUi::ActionBuilder
2
+ module Http
3
+ class Post < Action
4
+ string :url, cache: true
5
+ hash :formData
6
+ end
7
+
8
+ class Patch < Action
9
+ string :url, cache: true
10
+ hash :formData
11
+ end
12
+
13
+ class Delete < Action
14
+ string :url, cache: true
15
+ hash :formData
16
+ end
17
+
18
+ end
19
+ end
File without changes
@@ -35,6 +35,7 @@ module Glib
35
35
 
36
36
  class Label < MenuItem
37
37
  string :text
38
+ singleton_array :styleClass, :styleClasses
38
39
 
39
40
  # Override
40
41
  def created
File without changes
File without changes
@@ -157,10 +157,11 @@ class Glib::JsonUi::ViewBuilder
157
157
  end
158
158
 
159
159
  class Column < View
160
- # int :lg
161
- # int :md
162
- # int :sm
160
+ hash :xl
163
161
  hash :lg
162
+ hash :md
163
+ hash :sm
164
+ hash :xs
164
165
  views :childViews
165
166
  end
166
167
 
File without changes
File without changes
File without changes
File without changes
@@ -1,29 +1,29 @@
1
1
  class EmailTypoValidator < ActiveModel::EachValidator
2
2
  COMMON_FORMAT = {
3
3
  '\.\.' => '.',
4
- '.con\z' => '.com',
5
- '.coj\z' => '.com',
6
- '.vom\z' => '.com',
7
- '.xom\z' => '.com',
8
- '.com[a-z]\z' => '.com',
9
- '.con.' => '.com.',
10
- '.orf\z' => '.org',
11
- '.orf.' => '.org.',
12
- '@hitmail.' => '@hotmail.',
13
- '@htomail.' => '@hotmail.',
14
- '@hotnail.' => '@hotmail.',
15
- '@hotmil.' => '@hotmail.',
16
- '@hotmal.' => '@hotmail.',
17
- '@hoymail.' => '@hotmail.',
18
- '@hormail.' => '@hotmail.',
19
- '@hotmsil.' => '@hotmail.',
20
- '@gail.' => '@gmail.',
21
- '@gnail.' => '@gmail.',
22
- '@gmil.' => '@gmail.',
23
- '@gmal.' => '@gmail.',
24
- '@gmai.' => '@gmail.',
25
- '@yahho.' => '@yahoo.',
26
- '@yaho.' => '@yahoo.',
4
+ '\.con\z' => '.com',
5
+ '\.coj\z' => '.com',
6
+ '\.vom\z' => '.com',
7
+ '\.xom\z' => '.com',
8
+ '\.com[a-z]\z' => '.com',
9
+ '\.con\.' => '.com.',
10
+ '\.orf\z' => '.org',
11
+ '\.orf\.' => '.org.',
12
+ '@hitmail\.' => '@hotmail.',
13
+ '@htomail\.' => '@hotmail.',
14
+ '@hotnail\.' => '@hotmail.',
15
+ '@hotmil\.' => '@hotmail.',
16
+ '@hotmal\.' => '@hotmail.',
17
+ '@hoymail\.' => '@hotmail.',
18
+ '@hormail\.' => '@hotmail.',
19
+ '@hotmsil\.' => '@hotmail.',
20
+ '@gail\.' => '@gmail.',
21
+ '@gnail\.' => '@gmail.',
22
+ '@gmil\.' => '@gmail.',
23
+ '@gmal\.' => '@gmail.',
24
+ '@gmai\.' => '@gmail.',
25
+ '@yahho\.' => '@yahoo.',
26
+ '@yaho\.' => '@yahoo.',
27
27
  }
28
28
 
29
29
  def validate_each(record, attribute, value)
File without changes
File without changes
@@ -0,0 +1,18 @@
1
+
2
+ section.header padding: glib_json_padding_list, childViews: ->(header) do
3
+ header.h3 text: 'HTTP'
4
+ end
5
+
6
+ section.rows builder: ->(template) do
7
+ template.thumbnail title: 'http/post', onClick: ->(action) do
8
+ action.http_post url: json_ui_garage_url(path: 'forms/basic_post'), formData: { 'user[name]' => 'New Joe' }
9
+ end
10
+
11
+ template.thumbnail title: 'http/patch', onClick: ->(action) do
12
+ action.http_patch url: json_ui_garage_url(path: 'forms/basic_post'), formData: { 'user[name]' => 'Edit Joe' }
13
+ end
14
+
15
+ template.thumbnail title: 'http/delete', onClick: ->(action) do
16
+ action.http_delete url: json_ui_garage_url(path: 'forms/basic_post'), formData: { 'user[name]' => 'Delete Joe' }
17
+ end
18
+ end
@@ -0,0 +1,17 @@
1
+ section.header padding: glib_json_padding_list, childViews: ->(header) do
2
+ header.h3 text: 'Reload'
3
+ header.spacer height: 6
4
+ header.label text: 'Reload does not open a new page/screen. Click reload a few times, then click back and notice that it goes back to the page before the reload.'
5
+ end
6
+
7
+ section.rows builder: ->(template) do
8
+ template.thumbnail title: "windows/reload (timestamp: #{DateTime.current.to_i})", onClick: ->(action) do
9
+ action.windows_reload
10
+ end
11
+
12
+ reload_counter = params[:reload_counter].to_i
13
+ reload_counter = 0 if reload_counter > 5
14
+ template.thumbnail title: "windows/reload with URL (counter: #{reload_counter})", onClick: ->(action) do
15
+ action.windows_reload url: json_ui_garage_url(path: 'actions/index', reload_counter: reload_counter + 1)
16
+ end
17
+ end
@@ -15,24 +15,9 @@ json_ui_page json do |page|
15
15
  end, ->(section) do
16
16
  render "#{@path_prefix}/actions/timeouts", section: section
17
17
  end, ->(section) do
18
- section.header padding: glib_json_padding_list, childViews: ->(header) do
19
- header.h3 text: 'Reload'
20
- header.spacer height: 6
21
- header.label text: 'Reload does not open a new page/screen. Click reload a few times, then click back and notice that it goes back to the page before the reload.'
22
- end
23
-
24
- section.rows builder: ->(template) do
25
- template.thumbnail title: "windows/reload (timestamp: #{DateTime.current.to_i})", onClick: ->(action) do
26
- action.windows_reload
27
- end
28
-
29
- reload_counter = params[:reload_counter].to_i
30
- reload_counter = 0 if reload_counter > 5
31
- template.thumbnail title: "windows/reload with URL (counter: #{reload_counter})", onClick: ->(action) do
32
- action.windows_reload url: json_ui_garage_url(path: 'actions/index', reload_counter: reload_counter + 1)
33
- end
34
-
35
- end
18
+ render "#{@path_prefix}/actions/http", section: section
19
+ end, ->(section) do
20
+ render "#{@path_prefix}/actions/reload", section: section
36
21
  end
37
22
  ]
38
23
  end
@@ -14,7 +14,7 @@ json_ui_page json do |page|
14
14
  end
15
15
  template.thumbnail title: 'Item with subtitle', subtitle: 'Item subtitle'
16
16
  template.thumbnail title: 'Item with chips', chips: ->(menu) do
17
- menu.button text: 'FInished', styleClass: 'info'
17
+ menu.button text: 'Finished', styleClass: 'info'
18
18
  menu.button props: { text: 'Succeeded', styleClass: 'success' }
19
19
  end
20
20
 
@@ -1,17 +1,16 @@
1
1
  json.title 'Pages'
2
2
 
3
- json_ui_page json do |page|
4
- render "#{@path_prefix}/nav_menu", json: json, page: page
3
+ page = json_ui_page json
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
5
 
6
- page.header padding: glib_json_padding_body, backgroundColor: '#b3bac2', childViews: ->(header) do
7
- header.h1 text: 'Header'
8
- end
6
+ page.header padding: glib_json_padding_body, backgroundColor: '#b3bac2', childViews: ->(header) do
7
+ header.h1 text: 'Header'
8
+ end
9
9
 
10
- page.body height: 'matchParent', padding: glib_json_padding_body, childViews: ->(body) do
11
- body.button width: 'matchParent', height: 'matchParent', text: 'Full Width/Height'
12
- end
10
+ page.body height: 'matchParent', padding: glib_json_padding_body, childViews: ->(body) do
11
+ body.button width: 'matchParent', height: 'matchParent', text: 'Full Width/Height'
12
+ end
13
13
 
14
- page.footer height: 80, padding: glib_json_padding_body, backgroundColor: '#b3bac2', childViews: ->(footer) do
15
- footer.h1 text: 'Footer'
16
- end
14
+ page.footer height: 80, padding: glib_json_padding_body, backgroundColor: '#b3bac2', childViews: ->(footer) do
15
+ footer.h1 text: 'Footer'
17
16
  end
@@ -2,5 +2,7 @@ Glib::Web::Engine.routes.draw do
2
2
  scope module: :glib do
3
3
  get 'json_ui_garage', to: 'home#json_ui_garage'
4
4
  post 'json_ui_garage', to: 'home#json_ui_garage'
5
+ patch 'json_ui_garage', to: 'home#json_ui_garage'
6
+ delete 'json_ui_garage', to: 'home#json_ui_garage'
5
7
  end
6
8
  end
File without changes
File without changes
File without changes
@@ -5,3 +5,4 @@ require "glib/json_crawler"
5
5
 
6
6
  require 'glib/dynamic_text'
7
7
  require 'glib/crypt'
8
+ require 'glib/test_helpers'
@@ -1 +1 @@
1
- require_relative './crypt/utils'
1
+ require_relative './crypt/utils'
File without changes
@@ -1 +1 @@
1
- require_relative './dynamic_text/config'
1
+ require_relative './dynamic_text/config'
File without changes
File without changes
File without changes
File without changes
@@ -12,11 +12,16 @@ module Glib
12
12
  crawl json['footer']&.[]('childViews')
13
13
 
14
14
  json['rightNavButtons']&.each do |button|
15
- click button
15
+ if button['buttons'].present?
16
+ button['buttons'].each do |inner_button|
17
+ click inner_button
18
+ end
19
+ else
20
+ click button
21
+ end
16
22
  end
17
23
  end
18
24
  end
19
-
20
25
  end
21
26
  end
22
27
  end
File without changes
@@ -40,14 +40,6 @@ module Glib
40
40
  fetch(:delete, url, action, {})
41
41
  end
42
42
 
43
- def controller
44
- @context.integration_session.controller
45
- end
46
-
47
- def action_name
48
- controller.action_name.to_sym
49
- end
50
-
51
43
  private
52
44
  Response = Struct.new :code, :headers, :media_type, :body do
53
45
  def initialize(*)
@@ -83,6 +75,10 @@ module Glib
83
75
  @context.send(method, url, params: params, headers: http_header)
84
76
  raw_response = @context.response
85
77
  response = Response.new(raw_response.code.to_i, raw_response.headers, raw_response.media_type, raw_response.body)
78
+
79
+ if (controller = @context.controller)
80
+ Glib::JsonCrawler::Coverage.coverage_files.add(controller.class.instance_method(controller.action_name).source_location.first)
81
+ end
86
82
  rescue => ex
87
83
  if !inspect_result
88
84
  case ex
@@ -19,10 +19,6 @@ module Glib
19
19
  end
20
20
 
21
21
  def step(http, args)
22
- if (controller = http.controller)
23
- Glib::JsonCrawler::Coverage.coverage_files.add(controller.class.instance_method(http.action_name).source_location.first)
24
- end
25
-
26
22
  case args['view']
27
23
  when 'fields/submit-v1', 'fields/submit'
28
24
  @depth += 1
@@ -0,0 +1,40 @@
1
+ module Glib
2
+ module TestHelpers
3
+ def response_assert_equal
4
+ expected = __get_previous_result_from_git
5
+ result = __log(response.body)
6
+ assert_equal JSON.parse(expected), JSON.parse(result), "Result mismatch! #{__git_is_available? ? `git diff #{__log_dir}/#{__log_file}` : ''}"
7
+ end
8
+
9
+ private
10
+ def __git_is_available?
11
+ @__git_is_available ||= (`git status 2>&1` =~ /fatal/).nil?
12
+ end
13
+
14
+ def __log_dir
15
+ if @__log_dir.nil?
16
+ @__log_dir = File.expand_path("controllers/#{self.class.to_s.underscore}_results", File.dirname(__FILE__))
17
+ unless File.directory?(@__log_dir)
18
+ FileUtils.mkdir_p(@__log_dir)
19
+ end
20
+ end
21
+ @__log_dir
22
+ end
23
+
24
+ def __log_file
25
+ @__log_file ||= "#{self.method_name}.json"
26
+ end
27
+
28
+ def __log json
29
+ File.open("#{File.join(__log_dir, __log_file)}", "w") do |f|
30
+ f << JSON.pretty_generate( JSON.parse(json) )
31
+ end
32
+ json
33
+ end
34
+
35
+ def __get_previous_result_from_git
36
+ `git checkout -- "#{File.join(__log_dir, __log_file)}" > /dev/null 2>&1` if __git_is_available?
37
+ File.exists?(File.join(__log_dir, __log_file)) ? File.open(File.join(__log_dir, __log_file)).read : "\{\}"
38
+ end
39
+ end
40
+ end
File without changes
File without changes
File without changes
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: 0.4.71
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''
@@ -79,6 +79,7 @@ files:
79
79
  - app/helpers/glib/json_ui/abstract_builder.rb
80
80
  - app/helpers/glib/json_ui/action_builder.rb
81
81
  - app/helpers/glib/json_ui/action_builder/dialogs.rb
82
+ - app/helpers/glib/json_ui/action_builder/http.rb
82
83
  - app/helpers/glib/json_ui/action_builder/sheets.rb
83
84
  - app/helpers/glib/json_ui/action_builder/snackbars.rb
84
85
  - app/helpers/glib/json_ui/action_builder/windows.rb
@@ -107,6 +108,8 @@ files:
107
108
  - app/views/app/views/json_ui/vue/renderer.html.erb
108
109
  - app/views/json_ui/garage/_nav_menu.json.jbuilder
109
110
  - app/views/json_ui/garage/actions/_dialogs.json.jbuilder
111
+ - app/views/json_ui/garage/actions/_http.json.jbuilder
112
+ - app/views/json_ui/garage/actions/_reload.json.jbuilder
110
113
  - app/views/json_ui/garage/actions/_sheets.json.jbuilder
111
114
  - app/views/json_ui/garage/actions/_snackbars.json.jbuilder
112
115
  - app/views/json_ui/garage/actions/_timeouts.json.jbuilder
@@ -209,6 +212,7 @@ files:
209
212
  - lib/glib/json_crawler/coverage.rb
210
213
  - lib/glib/json_crawler/http.rb
211
214
  - lib/glib/json_crawler/router.rb
215
+ - lib/glib/test_helpers.rb
212
216
  - lib/glib/value.rb
213
217
  - lib/glib/version.rb
214
218
  - lib/tasks/db.rake
@@ -230,8 +234,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
230
234
  - !ruby/object:Gem::Version
231
235
  version: '0'
232
236
  requirements: []
233
- rubyforge_project:
234
- rubygems_version: 2.6.8
237
+ rubygems_version: 3.1.2
235
238
  signing_key:
236
239
  specification_version: 4
237
240
  summary: ''