katello 4.16.3 → 4.17.0.rc1

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.

Potentially problematic release.


This version of katello might be problematic. Click here for more details.

Files changed (509) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/hosts/host_and_hostgroup_edit.js +5 -3
  3. data/app/assets/javascripts/katello/locale/bn/katello.js +77 -263
  4. data/app/assets/javascripts/katello/locale/bn_IN/katello.js +77 -263
  5. data/app/assets/javascripts/katello/locale/ca/katello.js +77 -263
  6. data/app/assets/javascripts/katello/locale/cs/katello.js +77 -263
  7. data/app/assets/javascripts/katello/locale/cs_CZ/katello.js +77 -263
  8. data/app/assets/javascripts/katello/locale/de/katello.js +87 -273
  9. data/app/assets/javascripts/katello/locale/de_AT/katello.js +77 -263
  10. data/app/assets/javascripts/katello/locale/de_DE/katello.js +77 -263
  11. data/app/assets/javascripts/katello/locale/el/katello.js +77 -263
  12. data/app/assets/javascripts/katello/locale/en/katello.js +77 -263
  13. data/app/assets/javascripts/katello/locale/en_GB/katello.js +77 -263
  14. data/app/assets/javascripts/katello/locale/en_US/katello.js +77 -263
  15. data/app/assets/javascripts/katello/locale/es/katello.js +242 -428
  16. data/app/assets/javascripts/katello/locale/et_EE/katello.js +77 -263
  17. data/app/assets/javascripts/katello/locale/fr/katello.js +900 -1086
  18. data/app/assets/javascripts/katello/locale/gl/katello.js +77 -263
  19. data/app/assets/javascripts/katello/locale/gu/katello.js +77 -263
  20. data/app/assets/javascripts/katello/locale/he_IL/katello.js +77 -263
  21. data/app/assets/javascripts/katello/locale/hi/katello.js +77 -263
  22. data/app/assets/javascripts/katello/locale/id/katello.js +77 -263
  23. data/app/assets/javascripts/katello/locale/it/katello.js +78 -264
  24. data/app/assets/javascripts/katello/locale/ja/katello.js +628 -814
  25. data/app/assets/javascripts/katello/locale/ka/katello.js +474 -660
  26. data/app/assets/javascripts/katello/locale/kn/katello.js +77 -263
  27. data/app/assets/javascripts/katello/locale/ko/katello.js +2129 -2314
  28. data/app/assets/javascripts/katello/locale/ml_IN/katello.js +77 -263
  29. data/app/assets/javascripts/katello/locale/mr/katello.js +77 -263
  30. data/app/assets/javascripts/katello/locale/nl_NL/katello.js +77 -263
  31. data/app/assets/javascripts/katello/locale/or/katello.js +77 -263
  32. data/app/assets/javascripts/katello/locale/pa/katello.js +77 -263
  33. data/app/assets/javascripts/katello/locale/pl/katello.js +77 -263
  34. data/app/assets/javascripts/katello/locale/pl_PL/katello.js +77 -263
  35. data/app/assets/javascripts/katello/locale/pt/katello.js +77 -263
  36. data/app/assets/javascripts/katello/locale/pt_BR/katello.js +255 -441
  37. data/app/assets/javascripts/katello/locale/ro/katello.js +77 -263
  38. data/app/assets/javascripts/katello/locale/ro_RO/katello.js +77 -263
  39. data/app/assets/javascripts/katello/locale/ru/katello.js +78 -264
  40. data/app/assets/javascripts/katello/locale/sl/katello.js +77 -263
  41. data/app/assets/javascripts/katello/locale/sv_SE/katello.js +77 -263
  42. data/app/assets/javascripts/katello/locale/ta/katello.js +77 -263
  43. data/app/assets/javascripts/katello/locale/ta_IN/katello.js +77 -263
  44. data/app/assets/javascripts/katello/locale/te/katello.js +77 -263
  45. data/app/assets/javascripts/katello/locale/tr/katello.js +77 -263
  46. data/app/assets/javascripts/katello/locale/vi/katello.js +77 -263
  47. data/app/assets/javascripts/katello/locale/vi_VN/katello.js +77 -263
  48. data/app/assets/javascripts/katello/locale/zh/katello.js +77 -263
  49. data/app/assets/javascripts/katello/locale/zh_CN/katello.js +632 -818
  50. data/app/assets/javascripts/katello/locale/zh_TW/katello.js +78 -264
  51. data/app/controllers/katello/api/registry/registry_proxies_controller.rb +19 -5
  52. data/app/controllers/katello/api/v2/content_view_components_controller.rb +6 -6
  53. data/app/controllers/katello/api/v2/content_view_filters_controller.rb +3 -0
  54. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +6 -0
  55. data/app/controllers/katello/api/v2/content_views_controller.rb +12 -1
  56. data/app/controllers/katello/api/v2/exports_controller.rb +3 -0
  57. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +12 -14
  58. data/app/controllers/katello/api/v2/organizations_controller.rb +10 -10
  59. data/app/controllers/katello/concerns/authorization/api/v2/content_views_controller.rb +8 -2
  60. data/app/lib/actions/helpers/rolling_cv_repos.rb +25 -0
  61. data/app/lib/actions/katello/capsule_content/sync_capsule.rb +6 -1
  62. data/app/lib/actions/katello/content_view/add_rolling_repo_clone.rb +39 -0
  63. data/app/lib/actions/katello/content_view/create.rb +3 -0
  64. data/app/lib/actions/katello/content_view/refresh_rolling_repo.rb +40 -0
  65. data/app/lib/actions/katello/content_view/remove.rb +8 -4
  66. data/app/lib/actions/katello/content_view/remove_rolling_repo_clone.rb +28 -0
  67. data/app/lib/actions/katello/content_view/update.rb +8 -0
  68. data/app/lib/actions/katello/repository/check_matching_content.rb +1 -8
  69. data/app/lib/actions/katello/repository/import_upload.rb +5 -0
  70. data/app/lib/actions/katello/repository/sync.rb +8 -4
  71. data/app/lib/actions/katello/repository/upload_files.rb +7 -1
  72. data/app/lib/actions/pulp3/orchestration/orphan_cleanup/remove_orphans.rb +3 -2
  73. data/app/lib/actions/pulp3/orphan_cleanup/delete_orphan_repository_versions.rb +8 -1
  74. data/app/lib/katello/errors.rb +8 -0
  75. data/app/lib/katello/validators/container_image_name_validator.rb +3 -2
  76. data/app/models/katello/authorization/repository.rb +11 -1
  77. data/app/models/katello/concerns/host_managed_extensions.rb +2 -2
  78. data/app/models/katello/concerns/pulp_database_unit.rb +12 -42
  79. data/app/models/katello/concerns/smart_proxy_extensions.rb +8 -0
  80. data/app/models/katello/content_view.rb +14 -1
  81. data/app/models/katello/content_view_component.rb +4 -0
  82. data/app/models/katello/content_view_environment.rb +1 -0
  83. data/app/models/katello/content_view_version.rb +3 -2
  84. data/app/models/katello/host/content_facet.rb +18 -5
  85. data/app/models/katello/product_content.rb +3 -1
  86. data/app/models/katello/repository.rb +3 -3
  87. data/app/services/katello/content_unit_indexer.rb +1 -1
  88. data/app/services/katello/pulp3/api/content_guard.rb +1 -1
  89. data/app/services/katello/pulp3/api/core.rb +6 -0
  90. data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +58 -1
  91. data/app/services/katello/pulp3/smart_proxy_repository.rb +67 -3
  92. data/app/services/katello/smart_proxy_helper.rb +6 -1
  93. data/app/views/foreman/job_templates/install_errata_-_katello_ansible_default.erb +15 -1
  94. data/app/views/foreman/job_templates/install_errata_by_search_query_-_katello_ansible_default.erb +15 -1
  95. data/app/views/foreman/job_templates/install_group_-_katello_ansible_default.erb +15 -2
  96. data/app/views/foreman/job_templates/install_packages_by_search_query_-_katello_ansible_default.erb +21 -2
  97. data/app/views/foreman/job_templates/remove_group_-_katello_ansible_default.erb +15 -1
  98. data/app/views/foreman/job_templates/remove_packages_by_search_query_-_katello_ansible_default.erb +20 -1
  99. data/app/views/foreman/job_templates/update_group_-_katello_ansible_default.erb +15 -2
  100. data/app/views/foreman/job_templates/update_packages_by_search_query_-_katello_ansible_default.erb +17 -1
  101. data/app/views/katello/api/v2/activation_keys/base.json.rabl +1 -0
  102. data/app/views/katello/api/v2/capsule_content/sync_status.json.rabl +2 -1
  103. data/app/views/katello/api/v2/content_facet/base.json.rabl +2 -0
  104. data/app/views/katello/api/v2/content_view_versions/base.json.rabl +12 -0
  105. data/app/views/katello/api/v2/content_views/base.json.rabl +1 -0
  106. data/app/views/katello/api/v2/environments/show.json.rabl +14 -0
  107. data/app/views/katello/api/v2/hosts/base.json.rabl +1 -0
  108. data/app/views/katello/api/v2/organizations/show.json.rabl +2 -0
  109. data/app/views/katello/api/v2/repositories/base.json.rabl +2 -1
  110. data/db/migrate/20190930192813_add_pulp3_hrefs_to_content_types.rb +1 -1
  111. data/db/migrate/20240924161240_katello_recreate_evr_constructs.rb +0 -20
  112. data/db/migrate/20241022122325_add_rolling_to_katello_content_views.rb +5 -0
  113. data/db/migrate/20241025151105_remove_pulp3_migrated_hrefs_from_content_tables.rb +1 -1
  114. data/db/migrate/20250215143303_drop_katello_yum_metadata_file.rb +5 -0
  115. data/db/migrate/20250409120843_fix_file_download_policy.rb +11 -0
  116. data/db/migrate/20250410155300_change_ansible_templates_category.rb +22 -0
  117. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn.po +0 -6
  118. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/bn_IN.po +0 -6
  119. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ca.po +0 -6
  120. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/cs_CZ.po +0 -6
  121. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +0 -6
  122. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_AT.po +0 -6
  123. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de_DE.po +0 -6
  124. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/el.po +0 -6
  125. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_GB.po +0 -6
  126. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/en_US.po +0 -6
  127. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +0 -6
  128. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/et_EE.po +0 -6
  129. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +0 -6
  130. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gl.po +0 -6
  131. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/gu.po +0 -6
  132. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/he_IL.po +0 -6
  133. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/hi.po +0 -6
  134. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/id.po +0 -6
  135. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +0 -6
  136. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +0 -6
  137. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ka.po +0 -6
  138. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/kn.po +0 -6
  139. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +0 -6
  140. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ml_IN.po +0 -6
  141. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/mr.po +0 -6
  142. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/nl_NL.po +0 -6
  143. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/or.po +0 -6
  144. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pa.po +0 -6
  145. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl.po +0 -6
  146. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pl_PL.po +0 -6
  147. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt.po +0 -6
  148. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +0 -6
  149. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro.po +0 -6
  150. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ro_RO.po +0 -6
  151. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +0 -6
  152. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sl.po +0 -6
  153. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/sv_SE.po +0 -6
  154. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta.po +0 -6
  155. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ta_IN.po +0 -6
  156. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/te.po +0 -6
  157. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/tr.po +0 -6
  158. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi.po +0 -6
  159. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/vi_VN.po +0 -6
  160. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh.po +0 -6
  161. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +0 -6
  162. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +0 -6
  163. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/repository-types.service.js +3 -0
  164. data/lib/katello/engine.rb +9 -1
  165. data/lib/katello/repository_types/python.rb +1 -1
  166. data/lib/katello/tasks/repository.rake +1 -1
  167. data/lib/katello/version.rb +1 -1
  168. data/locale/action_names.rb +3 -0
  169. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  170. data/locale/bn/katello.po +77 -263
  171. data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
  172. data/locale/bn_IN/katello.po +77 -263
  173. data/locale/ca/LC_MESSAGES/katello.mo +0 -0
  174. data/locale/ca/katello.po +77 -263
  175. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  176. data/locale/cs/katello.po +77 -263
  177. data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
  178. data/locale/cs_CZ/katello.po +77 -263
  179. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  180. data/locale/de/katello.po +91 -277
  181. data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
  182. data/locale/de_AT/katello.po +77 -263
  183. data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
  184. data/locale/de_DE/katello.po +77 -263
  185. data/locale/el/LC_MESSAGES/katello.mo +0 -0
  186. data/locale/el/katello.po +77 -263
  187. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  188. data/locale/en/katello.po +77 -263
  189. data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
  190. data/locale/en_GB/katello.po +77 -263
  191. data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
  192. data/locale/en_US/katello.po +77 -263
  193. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  194. data/locale/es/katello.po +245 -432
  195. data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
  196. data/locale/et_EE/katello.po +77 -263
  197. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  198. data/locale/fr/katello.po +906 -1092
  199. data/locale/gl/LC_MESSAGES/katello.mo +0 -0
  200. data/locale/gl/katello.po +77 -263
  201. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  202. data/locale/gu/katello.po +77 -263
  203. data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
  204. data/locale/he_IL/katello.po +77 -263
  205. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  206. data/locale/hi/katello.po +77 -263
  207. data/locale/id/LC_MESSAGES/katello.mo +0 -0
  208. data/locale/id/katello.po +77 -263
  209. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  210. data/locale/it/katello.po +78 -264
  211. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  212. data/locale/ja/katello.po +634 -822
  213. data/locale/ka/LC_MESSAGES/katello.mo +0 -0
  214. data/locale/ka/katello.po +474 -662
  215. data/locale/katello.pot +1194 -1472
  216. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  217. data/locale/kn/katello.po +77 -263
  218. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  219. data/locale/ko/katello.po +2125 -2324
  220. data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
  221. data/locale/ml_IN/katello.po +77 -263
  222. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  223. data/locale/mr/katello.po +77 -263
  224. data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
  225. data/locale/nl_NL/katello.po +77 -263
  226. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  227. data/locale/or/katello.po +77 -263
  228. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  229. data/locale/pa/katello.po +77 -263
  230. data/locale/pl/LC_MESSAGES/katello.mo +0 -0
  231. data/locale/pl/katello.po +77 -263
  232. data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
  233. data/locale/pl_PL/katello.po +77 -263
  234. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  235. data/locale/pt/katello.po +77 -263
  236. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  237. data/locale/pt_BR/katello.po +258 -445
  238. data/locale/ro/LC_MESSAGES/katello.mo +0 -0
  239. data/locale/ro/katello.po +77 -263
  240. data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
  241. data/locale/ro_RO/katello.po +77 -263
  242. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  243. data/locale/ru/katello.po +78 -264
  244. data/locale/sl/LC_MESSAGES/katello.mo +0 -0
  245. data/locale/sl/katello.po +77 -263
  246. data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
  247. data/locale/sv_SE/katello.po +77 -263
  248. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  249. data/locale/ta/katello.po +77 -263
  250. data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
  251. data/locale/ta_IN/katello.po +77 -263
  252. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  253. data/locale/te/katello.po +77 -263
  254. data/locale/tr/LC_MESSAGES/katello.mo +0 -0
  255. data/locale/tr/katello.po +77 -263
  256. data/locale/vi/LC_MESSAGES/katello.mo +0 -0
  257. data/locale/vi/katello.po +77 -263
  258. data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
  259. data/locale/vi_VN/katello.po +77 -263
  260. data/locale/zh/LC_MESSAGES/katello.mo +0 -0
  261. data/locale/zh/katello.po +77 -263
  262. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  263. data/locale/zh_CN/katello.po +632 -824
  264. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  265. data/locale/zh_TW/katello.po +78 -264
  266. data/webpack/ForemanColumnExtensions/index.js +12 -4
  267. data/webpack/components/ActivationKeysSearch/index.js +6 -7
  268. data/webpack/components/Bookmark/AddBookmarkModal.js +3 -3
  269. data/webpack/components/Bookmark/Bookmark.scss +3 -3
  270. data/webpack/components/Bookmark/index.js +7 -2
  271. data/webpack/components/EditableSwitch.js +1 -1
  272. data/webpack/components/EditableTextInput/EditableTextInput.js +1 -1
  273. data/webpack/components/EditableTextInput/editableTextInput.scss +1 -1
  274. data/webpack/components/Errata/index.js +1 -24
  275. data/webpack/components/Loading.js +10 -6
  276. data/webpack/components/Packages/index.js +2 -1
  277. data/webpack/components/SelectAllCheckbox/index.js +7 -3
  278. data/webpack/components/SelectableDropdown/SelectableDropdown.js +21 -3
  279. data/webpack/components/Table/EmptyStateMessage.js +12 -14
  280. data/webpack/components/Table/MainTable.js +8 -7
  281. data/webpack/components/Table/MainTable.scss +4 -4
  282. data/webpack/components/extensions/HostDetails/ActionsBar/index.js +4 -1
  283. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +1 -1
  284. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ContentViewDetailsCard.js +9 -6
  285. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/changeHostCVModal.test.js +2 -1
  286. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/__tests__/contentViews.fixtures.json +4 -1
  287. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +23 -6
  288. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.scss +1 -1
  289. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard.js +5 -3
  290. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard.scss +3 -3
  291. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +1 -1
  292. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/hostCollectionsModal.test.js +25 -10
  293. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +5 -2
  294. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.scss +2 -2
  295. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +5 -4
  296. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeCard.test.js +6 -3
  297. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeEditModal.test.js +19 -12
  298. data/webpack/components/extensions/HostDetails/Cards/__tests__/errataOverviewCard.test.js +1 -1
  299. data/webpack/components/extensions/HostDetails/DetailsTabCards/HwPropertiesCard.js +1 -4
  300. data/webpack/components/extensions/HostDetails/DetailsTabCards/ImageModeCard.js +1 -4
  301. data/webpack/components/extensions/HostDetails/DetailsTabCards/InstalledProductsCard.js +1 -4
  302. data/webpack/components/extensions/HostDetails/DetailsTabCards/__test__/HwPropertiesCard.test.js +63 -0
  303. data/webpack/components/extensions/HostDetails/DetailsTabCards/__test__/ImageModeCard.test.js +73 -0
  304. data/webpack/components/extensions/HostDetails/DetailsTabCards/__test__/InstalledProductsCard.test.js +45 -0
  305. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebInstallModal.js +12 -2
  306. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebInstallModal.scss +1 -1
  307. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebsTab.js +10 -13
  308. data/webpack/components/extensions/HostDetails/Tabs/DebsTab/DebsTab.scss +1 -1
  309. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +46 -21
  310. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.scss +1 -1
  311. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +15 -7
  312. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.js +13 -3
  313. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.scss +1 -1
  314. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +34 -20
  315. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.scss +1 -1
  316. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +8 -6
  317. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerModal.js +5 -3
  318. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerModal.scss +1 -1
  319. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesEnabler.js +12 -13
  320. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js +16 -6
  321. data/webpack/components/extensions/HostDetails/Tabs/__tests__/debsInstallModal.test.js +10 -5
  322. data/webpack/components/extensions/HostDetails/Tabs/__tests__/debsTab.test.js +48 -22
  323. data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +123 -47
  324. data/webpack/components/extensions/HostDetails/Tabs/__tests__/moduleStreamsTab.test.js +14 -7
  325. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packageInstallModal.test.js +10 -5
  326. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +41 -24
  327. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +50 -25
  328. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +50 -25
  329. data/webpack/components/extensions/HostDetails/hostDetailsHelpers.js +3 -0
  330. data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/04_Review.js +16 -2
  331. data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/04_ReviewFooter.js +6 -2
  332. data/webpack/components/extensions/Hosts/BulkActions/BulkErrataWizard/BulkErrataWizard.js +5 -1
  333. data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/04_Review.js +16 -2
  334. data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/04_ReviewFooter.js +6 -2
  335. data/webpack/components/extensions/Hosts/BulkActions/BulkPackagesWizard/BulkPackagesWizard.js +15 -2
  336. data/webpack/components/extensions/Hosts/BulkActions/HostReview.js +1 -1
  337. data/webpack/components/extensions/Hosts/BulkActions/__tests__/bulkChangeHostCVModal.test.js +2 -1
  338. data/webpack/components/extensions/Hosts/FontAwesomeImageModeIcon.js +1 -1
  339. data/webpack/components/extensions/Hosts/ImageModeHostAlert.js +14 -0
  340. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/ActivationKeys.test.js.snap +14 -17
  341. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/Force.test.js.snap +1 -1
  342. data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/IgnoreSubmanErrors.test.js.snap +1 -1
  343. data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +38 -49
  344. data/webpack/containers/Application/overrides.scss +7 -7
  345. data/webpack/ouia_id_check.js +15 -11
  346. data/webpack/redux/actions/RedHatRepositories/helpers.js +0 -2
  347. data/webpack/scenes/ActivationKeys/Details/__tests__/activationKeyDetails.test.js +12 -6
  348. data/webpack/scenes/ActivationKeys/Details/components/DeleteMenu.js +12 -2
  349. data/webpack/scenes/ActivationKeys/Details/components/EditModal.js +3 -3
  350. data/webpack/scenes/AlternateContentSources/Create/ACSCreateWizard.js +3 -1
  351. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCreateFinish.js +3 -1
  352. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCredentials.js +12 -6
  353. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSSmartProxies.js +1 -1
  354. data/webpack/scenes/AlternateContentSources/Create/Steps/AcsUrlPaths.js +22 -7
  355. data/webpack/scenes/AlternateContentSources/Create/Steps/NameACS.js +2 -2
  356. data/webpack/scenes/AlternateContentSources/Create/Steps/SelectSource.js +1 -1
  357. data/webpack/scenes/AlternateContentSources/Create/__tests__/acsCreate.test.js +6 -3
  358. data/webpack/scenes/AlternateContentSources/Details/ACSExpandableDetails.js +25 -15
  359. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditCredentials.js +9 -6
  360. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditDetails.js +2 -2
  361. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditSmartProxies.js +1 -1
  362. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditURLPaths.js +33 -7
  363. data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSEdits.test.js +10 -5
  364. data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSExpandableDetails.test.js +4 -2
  365. data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +10 -8
  366. data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsTable.test.js +4 -2
  367. data/webpack/scenes/BootedContainerImages/BootedContainerImagesPage.js +5 -5
  368. data/webpack/scenes/Content/Details/__tests__/contentDetail.test.js +8 -4
  369. data/webpack/scenes/Content/__tests__/contentTable.test.js +4 -2
  370. data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +1 -1
  371. data/webpack/scenes/ContentViews/Copy/__tests__/contentViewCopyResult.fixtures.json +1 -0
  372. data/webpack/scenes/ContentViews/Copy/__tests__/copyContentView.test.js +2 -1
  373. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +86 -31
  374. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.scss +10 -2
  375. data/webpack/scenes/ContentViews/Create/__tests__/contentViewCreateResult.fixtures.json +1 -0
  376. data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +10 -4
  377. data/webpack/scenes/ContentViews/Delete/ContentViewDeleteWizard.js +3 -1
  378. data/webpack/scenes/ContentViews/Delete/Steps/CVDeleteEnvironmentsSelection.js +6 -6
  379. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignActivationKeysForm.js +7 -2
  380. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignHostsForm.js +7 -2
  381. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReview.js +3 -3
  382. data/webpack/scenes/ContentViews/Delete/Steps/CVEnvironmentSelectionForm.scss +1 -1
  383. data/webpack/scenes/ContentViews/Delete/__tests__/CvData.fixtures.json +2 -1
  384. data/webpack/scenes/ContentViews/Delete/__tests__/affectedHosts.fixtures.json +3 -2
  385. data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +10 -8
  386. data/webpack/scenes/ContentViews/Delete/__tests__/cvDetails.fixtures.json +2 -1
  387. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +16 -5
  388. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +19 -5
  389. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentEnvironments.js +1 -1
  390. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +11 -2
  391. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/compositeCVDetails.fixtures.json +2 -1
  392. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +69 -27
  393. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/publishedContentViewDetails.fixtures.json +2 -1
  394. data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +22 -29
  395. data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +6 -2
  396. data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +20 -7
  397. data/webpack/scenes/ContentViews/Details/Filters/Add/__tests__/cvFilterAdd.test.js +4 -2
  398. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositorySelection.js +5 -2
  399. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +3 -1
  400. data/webpack/scenes/ContentViews/Details/Filters/ArtifactsWithNoErrata.js +1 -1
  401. data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +4 -2
  402. data/webpack/scenes/ContentViews/Details/Filters/CVDebFilterContent.js +13 -1
  403. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +23 -7
  404. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +23 -5
  405. data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +15 -3
  406. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +15 -3
  407. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +13 -1
  408. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +6 -4
  409. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +11 -1
  410. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +4 -2
  411. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/matchContentModal.scss +1 -1
  412. data/webpack/scenes/ContentViews/Details/Filters/Rules/DebPackage/AddEditDebPackageRuleModal.js +2 -2
  413. data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +4 -4
  414. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +18 -12
  415. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +7 -11
  416. data/webpack/scenes/ContentViews/Details/Filters/__tests__/ContentViewPackageGroupFilter.test.js +81 -70
  417. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewErrataByDateDetails.fixtures.json +1 -0
  418. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +4 -2
  419. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +52 -38
  420. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataDateFilterContent.test.js +9 -4
  421. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +18 -12
  422. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErratumFilterDetails.fixtures.json +1 -0
  423. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterDetailModuleAffectedRepos.fixtures.json +1 -0
  424. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterDetailWithAffectedRepos.fixtures.json +1 -0
  425. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvFilterFixutre.fixture.json +2 -1
  426. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilter.test.js +77 -67
  427. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilterDetails.fixtures.json +1 -0
  428. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvPackageFilterDetail.fixtures.json +1 -0
  429. data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +2 -2
  430. data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +4 -2
  431. data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromote.js +1 -1
  432. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +7 -5
  433. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +6 -3
  434. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewRepoAdd.fixture.json +1 -0
  435. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/ActionSummary.js +3 -2
  436. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/BulkDeleteModal.js +3 -1
  437. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ConfirmBulkDelete.js +2 -2
  438. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignActivationKeys.js +3 -1
  439. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReassignHosts.js +3 -1
  440. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReviewEnvironments.js +4 -4
  441. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompare.scss +11 -11
  442. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareHeader.js +15 -5
  443. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionEnvironments.js +1 -1
  444. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +13 -3
  445. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveCVVersionWizard.js +3 -1
  446. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js +17 -13
  447. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +12 -7
  448. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +64 -7
  449. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVVersionRemoveReview.js +52 -21
  450. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +30 -16
  451. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.scss +7 -7
  452. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +5 -3
  453. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +4 -2
  454. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +6 -3
  455. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsEmpty.test.js +2 -1
  456. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +6 -6
  457. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetail.test.js +35 -4
  458. data/webpack/scenes/ContentViews/Details/__tests__/contentViewDetails.fixtures.json +1 -0
  459. data/webpack/scenes/ContentViews/Details/__tests__/contentViewRollingDetail.test.js +197 -0
  460. data/webpack/scenes/ContentViews/Details/__tests__/contentViewRollingDetails.fixtures.json +82 -0
  461. data/webpack/scenes/ContentViews/Publish/CVPublishFinish.js +3 -7
  462. data/webpack/scenes/ContentViews/Publish/CVPublishForm.js +2 -2
  463. data/webpack/scenes/ContentViews/Publish/CVPublishReview.js +6 -5
  464. data/webpack/scenes/ContentViews/Publish/PublishContentViewWizard.js +3 -1
  465. data/webpack/scenes/ContentViews/Publish/__tests__/publishContentView.test.js +15 -7
  466. data/webpack/scenes/ContentViews/Publish/cvPublishForm.scss +4 -4
  467. data/webpack/scenes/ContentViews/Table/ContentViewVersionCell.js +6 -4
  468. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +14 -3
  469. data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +3 -0
  470. data/webpack/scenes/ContentViews/__tests__/basicContentViews.fixtures.js +1 -0
  471. data/webpack/scenes/ContentViews/__tests__/contentViewList.fixtures.json +89 -2
  472. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +85 -14
  473. data/webpack/scenes/ContentViews/__tests__/mockDetails.fixtures.json +2 -1
  474. data/webpack/scenes/ContentViews/components/ContentViewIcon.js +20 -6
  475. data/webpack/scenes/ContentViews/components/ContentViewSelect/ContentViewSelect.js +4 -1
  476. data/webpack/scenes/ContentViews/components/ContentViewSelect/ContentViewSelectOption.js +11 -2
  477. data/webpack/scenes/ContentViews/components/ContentViewsCounter.js +27 -7
  478. data/webpack/scenes/ContentViews/components/EnvironmentLabels.js +2 -2
  479. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +6 -2
  480. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.scss +4 -1
  481. data/webpack/scenes/ContentViews/components/FiltersAppliedIcon.js +4 -2
  482. data/webpack/scenes/ContentViews/components/NeedsPublishIcon.js +7 -6
  483. data/webpack/scenes/ContentViews/components/NeedsPublishIcon.scss +2 -2
  484. data/webpack/scenes/ContentViews/components/contentViewIcon.scss +16 -3
  485. data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +6 -1
  486. data/webpack/scenes/ContentViews/expansions/RelatedCompositeContentViewsModal.js +3 -3
  487. data/webpack/scenes/ContentViews/expansions/__tests__/contentViewComponentsModal.test.js +2 -1
  488. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceForm.js +5 -3
  489. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceTemplate.js +3 -2
  490. data/webpack/scenes/Hosts/ChangeContentSource/components/FormField.js +1 -1
  491. data/webpack/scenes/Hosts/ChangeContentSource/components/HostsModal.js +1 -1
  492. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepositoryContent.js +1 -1
  493. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/__tests__/__snapshots__/EnabledRepositoryContent.test.js.snap +1 -1
  494. data/webpack/scenes/RedHatRepositories/index.scss +1 -1
  495. data/webpack/scenes/SmartProxy/ExpandableCvDetails.js +27 -7
  496. data/webpack/scenes/SmartProxy/ExpandedSmartProxyRepositories.js +51 -2
  497. data/webpack/scenes/SmartProxy/SmartProxyExpandableTable.js +2 -2
  498. data/webpack/scenes/SmartProxy/__tests__/SmartProxyContentTest.js +14 -9
  499. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnConfigurationForm.scss +1 -1
  500. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CustomCdnTypeForm.js +2 -2
  501. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/NetworkSyncForm.js +6 -6
  502. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/CdnTypeForm.test.js +2 -1
  503. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/CustomCdnTypeForm.test.js +2 -1
  504. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/ExportSyncForm.test.js +2 -1
  505. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/NetworkSyncForm.test.js +2 -1
  506. metadata +72 -53
  507. data/app/models/katello/yum_metadata_file.rb +0 -22
  508. data/app/services/katello/pulp3/yum_metadata_file.rb +0 -20
  509. data/db/migrate/20250714190050_add_missing_rpms_evr_index.rb +0 -14
@@ -1,9 +1,19 @@
1
1
  import React, { useState, useCallback } from 'react';
2
2
  import { FormattedMessage } from 'react-intl';
3
3
  import {
4
- Skeleton, Split, SplitItem, ActionList, ActionListItem, Dropdown,
5
- DropdownItem, DropdownToggle, DropdownToggleAction, Alert,
4
+ Skeleton,
5
+ Split,
6
+ SplitItem,
7
+ ActionList,
8
+ ActionListItem,
9
+ Alert,
6
10
  } from '@patternfly/react-core';
11
+ import {
12
+ Dropdown,
13
+ DropdownItem,
14
+ DropdownToggle,
15
+ DropdownToggleAction,
16
+ } from '@patternfly/react-core/deprecated';
7
17
  import { translate as __ } from 'foremanReact/common/I18n';
8
18
  import { TableVariant, Thead, Tbody, Tr, Th, Td } from '@patternfly/react-table';
9
19
  import { ExclamationTriangleIcon } from '@patternfly/react-icons';
@@ -233,13 +243,13 @@ const TracesTab = () => {
233
243
  >
234
244
  <Thead>
235
245
  <Tr ouiaId="row-header">
236
- <Th key="select_checkbox" />
246
+ <Th key="select_checkbox" aria-label="select table header" />
237
247
  <SortableColumnHeaders
238
248
  columnHeaders={columnHeaders}
239
249
  pfSortParams={pfSortParams}
240
250
  columnsToSortParams={COLUMNS_TO_SORT_PARAMS}
241
251
  />
242
- <Th key="action_menu" />
252
+ <Th key="action_menu" aria-label="action menu table header" />
243
253
  </Tr>
244
254
  </Thead>
245
255
  <Tbody>
@@ -257,7 +267,7 @@ const TracesTab = () => {
257
267
  let rowDropdownItems = [
258
268
  { title: 'Restart via remote execution', onClick: () => onRestartApp(id), isDisabled: actionInProgress },
259
269
  {
260
- component: 'a', href: resolveTraceUrl({ hostname, search: tracesSearchQuery(id) }), title: 'Restart via customized remote execution',
270
+ title: <a href={resolveTraceUrl({ hostname, search: tracesSearchQuery(id) })}>{__('Restart via customized remote execution')}</a>,
261
271
  },
262
272
  ];
263
273
  if (resolveDisabled) {
@@ -270,7 +280,7 @@ const TracesTab = () => {
270
280
  {showActions ? (
271
281
  <Td
272
282
  select={{
273
- disable: actionInProgress || resolveDisabled,
283
+ isDisabled: actionInProgress || resolveDisabled,
274
284
  props: {
275
285
  'aria-label': `check-${application}`,
276
286
  },
@@ -77,7 +77,8 @@ test('Can call API for installable deb packages and show on screen on page load'
77
77
  await patientlyWaitFor(() => expect(getAllByText(firstPackages.name)[0]).toBeInTheDocument());
78
78
  // Assert request was made and completed, see helper function
79
79
  assertNockRequest(autocompleteScope);
80
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
80
+ assertNockRequest(scope);
81
+ done(); // Pass jest callback to confirm test is done
81
82
  });
82
83
 
83
84
  test('Can handle no installable deb packages being present', async (done) => {
@@ -109,7 +110,8 @@ test('Can handle no installable deb packages being present', async (done) => {
109
110
  await patientlyWaitFor(() => expect(queryByText('No packages available to install')).toBeInTheDocument());
110
111
  // Assert request was made and completed, see helper function
111
112
  assertNockRequest(autocompleteScope);
112
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
113
+ assertNockRequest(scope);
114
+ done(); // Pass jest callback to confirm test is done
113
115
  });
114
116
 
115
117
 
@@ -146,7 +148,8 @@ test('Can install a deb package via remote execution', async (done) => {
146
148
 
147
149
  expect(triggerPackageInstall).toHaveBeenCalled();
148
150
  assertNockRequest(autocompleteScope);
149
- assertNockRequest(scope, done);
151
+ assertNockRequest(scope);
152
+ done();
150
153
  });
151
154
 
152
155
  test('Can install a deb package via customized remote execution', async (done) => {
@@ -183,7 +186,8 @@ test('Can install a deb package via customized remote execution', async (done) =
183
186
  `/job_invocations/new?feature=${REX_FEATURES.KATELLO_PACKAGE_INSTALL}&search=name%20%5E%20(test-host)&inputs%5Bpackage%5D=duck,cheetah`,
184
187
  );
185
188
  assertNockRequest(autocompleteScope);
186
- assertNockRequest(scope, done);
189
+ assertNockRequest(scope);
190
+ done();
187
191
  });
188
192
 
189
193
  test('Uses packages_install_by_search_query template when in select all mode', async (done) => {
@@ -221,6 +225,7 @@ test('Uses packages_install_by_search_query template when in select all mode', a
221
225
  `/job_invocations/new?feature=${REX_FEATURES.KATELLO_PACKAGE_INSTALL_BY_SEARCH}&search=name%20%5E%20(test-host)&inputs%5BPackage%20search%20query%5D=id%20!%5E%20(32376)`,
222
226
  );
223
227
  assertNockRequest(autocompleteScope);
224
- assertNockRequest(scope, done);
228
+ assertNockRequest(scope);
229
+ done();
225
230
  });
226
231
 
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { renderWithRedux, patientlyWaitFor, fireEvent } from 'react-testing-lib-wrapper';
2
+ import { renderWithRedux, patientlyWaitFor, fireEvent, act } from 'react-testing-lib-wrapper';
3
3
  import * as hooks from 'foremanReact/components/PF4/TableIndexPage/Table/TableHooks';
4
4
  import { nockInstance, assertNockRequest, mockForemanAutocomplete } from '../../../../../test-utils/nockWrapper';
5
5
  import { foremanApi } from '../../../../../services/api';
@@ -75,7 +75,8 @@ test('Can call API for packages and show on screen on page load', async (done) =
75
75
  await patientlyWaitFor(() => expect(getAllByText(firstDeb.name)[0]).toBeInTheDocument());
76
76
  // Assert request was made and completed, see helper function
77
77
  assertNockRequest(autocompleteScope);
78
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
78
+ assertNockRequest(scope);
79
+ done(); // Pass jest callback to confirm test is done
79
80
  });
80
81
 
81
82
  test('Can handle no packages being present', async (done) => {
@@ -101,7 +102,8 @@ test('Can handle no packages being present', async (done) => {
101
102
  await patientlyWaitFor(() => expect(queryByText('This host does not have any packages.')).toBeInTheDocument());
102
103
  // Assert request was made and completed, see helper function
103
104
  assertNockRequest(autocompleteScope);
104
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
105
+ assertNockRequest(scope);
106
+ done(); // Pass jest callback to confirm test is done
105
107
  });
106
108
 
107
109
  test('Can filter by package status', async (done) => {
@@ -132,7 +134,9 @@ test('Can filter by package status', async (done) => {
132
134
 
133
135
  const statusDropdown = queryByText('Status', { ignore: 'th' });
134
136
  expect(statusDropdown).toBeInTheDocument();
135
- fireEvent.click(statusDropdown);
137
+ await act(async () => {
138
+ fireEvent.click(statusDropdown);
139
+ });
136
140
  const upgradable = getByRole('option', { name: 'select Upgradable' });
137
141
  fireEvent.click(upgradable);
138
142
  await patientlyWaitFor(() => {
@@ -143,7 +147,8 @@ test('Can filter by package status', async (done) => {
143
147
 
144
148
  assertNockRequest(autocompleteScope);
145
149
  assertNockRequest(scope);
146
- assertNockRequest(scope2, done); // Pass jest callback to confirm test is done
150
+ assertNockRequest(scope2);
151
+ done(); // Pass jest callback to confirm test is done
147
152
  });
148
153
 
149
154
  test('Can upgrade a package via remote execution', async (done) => {
@@ -182,25 +187,32 @@ test('Can upgrade a package via remote execution', async (done) => {
182
187
 
183
188
  const statusDropdown = getByText('Status', { ignore: 'th' });
184
189
  expect(statusDropdown).toBeInTheDocument();
185
- fireEvent.click(statusDropdown);
190
+ await act(async () => {
191
+ fireEvent.click(statusDropdown);
192
+ });
186
193
  const upgradable = getByRole('option', { name: 'select Upgradable' });
187
194
  fireEvent.click(upgradable);
188
195
  await patientlyWaitFor(() => {
189
196
  expect(getByText('libmagic1')).toBeInTheDocument();
190
197
  expect(getByText('libapt-pkg6.0')).toBeInTheDocument();
191
198
  });
192
-
193
- const kebabDropdown = getAllByLabelText('Actions');
194
- kebabDropdown[0].click();
199
+ const kebabDropdown = getAllByLabelText('Kebab toggle');
200
+ await act(async () => {
201
+ kebabDropdown[0].click();
202
+ });
195
203
 
196
204
  const rexAction = getByText('Upgrade via remote execution');
197
205
  await patientlyWaitFor(() => expect(rexAction).toBeInTheDocument());
198
- fireEvent.click(rexAction);
206
+
207
+ await act(async () => {
208
+ fireEvent.click(rexAction);
209
+ });
199
210
 
200
211
  assertNockRequest(autocompleteScope);
201
212
  assertNockRequest(scope);
202
213
  assertNockRequest(statusScope);
203
- assertNockRequest(upgradeScope, done);
214
+ assertNockRequest(upgradeScope);
215
+ done();
204
216
  });
205
217
 
206
218
  test('Can upgrade a package via customized remote execution', async (done) => {
@@ -227,7 +239,9 @@ test('Can upgrade a package via customized remote execution', async (done) => {
227
239
 
228
240
  const statusDropdown = getByText('Status', { ignore: 'th' });
229
241
  expect(statusDropdown).toBeInTheDocument();
230
- fireEvent.click(statusDropdown);
242
+ await act(async () => {
243
+ fireEvent.click(statusDropdown);
244
+ });
231
245
  const upgradable = getByRole('option', { name: 'select Upgradable' });
232
246
  fireEvent.click(upgradable);
233
247
  await patientlyWaitFor(() => {
@@ -235,8 +249,10 @@ test('Can upgrade a package via customized remote execution', async (done) => {
235
249
  expect(getByText('libmagic1')).toBeInTheDocument();
236
250
  });
237
251
 
238
- const kebabDropdown = getAllByLabelText('Actions');
239
- kebabDropdown[0].click();
252
+ const kebabDropdown = getAllByLabelText('Kebab toggle');
253
+ await act(async () => {
254
+ kebabDropdown[0].click();
255
+ });
240
256
 
241
257
  const rexAction = getByText('Upgrade via customized remote execution');
242
258
  const feature = REX_FEATURES.KATELLO_PACKAGE_UPDATE;
@@ -248,11 +264,14 @@ test('Can upgrade a package via customized remote execution', async (done) => {
248
264
  `/job_invocations/new?feature=${feature}&search=name%20%5E%20(${hostname})&inputs%5Bpackage%5D=${packageName}`,
249
265
  );
250
266
 
251
- fireEvent.click(rexAction);
267
+ await act(async () => {
268
+ fireEvent.click(rexAction);
269
+ });
252
270
 
253
271
  assertNockRequest(autocompleteScope);
254
272
  assertNockRequest(scope);
255
- assertNockRequest(statusScope, done);
273
+ assertNockRequest(statusScope);
274
+ done();
256
275
  });
257
276
 
258
277
  test('Can bulk upgrade via remote execution', async (done) => {
@@ -295,11 +314,14 @@ test('Can bulk upgrade via remote execution', async (done) => {
295
314
 
296
315
  const rexAction = getByLabelText('bulk_upgrade_rex');
297
316
  expect(rexAction).toBeInTheDocument();
298
- fireEvent.click(rexAction);
317
+ await act(async () => {
318
+ fireEvent.click(rexAction);
319
+ });
299
320
 
300
321
  assertNockRequest(autocompleteScope);
301
322
  assertNockRequest(scope);
302
- assertNockRequest(upgradeScope, done);
323
+ assertNockRequest(upgradeScope);
324
+ done();
303
325
  });
304
326
 
305
327
  test('Can bulk upgrade via customized remote execution', async (done) => {
@@ -338,7 +360,8 @@ test('Can bulk upgrade via customized remote execution', async (done) => {
338
360
  expect(rexAction).toHaveAttribute('href', job);
339
361
 
340
362
  assertNockRequest(autocompleteScope);
341
- assertNockRequest(scope, done);
363
+ assertNockRequest(scope);
364
+ done();
342
365
  });
343
366
 
344
367
  test('Upgrade is disabled when there are non-upgradable packages selected', async (done) => {
@@ -368,7 +391,8 @@ test('Upgrade is disabled when there are non-upgradable packages selected', asyn
368
391
  expect(upgradeDropdown).toHaveAttribute('disabled');
369
392
 
370
393
  assertNockRequest(autocompleteScope);
371
- assertNockRequest(scope, done);
394
+ assertNockRequest(scope);
395
+ done();
372
396
  });
373
397
 
374
398
  test('Remove is disabled when in select all mode', async (done) => {
@@ -394,7 +418,8 @@ test('Remove is disabled when in select all mode', async (done) => {
394
418
  expect(removeButton).toHaveAttribute('aria-disabled', 'true');
395
419
 
396
420
  assertNockRequest(autocompleteScope);
397
- assertNockRequest(scope, done);
421
+ assertNockRequest(scope);
422
+ done();
398
423
  });
399
424
 
400
425
  test('Sets initial search query from url params', async (done) => {
@@ -415,6 +440,7 @@ test('Sets initial search query from url params', async (done) => {
415
440
  expect(queryByText(secondDeb.name)).not.toBeInTheDocument();
416
441
 
417
442
  assertNockRequest(autocompleteScope);
418
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
443
+ assertNockRequest(scope);
444
+ done(); // Pass jest callback to confirm test is done
419
445
  });
420
446
 
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { renderWithRedux, patientlyWaitFor, within, fireEvent } from 'react-testing-lib-wrapper';
2
+ import { renderWithRedux, patientlyWaitFor, within, fireEvent, act } from 'react-testing-lib-wrapper';
3
3
  import { nockInstance, assertNockRequest, mockForemanAutocomplete } from '../../../../../test-utils/nockWrapper';
4
4
  import { foremanApi } from '../../../../../services/api';
5
5
  import { HOST_ERRATA_KEY, ERRATA_SEARCH_QUERY } from '../ErrataTab/HostErrataConstants';
@@ -20,6 +20,9 @@ const contentFacetAttributes = {
20
20
  id: 11,
21
21
  uuid: 'e5761ea3-4117-4ecf-83d0-b694f99b389e',
22
22
  content_view_default: false,
23
+ contentView: {
24
+ rolling: false,
25
+ },
23
26
  lifecycle_environment_library: false,
24
27
  errata_counts: {
25
28
  total: 3,
@@ -123,7 +126,8 @@ test('Can call API for errata and show on screen on page load', async (done) =>
123
126
  await patientlyWaitFor(() => expect(getAllByText(firstErrata.severity)[0]).toBeInTheDocument());
124
127
  // Assert request was made and completed, see helper function
125
128
  assertNockRequest(autocompleteScope);
126
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
129
+ assertNockRequest(scope);
130
+ done(); // Pass jest callback to confirm test is done
127
131
  });
128
132
 
129
133
  test('Can handle no errata being present', async (done) => {
@@ -149,7 +153,8 @@ test('Can handle no errata being present', async (done) => {
149
153
  await patientlyWaitFor(() => expect(queryByText('This host has errata that are applicable, but not installable. Adjust your filters and try again.')).toBeInTheDocument());
150
154
  // Assert request was made and completed, see helper function
151
155
  assertNockRequest(autocompleteScope);
152
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
156
+ assertNockRequest(scope);
157
+ done(); // Pass jest callback to confirm test is done
153
158
  });
154
159
 
155
160
  test('Can display expanded errata details', async (done) => {
@@ -192,7 +197,8 @@ test('Can display expanded errata details', async (done) => {
192
197
  expect(queryByText(firstErrata.summary)).not.toBeInTheDocument();
193
198
  // Assert request was made and completed, see helper function
194
199
  assertNockRequest(autocompleteScope);
195
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
200
+ assertNockRequest(scope);
201
+ done(); // Pass jest callback to confirm test is done
196
202
  });
197
203
 
198
204
  test('Can select one errata', async (done) => {
@@ -225,7 +231,8 @@ test('Can select one errata', async (done) => {
225
231
  expect(queryByText('1 selected')).toBeInTheDocument();
226
232
 
227
233
  assertNockRequest(autocompleteScope);
228
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
234
+ assertNockRequest(scope);
235
+ done(); // Pass jest callback to confirm test is done
229
236
  });
230
237
 
231
238
  test('Can select all errata across pages through checkbox', async (done) => {
@@ -265,8 +272,10 @@ test('Can select all errata across pages through checkbox', async (done) => {
265
272
  expect(getByLabelText('Select row 0').checked).toEqual(true);
266
273
 
267
274
  assertNockRequest(autocompleteScope);
268
- assertNockRequest(scope, done);
269
- assertNockRequest(scope2, done); // Pass jest callback to confirm test is done
275
+ assertNockRequest(scope);
276
+ done();
277
+ assertNockRequest(scope2);
278
+ done(); // Pass jest callback to confirm test is done
270
279
  });
271
280
 
272
281
  test('Can deselect all errata across pages through checkbox', async (done) => {
@@ -310,8 +319,10 @@ test('Can deselect all errata across pages through checkbox', async (done) => {
310
319
  expect(getByLabelText('Select row 0').checked).toEqual(false);
311
320
 
312
321
  assertNockRequest(autocompleteScope);
313
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
314
- assertNockRequest(scope2, done);
322
+ assertNockRequest(scope);
323
+ done(); // Pass jest callback to confirm test is done
324
+ assertNockRequest(scope2);
325
+ done();
315
326
  });
316
327
 
317
328
 
@@ -352,8 +363,10 @@ test('Can select & deselect errata across pages', async (done) => {
352
363
  expect(queryByText('4 selected')).toBeInTheDocument();
353
364
 
354
365
  assertNockRequest(autocompleteScope);
355
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
356
- assertNockRequest(scope2, done);
366
+ assertNockRequest(scope);
367
+ done(); // Pass jest callback to confirm test is done
368
+ assertNockRequest(scope2);
369
+ done();
357
370
  });
358
371
 
359
372
  test('Can select & de-select all errata through selectDropDown', async (done) => {
@@ -394,7 +407,8 @@ test('Can select & de-select all errata through selectDropDown', async (done) =>
394
407
  expect(getByLabelText('Select row 0').checked).toEqual(false);
395
408
 
396
409
  assertNockRequest(autocompleteScope);
397
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
410
+ assertNockRequest(scope);
411
+ done(); // Pass jest callback to confirm test is done
398
412
  });
399
413
 
400
414
  test('Can de-select items in select all mode across pages', async (done) => {
@@ -460,9 +474,12 @@ test('Can de-select items in select all mode across pages', async (done) => {
460
474
  expect(getByLabelText('Select row 1').checked).toEqual(false);
461
475
 
462
476
  assertNockRequest(autocompleteScope);
463
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
464
- assertNockRequest(scope2, done);
465
- assertNockRequest(scope3, done);
477
+ assertNockRequest(scope);
478
+ done(); // Pass jest callback to confirm test is done
479
+ assertNockRequest(scope2);
480
+ done();
481
+ assertNockRequest(scope3);
482
+ done();
466
483
  });
467
484
 
468
485
  test('Can select page and select only items on the page', async (done) => {
@@ -496,7 +513,8 @@ test('Can select page and select only items on the page', async (done) => {
496
513
  expect(getByLabelText('Select row 0').checked).toEqual(true);
497
514
 
498
515
  assertNockRequest(autocompleteScope);
499
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
516
+ assertNockRequest(scope);
517
+ done(); // Pass jest callback to confirm test is done
500
518
  });
501
519
 
502
520
  test('Select all is disabled if all rows are selected', async (done) => {
@@ -550,7 +568,8 @@ test('Select all is disabled if all rows are selected', async (done) => {
550
568
  expect(getByText('Select none (0)')).toHaveAttribute('aria-disabled', 'false');
551
569
 
552
570
  assertNockRequest(autocompleteScope);
553
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
571
+ assertNockRequest(scope);
572
+ done(); // Pass jest callback to confirm test is done
554
573
  });
555
574
 
556
575
  test('Toggle Group shows if it\'s not the default content view or library enviroment', async (done) => {
@@ -572,7 +591,8 @@ test('Toggle Group shows if it\'s not the default content view or library enviro
572
591
  await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
573
592
  expect(queryByLabelText('Installable Errata')).toBeInTheDocument();
574
593
  assertNockRequest(autocompleteScope);
575
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
594
+ assertNockRequest(scope);
595
+ done(); // Pass jest callback to confirm test is done
576
596
  });
577
597
 
578
598
  test('Toggle Group shows if it\'s the default content view but non-library environment', async (done) => {
@@ -598,7 +618,8 @@ test('Toggle Group shows if it\'s the default content view but non-library envir
598
618
  await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
599
619
  expect(queryByLabelText('Installable Errata')).toBeInTheDocument();
600
620
  assertNockRequest(autocompleteScope);
601
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
621
+ assertNockRequest(scope);
622
+ done(); // Pass jest callback to confirm test is done
602
623
  });
603
624
 
604
625
  test('Toggle Group shows if it\'s the library environment but non-default content view', async (done) => {
@@ -625,7 +646,8 @@ test('Toggle Group shows if it\'s the library environment but non-default conten
625
646
  await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
626
647
  expect(queryByLabelText('Installable Errata')).toBeInTheDocument();
627
648
  assertNockRequest(autocompleteScope);
628
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
649
+ assertNockRequest(scope);
650
+ done(); // Pass jest callback to confirm test is done
629
651
  });
630
652
 
631
653
  test('Toggle Group does not show if it\'s the default content view and library environment', async (done) => {
@@ -648,6 +670,36 @@ test('Toggle Group does not show if it\'s the default content view and library e
648
670
  getAllByText,
649
671
  } = renderWithRedux(<ErrataTab />, options);
650
672
 
673
+ // Assert that the errata are now showing on the screen, but wait for them to appear.
674
+ await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
675
+ expect(queryByLabelText('Installable Errata')).not.toBeInTheDocument();
676
+ assertNockRequest(autocompleteScope);
677
+ assertNockRequest(scope);
678
+ done(); // Pass jest callback to confirm test is done
679
+ });
680
+
681
+ test('Toggle Group does not show if it\'s a rolling content view and library environment', async (done) => {
682
+ // Setup autocomplete with mockForemanAutoComplete since we aren't adding /katello
683
+ const autocompleteScope = mockForemanAutocomplete(nockInstance, autocompleteUrl);
684
+ const mockErrata = makeMockErrata({});
685
+ const options = renderOptions({
686
+ ...cfWithErrataTotal(mockErrata.total),
687
+ contentView: {
688
+ rolling: true,
689
+ },
690
+ lifecycle_environment_library: true,
691
+ });
692
+ // return errata data results when we look for errata
693
+ const scope = nockInstance
694
+ .get(hostErrata)
695
+ .query(defaultQuery)
696
+ .reply(200, mockErrata);
697
+
698
+ const {
699
+ queryByLabelText,
700
+ getAllByText,
701
+ } = renderWithRedux(<ErrataTab />, options);
702
+
651
703
  // Assert that the errata are now showing on the screen, but wait for them to appear.
652
704
  await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
653
705
  expect(queryByLabelText('Installable Errata')).not.toBeInTheDocument();
@@ -676,7 +728,8 @@ test('Selection is disabled for errata which are applicable but not installable'
676
728
  expect(getByLabelText('Select row 1')).not.toBeDisabled();
677
729
 
678
730
  assertNockRequest(autocompleteScope);
679
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
731
+ assertNockRequest(scope);
732
+ done(); // Pass jest callback to confirm test is done
680
733
  });
681
734
 
682
735
  test('Can select only installable errata across pages through checkbox', async (done) => {
@@ -719,8 +772,10 @@ test('Can select only installable errata across pages through checkbox', async (
719
772
  expect(getByLabelText('Select row 0').checked).toEqual(true);
720
773
 
721
774
  assertNockRequest(autocompleteScope);
722
- assertNockRequest(scope, done);
723
- assertNockRequest(scope2, done); // Pass jest callback to confirm test is done
775
+ assertNockRequest(scope);
776
+ done();
777
+ assertNockRequest(scope2);
778
+ done(); // Pass jest callback to confirm test is done
724
779
  });
725
780
 
726
781
  test('Can toggle with the Toggle Group ', async (done) => {
@@ -746,7 +801,8 @@ test('Can toggle with the Toggle Group ', async (done) => {
746
801
  expect(getByText('Applicable').parentElement).toHaveAttribute('aria-pressed', 'false');
747
802
  expect(getAllByText('Installable')[0].parentElement).toHaveAttribute('aria-pressed', 'true');
748
803
  assertNockRequest(autocompleteScope);
749
- assertNockRequest(scope, done); // Pass jest callback to confirm test is done
804
+ assertNockRequest(scope);
805
+ done(); // Pass jest callback to confirm test is done
750
806
  });
751
807
 
752
808
  test('Can filter by errata type', async (done) => {
@@ -788,7 +844,8 @@ test('Can filter by errata type', async (done) => {
788
844
 
789
845
  assertNockRequest(autocompleteScope);
790
846
  assertNockRequest(scope);
791
- assertNockRequest(scope2, done); // Pass jest callback to confirm test is done
847
+ assertNockRequest(scope2);
848
+ done(); // Pass jest callback to confirm test is done
792
849
  });
793
850
 
794
851
  test('Can filter by severity', async (done) => {
@@ -815,7 +872,7 @@ test('Can filter by severity', async (done) => {
815
872
  await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
816
873
  // the Bugfix text in the table is just a text node, while the dropdown is a button
817
874
  expect(getByText('Moderate', { ignore: ['button', 'title'] })).toBeInTheDocument();
818
- expect(getByText('Important', { ignore: ['.pf-c-select__toggle-text', 'title'] })).toBeInTheDocument();
875
+ expect(getByText('Important', { ignore: ['.pf-v5-c-select__toggle-text', 'title'] })).toBeInTheDocument();
819
876
  expect(getByText('Critical', { ignore: ['button', 'title'] })).toBeInTheDocument();
820
877
  const severityContainer = queryByLabelText('select Severity container', { ignore: 'th' });
821
878
  const severityDropdown = within(severityContainer).queryByText('Severity');
@@ -824,17 +881,18 @@ test('Can filter by severity', async (done) => {
824
881
  const important = getByRole('option', { name: 'select Important' });
825
882
  fireEvent.click(important);
826
883
  await patientlyWaitFor(() => {
827
- expect(queryByText('Moderate', { ignore: ['.pf-c-select__toggle-text'] })).not.toBeInTheDocument();
828
- expect(queryByText('Critical', { ignore: ['.pf-c-select__toggle-text'] })).not.toBeInTheDocument();
884
+ expect(queryByText('Moderate', { ignore: ['.pf-v5-c-select__toggle-text'] })).not.toBeInTheDocument();
885
+ expect(queryByText('Critical', { ignore: ['.pf-v5-c-select__toggle-text'] })).not.toBeInTheDocument();
829
886
  });
830
887
  await patientlyWaitFor(() => {
831
- expect(getByText('Important', { ignore: ['.pf-c-select__toggle-text', 'title'] })).toBeInTheDocument();
888
+ expect(getByText('Important', { ignore: ['.pf-v5-c-select__toggle-text', 'title'] })).toBeInTheDocument();
832
889
  });
833
890
 
834
891
 
835
892
  assertNockRequest(autocompleteScope);
836
893
  assertNockRequest(scope);
837
- assertNockRequest(scope2, done); // Pass jest callback to confirm test is done
894
+ assertNockRequest(scope2);
895
+ done(); // Pass jest callback to confirm test is done
838
896
  });
839
897
 
840
898
  test('Can bulk apply via remote execution', async (done) => {
@@ -871,11 +929,14 @@ test('Can bulk apply via remote execution', async (done) => {
871
929
  actionMenu.click();
872
930
  const viaRexAction = queryByText('Apply via remote execution');
873
931
  expect(viaRexAction).toBeInTheDocument();
874
- viaRexAction.click();
932
+ await act(async () => {
933
+ viaRexAction.click();
934
+ });
875
935
 
876
936
  assertNockRequest(autocompleteScope);
877
937
  assertNockRequest(resolveErrataScope);
878
- assertNockRequest(scope, done);
938
+ assertNockRequest(scope);
939
+ done();
879
940
  });
880
941
 
881
942
  test('Can select all, exclude and bulk apply via remote execution', async (done) => {
@@ -911,11 +972,14 @@ test('Can select all, exclude and bulk apply via remote execution', async (done)
911
972
  actionMenu.click();
912
973
  const viaRexAction = queryByText('Apply via remote execution');
913
974
  expect(viaRexAction).toBeInTheDocument();
914
- viaRexAction.click();
975
+ await act(async () => {
976
+ viaRexAction.click();
977
+ });
915
978
 
916
979
  assertNockRequest(autocompleteScope);
917
980
  assertNockRequest(resolveErrataScope);
918
- assertNockRequest(scope, done);
981
+ assertNockRequest(scope);
982
+ done();
919
983
  });
920
984
 
921
985
  test('Can apply errata in bulk via customized remote execution', async (done) => {
@@ -947,9 +1011,12 @@ test('Can apply errata in bulk via customized remote execution', async (done) =>
947
1011
  `/job_invocations/new?feature=${feature}&search=name%20%5E%20(${hostName})&inputs%5BErrata%20search%20query%5D=errata_id%20%5E%20(${errata})`,
948
1012
  );
949
1013
 
950
- viaRexAction.click();
1014
+ await act(async () => {
1015
+ viaRexAction.click();
1016
+ });
951
1017
  assertNockRequest(autocompleteScope);
952
- assertNockRequest(scope, done);
1018
+ assertNockRequest(scope);
1019
+ done();
953
1020
  });
954
1021
 
955
1022
  test('Can apply a single erratum to the host via remote execution', async (done) => {
@@ -973,20 +1040,25 @@ test('Can apply a single erratum to the host via remote execution', async (done)
973
1040
  renderOptions(cfWithErrataTotal(mockErrata.total)),
974
1041
  );
975
1042
  await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
976
- const erratumActionMenu = within(getByLabelText('Select row 0').closest('tr')).getByLabelText('Actions');
977
- expect(erratumActionMenu).toHaveAttribute('aria-label', 'Actions');
978
- erratumActionMenu.click();
1043
+ const erratumActionMenu = within(getByLabelText('Select row 0').closest('tr')).getByLabelText('Kebab toggle');
1044
+ expect(erratumActionMenu).toHaveAttribute('aria-label', 'Kebab toggle');
1045
+ await act(async () => {
1046
+ erratumActionMenu.click();
1047
+ });
979
1048
 
980
1049
  let viaRexAction;
981
1050
  await patientlyWaitFor(() => {
982
1051
  viaRexAction = getByText('Apply via remote execution');
983
1052
  expect(viaRexAction).toBeInTheDocument();
984
1053
  });
985
- viaRexAction.click();
1054
+ await act(async () => {
1055
+ viaRexAction.click();
1056
+ });
986
1057
 
987
1058
  assertNockRequest(autocompleteScope);
988
1059
  assertNockRequest(resolveErrataScope);
989
- assertNockRequest(scope, done);
1060
+ assertNockRequest(scope);
1061
+ done();
990
1062
  });
991
1063
 
992
1064
  test('Can apply a single erratum to the host via customized remote execution', async (done) => {
@@ -1005,20 +1077,24 @@ test('Can apply a single erratum to the host via customized remote execution', a
1005
1077
  renderOptions(cfWithErrataTotal(mockErrata.total)),
1006
1078
  );
1007
1079
  await patientlyWaitFor(() => expect(getAllByText('Important')[0]).toBeInTheDocument());
1008
- const erratumActionMenu = within(getByLabelText('Select row 0').closest('tr')).getByLabelText('Actions');
1009
- expect(erratumActionMenu).toHaveAttribute('aria-label', 'Actions');
1010
- erratumActionMenu.click();
1011
-
1080
+ const erratumActionMenu = within(getByLabelText('Select row 0').closest('tr')).getByLabelText('Kebab toggle');
1081
+ expect(erratumActionMenu).toHaveAttribute('aria-label', 'Kebab toggle');
1082
+ await act(async () => {
1083
+ erratumActionMenu.click();
1084
+ });
1012
1085
  let viaRexAction;
1013
1086
  await patientlyWaitFor(() => {
1014
1087
  viaRexAction = getByText('Apply via customized remote execution');
1015
1088
  expect(viaRexAction).toBeInTheDocument();
1016
1089
  });
1017
- viaRexAction.click();
1090
+ await act(async () => {
1091
+ viaRexAction.click();
1092
+ });
1018
1093
  expect(viaRexAction).toHaveAttribute(
1019
1094
  'href',
1020
1095
  `/job_invocations/new?feature=${feature}&search=name%20%5E%20(${hostName})&inputs%5BErrata%20search%20query%5D=errata_id%20=%20${errataId}`,
1021
1096
  );
1022
1097
  assertNockRequest(autocompleteScope);
1023
- assertNockRequest(scope, done);
1098
+ assertNockRequest(scope);
1099
+ done();
1024
1100
  });