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
@@ -75,7 +75,8 @@ test('Can view container image filter rules', async (done) => {
75
75
 
76
76
 
77
77
  assertNockRequest(autocompleteScope);
78
- assertNockRequest(cvFiltersScope, done);
78
+ assertNockRequest(cvFiltersScope);
79
+ done();
79
80
  });
80
81
 
81
82
  // Remove
@@ -107,13 +108,13 @@ test('Can remove filter rules', async (done) => {
107
108
 
108
109
  await patientlyWaitFor(() => {
109
110
  expect(queryByText(firstResultName)).toBeInTheDocument();
110
- expect(getAllByLabelText('Actions')[0]).toHaveAttribute('aria-expanded', 'false');
111
+ expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'false');
111
112
  });
112
113
 
113
- fireEvent.click(getAllByLabelText('Actions')[0]);
114
+ fireEvent.click(getAllByLabelText('Kebab toggle')[0]);
114
115
 
115
116
  await patientlyWaitFor(() => {
116
- expect(getAllByLabelText('Actions')[0]).toHaveAttribute('aria-expanded', 'true');
117
+ expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'true');
117
118
  expect(queryByText('Remove')).toBeInTheDocument();
118
119
  fireEvent.click(queryByText('Remove'));
119
120
  });
@@ -126,7 +127,8 @@ test('Can remove filter rules', async (done) => {
126
127
  assertNockRequest(autocompleteScope);
127
128
  assertNockRequest(cvFiltersScope);
128
129
  assertNockRequest(cvFilterDeleteScope);
129
- assertNockRequest(cvFiltersCallbackScope, done);
130
+ assertNockRequest(cvFiltersCallbackScope);
131
+ done();
130
132
  });
131
133
 
132
134
  // Add
@@ -187,7 +189,8 @@ test('Can add filter rules', async (done) => {
187
189
  assertNockRequest(cvFiltersScope);
188
190
  assertNockRequest(cvFilterAddScope);
189
191
  assertNockRequest(autocompleteNameScope);
190
- assertNockRequest(cvFiltersCallbackScope, done);
192
+ assertNockRequest(cvFiltersCallbackScope);
193
+ done();
191
194
  act(done);
192
195
  });
193
196
 
@@ -239,13 +242,13 @@ test('Can edit filter rules', async (done) => {
239
242
 
240
243
  await patientlyWaitFor(() => {
241
244
  expect(queryByText(firstResultName)).toBeInTheDocument();
242
- expect(getAllByLabelText('Actions')[0]).toHaveAttribute('aria-expanded', 'false');
245
+ expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'false');
243
246
  });
244
247
 
245
- fireEvent.click(getAllByLabelText('Actions')[0]);
248
+ fireEvent.click(getAllByLabelText('Kebab toggle')[0]);
246
249
 
247
250
  await patientlyWaitFor(() => {
248
- expect(getAllByLabelText('Actions')[0]).toHaveAttribute('aria-expanded', 'true');
251
+ expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'true');
249
252
  expect(queryByText('Edit')).toBeInTheDocument();
250
253
  fireEvent.click(queryByText('Edit'));
251
254
  });
@@ -268,7 +271,8 @@ test('Can edit filter rules', async (done) => {
268
271
  assertNockRequest(cvFiltersScope);
269
272
  assertNockRequest(cvFilterAddScope);
270
273
  assertNockRequest(autocompleteNameScope);
271
- assertNockRequest(cvFiltersCallbackScope, done);
274
+ assertNockRequest(cvFiltersCallbackScope);
275
+ done();
272
276
  act(done);
273
277
  });
274
278
 
@@ -302,7 +306,8 @@ test('Shows call-to-action when there are no filter rules', async (done) => {
302
306
 
303
307
  assertNockRequest(autocompleteScope);
304
308
  assertNockRequest(autocompleteNameScope);
305
- assertNockRequest(cvFiltersScope, done);
309
+ assertNockRequest(cvFiltersScope);
310
+ done();
306
311
  act(done);
307
312
  });
308
313
 
@@ -325,6 +330,7 @@ test('Hides bulk_remove dropdownItem when there are no filter rules', async (don
325
330
  });
326
331
 
327
332
  assertNockRequest(autocompleteScope);
328
- assertNockRequest(cvFiltersScope, done);
333
+ assertNockRequest(cvFiltersScope);
334
+ done();
329
335
  act(done);
330
336
  });
@@ -270,11 +270,9 @@ test('Remove rpm filter rule in a self-closing modal', async (done) => {
270
270
  expect(queryByText(cvFilterName)).toBeNull();
271
271
  await patientlyWaitFor(() => {
272
272
  expect(getByText(cvFilterName)).toBeInTheDocument();
273
- expect(getAllByLabelText('Actions')[1]).toBeInTheDocument();
273
+ expect(getAllByLabelText('Kebab toggle')[0]).toBeInTheDocument();
274
274
  });
275
-
276
- getAllByLabelText('Actions')[1].click();
277
-
275
+ getAllByLabelText('Kebab toggle')[0].click();
278
276
  await patientlyWaitFor(() => {
279
277
  expect(getByText('Remove')).toBeInTheDocument();
280
278
  });
@@ -282,7 +280,7 @@ test('Remove rpm filter rule in a self-closing modal', async (done) => {
282
280
  getByText('Remove').click();
283
281
  await patientlyWaitFor(() => {
284
282
  expect(getByText(cvFilterName)).toBeInTheDocument();
285
- expect(getAllByLabelText('Actions')[1]).toBeInTheDocument();
283
+ expect(getAllByLabelText('Kebab toggle')[1]).toBeInTheDocument();
286
284
  });
287
285
 
288
286
  assertNockRequest(autocompleteScope);
@@ -338,16 +336,14 @@ test('Edit rpm filter rule in a self-closing modal', async (done) => {
338
336
  expect(queryByText(cvFilterName)).toBeNull();
339
337
  await patientlyWaitFor(() => {
340
338
  expect(getByText(cvFilterName)).toBeInTheDocument();
341
- expect(getAllByLabelText('Actions')[1]).toBeInTheDocument();
339
+ expect(getAllByLabelText('Kebab toggle')[0]).toBeInTheDocument();
342
340
  });
343
-
344
- getAllByLabelText('Actions')[1].click();
345
-
341
+ fireEvent.click(getAllByLabelText('Kebab toggle')[0]);
346
342
  await patientlyWaitFor(() => {
347
343
  expect(getByText('Edit')).toBeInTheDocument();
348
344
  });
349
345
 
350
- getByText('Edit').click();
346
+ fireEvent.click(getByText('Edit'));
351
347
 
352
348
  await patientlyWaitFor(() => {
353
349
  expect(getByText('Edit RPM rule')).toBeInTheDocument();
@@ -409,6 +405,6 @@ test('Shows call-to-action when there are no RPM filters', async (done) => {
409
405
  assertNockRequest(autocompleteScope);
410
406
  assertNockRequest(cvFiltersScope);
411
407
  assertNockRequest(cvFilterDetailScope);
412
- assertNockRequest(cvPackageFilterRulesScope);
408
+ assertNockRequest(cvPackageFilterRulesScope, done);
413
409
  act(done);
414
410
  });
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
- import { renderWithRedux, patientlyWaitFor, fireEvent } from 'react-testing-lib-wrapper';
2
+ import { renderWithRedux, patientlyWaitFor, fireEvent, act, waitFor } from 'react-testing-lib-wrapper';
3
3
  import { Route } from 'react-router-dom';
4
4
 
5
5
  import ContentViewFilterDetails from '../ContentViewFilterDetails';
6
6
  import { ADDED, cvFilterDetailsKey, NOT_ADDED } from '../../../ContentViewsConstants';
7
- import {
7
+ import nock, {
8
8
  nockInstance,
9
9
  assertNockRequest,
10
10
  mockAutocomplete,
@@ -46,6 +46,11 @@ const renderOptions = {
46
46
 
47
47
  const withCVRoute = component => <Route path="/content_views/:id([0-9]+)#/filters/:filterId([0-9]+)">{component}</Route>;
48
48
 
49
+ afterEach(() => {
50
+ nock.cleanAll(); // Removes all interceptors
51
+ nock.restore(); // Restores HTTP to normal behavior
52
+ });
53
+
49
54
  test('Can enable and disable add filter button', async (done) => {
50
55
  const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl, autocompleteQuery);
51
56
  const { name: cvFilterName } = cvFilterDetails;
@@ -85,6 +90,7 @@ test('Can enable and disable add filter button', async (done) => {
85
90
  assertNockRequest(cvFilterScope);
86
91
  assertNockRequest(cvFiltersScope);
87
92
  assertNockRequest(packageGroupsScope, done);
93
+ act(done);
88
94
  });
89
95
 
90
96
  test('Can remove a filter rule', async (done) => {
@@ -127,10 +133,10 @@ test('Can remove a filter rule', async (done) => {
127
133
 
128
134
  await patientlyWaitFor(() => {
129
135
  expect(getByText(name)).toBeInTheDocument();
130
- expect(getAllByLabelText('Actions')[2]).toHaveAttribute('aria-expanded', 'false');
136
+ expect(getAllByLabelText('Kebab toggle')[2]).toHaveAttribute('aria-expanded', 'false');
131
137
  });
132
- fireEvent.click(getAllByLabelText('Actions')[2]);
133
- expect(getAllByLabelText('Actions')[2]).toHaveAttribute('aria-expanded', 'true');
138
+ fireEvent.click(getAllByLabelText('Kebab toggle')[2]);
139
+ expect(getAllByLabelText('Kebab toggle')[2]).toHaveAttribute('aria-expanded', 'true');
134
140
  await patientlyWaitFor(() => expect(getByText('Remove')).toBeInTheDocument());
135
141
  fireEvent.click(getByText('Remove'));
136
142
 
@@ -142,6 +148,7 @@ test('Can remove a filter rule', async (done) => {
142
148
  assertNockRequest(cvRequestCallbackScope);
143
149
 
144
150
  assertNockRequest(packageGroupsScope, done);
151
+ act(done);
145
152
  });
146
153
 
147
154
  test('Can add a filter rule', async (done) => {
@@ -186,10 +193,10 @@ test('Can add a filter rule', async (done) => {
186
193
 
187
194
  await patientlyWaitFor(() => {
188
195
  expect(getByText(name)).toBeInTheDocument();
189
- expect(getAllByLabelText('Actions')[3]).toHaveAttribute('aria-expanded', 'false');
196
+ expect(getAllByLabelText('Kebab toggle')[1]).toHaveAttribute('aria-expanded', 'false');
190
197
  });
191
- fireEvent.click(getAllByLabelText('Actions')[3]);
192
- expect(getAllByLabelText('Actions')[3]).toHaveAttribute('aria-expanded', 'true');
198
+ fireEvent.click(getAllByLabelText('Kebab toggle')[1]);
199
+ expect(getAllByLabelText('Kebab toggle')[1]).toHaveAttribute('aria-expanded', 'true');
193
200
  await patientlyWaitFor(() => expect(getByText('Add')).toBeInTheDocument());
194
201
  fireEvent.click(getByText('Add'));
195
202
 
@@ -201,6 +208,7 @@ test('Can add a filter rule', async (done) => {
201
208
  assertNockRequest(cvRequestCallbackScope);
202
209
 
203
210
  assertNockRequest(packageGroupsScope, done);
211
+ act(done);
204
212
  });
205
213
 
206
214
  test('Can bulk remove filter rules', async (done) => {
@@ -261,7 +269,7 @@ test('Can bulk remove filter rules', async (done) => {
261
269
  assertNockRequest(cvFiltersScope);
262
270
  assertNockRequest(cvFiltersRuleBulkDeleteScope);
263
271
  assertNockRequest(cvRequestCallbackScope);
264
-
272
+ await waitFor(() => expect(packageGroupsScope.isDone()).toBe(true));
265
273
  assertNockRequest(packageGroupsScope, done);
266
274
  });
267
275
 
@@ -320,6 +328,64 @@ test('Can bulk add filter rules', async (done) => {
320
328
  assertNockRequest(cvFiltersScope);
321
329
  assertNockRequest(cvFiltersRuleBulkAddScope);
322
330
  assertNockRequest(cvRequestCallbackScope);
331
+ await waitFor(() => expect(packageGroupsScope.isDone()).toBe(true));
332
+ assertNockRequest(packageGroupsScope, done);
333
+ });
334
+
335
+ test('Can filter by added/not added rules', async (done) => {
336
+ const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl, autocompleteQuery);
337
+ const { rules } = cvFilterDetails;
338
+ const { name } = rules[0];
339
+
340
+ const cvFilterScope = nockInstance
341
+ .get(cvFilterDetailsPath)
342
+ .query(true)
343
+ .reply(200, cvFilterDetails);
344
+
345
+ const cvFiltersScope = nockInstance
346
+ .get(cvFiltersPath)
347
+ .query(true)
348
+ .reply(200, cvFilterFixtures);
349
+
350
+ const packageGroupsScope = nockInstance
351
+ .get(packageGroupsPath)
352
+ .query(true)
353
+ .times(3) // For first call (All), Added, and Not Added
354
+ .reply(200, allPackageGroups);
355
+
356
+ const {
357
+ getByText, queryByText, getByTestId, getByLabelText,
358
+ } = renderWithRedux(withCVRoute(<ContentViewFilterDetails
359
+ cvId={1}
360
+ details={details}
361
+ />), renderOptions);
362
+
363
+ // Nothing will show at first, page is loading
364
+ expect(queryByText(name)).toBeNull();
365
+
366
+ await patientlyWaitFor(() => {
367
+ expect(getByText(name)).toBeInTheDocument();
368
+ expect(getByTestId('allAddedNotAdded')).toBeInTheDocument();
369
+ });
370
+ fireEvent.click(getByTestId('allAddedNotAdded')?.childNodes[0]?.childNodes[0]);
371
+ await patientlyWaitFor(() => {
372
+ expect(getByLabelText(ADDED)).toBeInTheDocument();
373
+ });
374
+ fireEvent.click(getByLabelText(ADDED));
375
+ await patientlyWaitFor(() => {
376
+ expect(getByText(name)).toBeInTheDocument();
377
+ expect(getByTestId('allAddedNotAdded')).toBeInTheDocument();
378
+ });
379
+ fireEvent.click(getByTestId('allAddedNotAdded')?.childNodes[0]?.childNodes[0]);
380
+ await patientlyWaitFor(() => {
381
+ expect(getByLabelText(NOT_ADDED)).toBeInTheDocument();
382
+ });
383
+ fireEvent.click(getByLabelText(NOT_ADDED));
384
+
385
+ assertNockRequest(autocompleteScope);
386
+ assertNockRequest(cvFilterScope);
387
+ assertNockRequest(cvFiltersScope);
388
+ await waitFor(() => expect(packageGroupsScope.isDone()).toBe(true));
323
389
  assertNockRequest(packageGroupsScope, done);
324
390
  });
325
391
 
@@ -409,7 +475,9 @@ test('Can show affected repository tab on dropdown selection and add repos', asy
409
475
  fireEvent.click(getAllByLabelText('Select all rows')[1]);
410
476
  expect(getByLabelText('add_repositories')).toHaveAttribute('aria-disabled', 'false');
411
477
  fireEvent.click(getByLabelText('add_repositories'));
412
-
478
+ await patientlyWaitFor(() => {
479
+ expect(getByLabelText('add_repositories')).toHaveAttribute('aria-disabled', 'true');
480
+ });
413
481
  assertNockRequest(cvFilterScope);
414
482
  assertNockRequest(cvFiltersScope);
415
483
  assertNockRequest(cvAllReposScope);
@@ -419,6 +487,7 @@ test('Can show affected repository tab on dropdown selection and add repos', asy
419
487
  assertNockRequest(autocompleteScope);
420
488
  assertNockRequest(autocompleteScopeRepo);
421
489
  assertNockRequest(packageGroupsScope, done);
490
+ act(done);
422
491
  });
423
492
 
424
493
  test('Can show affected repository tab and remove affected repos', async (done) => {
@@ -510,64 +579,6 @@ test('Can show affected repository tab and remove affected repos', async (done)
510
579
  assertNockRequest(bulkRemoveReposScope);
511
580
  assertNockRequest(cvFilterScope);
512
581
  assertNockRequest(cvAllReposScope);
513
- assertNockRequest(packageGroupsScope, done);
514
- });
515
-
516
- test('Can filter by added/not added rules', async (done) => {
517
- const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl, autocompleteQuery);
518
- const { rules } = cvFilterDetails;
519
- const { name } = rules[0];
520
-
521
- const cvFilterScope = nockInstance
522
- .get(cvFilterDetailsPath)
523
- .query(true)
524
- .reply(200, cvFilterDetails);
525
-
526
- const cvFiltersScope = nockInstance
527
- .get(cvFiltersPath)
528
- .query(true)
529
- .reply(200, cvFilterFixtures);
530
-
531
- const packageGroupsScope = nockInstance
532
- .get(packageGroupsPath)
533
- .query(true)
534
- .times(3) // For first call (All), Added, and Not Added
535
- .reply(200, allPackageGroups);
536
-
537
- const {
538
- getByText, queryByText, getByTestId, getByLabelText,
539
- } = renderWithRedux(withCVRoute(<ContentViewFilterDetails
540
- cvId={1}
541
- details={details}
542
- />), renderOptions);
543
-
544
- // Nothing will show at first, page is loading
545
- expect(queryByText(name)).toBeNull();
546
-
547
- await patientlyWaitFor(() => {
548
- expect(getByText(name)).toBeInTheDocument();
549
- expect(getByTestId('allAddedNotAdded')).toBeInTheDocument();
550
- fireEvent.click(getByTestId('allAddedNotAdded')?.childNodes[0]?.childNodes[0]);
551
- });
552
-
553
- await patientlyWaitFor(() => {
554
- expect(getByLabelText(ADDED)).toBeInTheDocument();
555
- getByLabelText(ADDED).click();
556
- });
557
-
558
- await patientlyWaitFor(() => {
559
- expect(getByText(name)).toBeInTheDocument();
560
- expect(getByTestId('allAddedNotAdded')).toBeInTheDocument();
561
- fireEvent.click(getByTestId('allAddedNotAdded')?.childNodes[0]?.childNodes[0]);
562
- });
563
-
564
- await patientlyWaitFor(() => {
565
- expect(getByLabelText(NOT_ADDED)).toBeInTheDocument();
566
- getByLabelText(NOT_ADDED).click();
567
- });
568
-
569
- assertNockRequest(autocompleteScope);
570
- assertNockRequest(cvFilterScope);
571
- assertNockRequest(cvFiltersScope);
572
- assertNockRequest(packageGroupsScope, done);
582
+ assertNockRequest(packageGroupsScope);
583
+ done();
573
584
  });
@@ -7,6 +7,7 @@
7
7
  "updated_at": "2021-10-05 15:48:00 -0400",
8
8
  "content_view": {
9
9
  "composite": false,
10
+ "rolling": false,
10
11
  "component_ids": [],
11
12
  "default": false,
12
13
  "version_count": 4,
@@ -65,7 +65,8 @@ test('Can show filter details and package groups on page load', async (done) =>
65
65
  assertNockRequest(autocompleteScope);
66
66
  assertNockRequest(cvFilterScope);
67
67
  assertNockRequest(cvFiltersScope);
68
- assertNockRequest(packageGroupsScope, done);
68
+ assertNockRequest(packageGroupsScope);
69
+ done();
69
70
  act(done);
70
71
  });
71
72
 
@@ -145,6 +146,7 @@ test('Can search for package groups in package group filter', async (done) => {
145
146
  assertNockRequest(cvFiltersScope);
146
147
  assertNockRequest(packageGroupsScope);
147
148
  assertNockRequest(withSearchScope);
148
- assertNockRequest(packageGroupSearchScope, done);
149
+ assertNockRequest(packageGroupSearchScope);
150
+ done();
149
151
  act(done);
150
152
  });
@@ -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 { Route } from 'react-router-dom';
4
4
 
5
5
  import api from '../../../../../services/api';
@@ -33,6 +33,38 @@ beforeEach(() => {
33
33
  [lastFilter] = results.slice(-1);
34
34
  });
35
35
 
36
+ test('Shows call-to-action button when there are no filters', async (done) => {
37
+ const repoTypesResponse = [{ name: 'deb' }, { name: 'docker' }, { name: 'file' }, { name: 'ostree' }, { name: 'yum' }];
38
+ const repoTypeScope = nockInstance
39
+ .get(api.getApiUrl('/repositories/repository_types'))
40
+ .query(true)
41
+ .reply(200, repoTypesResponse);
42
+
43
+ const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
44
+
45
+ const scope = nockInstance
46
+ .get(cvFilters)
47
+ .query(true)
48
+ .reply(200, emptyContentViewFiltersData);
49
+ const { queryByLabelText } =
50
+ renderWithRedux(withCVRoute(<ContentViewFilters cvId={1} details={details} />), renderOptions);
51
+
52
+ expect(queryByLabelText('create_filter_empty_state')).toBeNull();
53
+ await patientlyWaitFor(() => {
54
+ expect(queryByLabelText('create_filter_empty_state')).toBeInTheDocument();
55
+ });
56
+ await act(async () => {
57
+ fireEvent.click(queryByLabelText('create_filter_empty_state'));
58
+ });
59
+ await patientlyWaitFor(() => {
60
+ expect(queryByLabelText('create_filter')).toBeInTheDocument();
61
+ });
62
+ assertNockRequest(autocompleteScope);
63
+ assertNockRequest(repoTypeScope);
64
+ assertNockRequest(scope, done);
65
+ act(done);
66
+ });
67
+
36
68
  test('Can call API and show filters on page load', async (done) => {
37
69
  const { name, description } = firstFilter;
38
70
  const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
@@ -55,6 +87,7 @@ test('Can call API and show filters on page load', async (done) => {
55
87
 
56
88
  assertNockRequest(autocompleteScope);
57
89
  assertNockRequest(scope, done);
90
+ act(done);
58
91
  });
59
92
 
60
93
  test('Can search for filter', async (done) => {
@@ -116,6 +149,7 @@ test('Can search for filter', async (done) => {
116
149
  assertNockRequest(autocompleteScope);
117
150
  assertNockRequest(initialScope);
118
151
  assertNockRequest(withSearchScope, done);
152
+ act(done);
119
153
  });
120
154
 
121
155
  test('Can remove a filter', async (done) => {
@@ -143,17 +177,23 @@ test('Can remove a filter', async (done) => {
143
177
  );
144
178
 
145
179
  await patientlyWaitFor(() => {
146
- expect(getAllByLabelText('Actions')[0]).toHaveAttribute('aria-expanded', 'false');
180
+ expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'false');
147
181
  });
148
- fireEvent.click(getAllByLabelText('Actions')[0]);
149
- expect(getAllByLabelText('Actions')[0]).toHaveAttribute('aria-expanded', 'true');
182
+
183
+ await act(async () => {
184
+ fireEvent.click(getAllByLabelText('Kebab toggle')[0]);
185
+ });
186
+ expect(getAllByLabelText('Kebab toggle')[0]).toHaveAttribute('aria-expanded', 'true');
150
187
  await patientlyWaitFor(() => expect(getByText('Remove')).toBeInTheDocument());
151
- fireEvent.click(getByText('Remove'));
188
+ await act(async () => {
189
+ fireEvent.click(getByText('Remove'));
190
+ });
152
191
 
153
192
  assertNockRequest(autocompleteScope);
154
193
  assertNockRequest(getContentViewScope);
155
194
  assertNockRequest(removeFilterScope);
156
195
  assertNockRequest(callbackGetContentViewScope, done);
196
+ act(done);
157
197
  });
158
198
 
159
199
  test('Can remove multiple filters', async (done) => {
@@ -184,43 +224,17 @@ test('Can remove multiple filters', async (done) => {
184
224
  fireEvent.click(getByLabelText('Select all rows'));
185
225
  expect(getAllByLabelText('bulk_actions')[0]).toHaveAttribute('aria-expanded', 'false');
186
226
  });
187
- fireEvent.click(getAllByLabelText('bulk_actions')[0]);
227
+ await act(async () => {
228
+ fireEvent.click(getAllByLabelText('bulk_actions')[0]);
229
+ });
188
230
  expect(getAllByLabelText('bulk_actions')[0]).toHaveAttribute('aria-expanded', 'true');
189
231
  await patientlyWaitFor(() => expect(getByText('Remove')).toBeInTheDocument());
190
- fireEvent.click(getByText('Remove'));
191
-
232
+ await act(async () => {
233
+ fireEvent.click(getByText('Remove'));
234
+ });
192
235
  assertNockRequest(autocompleteScope);
193
236
  assertNockRequest(getContentViewScope);
194
237
  assertNockRequest(removeFilterScope);
195
238
  assertNockRequest(callbackGetContentViewScope, done);
196
- });
197
-
198
- test('Shows call-to-action button when there are no filters', async (done) => {
199
- const repoTypesResponse = [{ name: 'deb' }, { name: 'docker' }, { name: 'file' }, { name: 'ostree' }, { name: 'yum' }];
200
- const repoTypeScope = nockInstance
201
- .get(api.getApiUrl('/repositories/repository_types'))
202
- .query(true)
203
- .reply(200, repoTypesResponse);
204
-
205
- const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
206
-
207
- const scope = nockInstance
208
- .get(cvFilters)
209
- .query(true)
210
- .reply(200, emptyContentViewFiltersData);
211
-
212
- const { queryByLabelText } =
213
- renderWithRedux(withCVRoute(<ContentViewFilters cvId={1} details={details} />), renderOptions);
214
-
215
- expect(queryByLabelText('create_filter_empty_state')).toBeNull();
216
- await patientlyWaitFor(() => {
217
- expect(queryByLabelText('create_filter_empty_state')).toBeInTheDocument();
218
- });
219
- fireEvent.click(queryByLabelText('create_filter_empty_state'));
220
- await patientlyWaitFor(() => {
221
- expect(queryByLabelText('create_filter')).toBeInTheDocument();
222
- });
223
- assertNockRequest(autocompleteScope);
224
- assertNockRequest(repoTypeScope);
225
- assertNockRequest(scope, done);
239
+ act(done);
226
240
  });
@@ -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 reactRedux from 'react-redux';
4
4
  import {
5
5
  nockInstance,
@@ -52,7 +52,9 @@ test('Can display errata-date filter rule and edit', async (done) => {
52
52
  expect(getByText('08/15/2020')).toBeInTheDocument();
53
53
  });
54
54
  // Can clear date with chip
55
- getByLabelText('08/15/1990').click();
55
+ await act(async () => {
56
+ getByLabelText('08/15/1990').click();
57
+ });
56
58
  await patientlyWaitFor(() => {
57
59
  expect(getByText('ANY')).toBeInTheDocument();
58
60
  expect(queryByText('08/15/1990')).not.toBeInTheDocument();
@@ -60,8 +62,11 @@ test('Can display errata-date filter rule and edit', async (done) => {
60
62
  // Enabled Edit rule button
61
63
  expect(getByLabelText('save_filter_rule')).toHaveAttribute('aria-disabled', 'false');
62
64
  });
63
- getByLabelText('save_filter_rule').click();
65
+ await act(async () => {
66
+ getByLabelText('save_filter_rule').click();
67
+ });
64
68
 
65
69
  useSelectorMock.mockClear();
66
- assertNockRequest(ruleEditScope, done);
70
+ assertNockRequest(ruleEditScope);
71
+ done();
67
72
  });
@@ -72,7 +72,8 @@ test('Can enable and disable add filter button', async (done) => {
72
72
  assertNockRequest(autocompleteScope);
73
73
  assertNockRequest(cvFilterScope);
74
74
  assertNockRequest(cvFiltersScope);
75
- assertNockRequest(errataScope, done);
75
+ assertNockRequest(errataScope);
76
+ done();
76
77
  act(done);
77
78
  });
78
79
 
@@ -118,10 +119,10 @@ test('Can add a filter rule', async (done) => {
118
119
 
119
120
  await patientlyWaitFor(() => {
120
121
  expect(getByText(errataId)).toBeInTheDocument();
121
- expect(getAllByLabelText('Actions')[3]).toHaveAttribute('aria-expanded', 'false');
122
+ expect(getAllByLabelText('Kebab toggle')[1]).toHaveAttribute('aria-expanded', 'false');
122
123
  });
123
- fireEvent.click(getAllByLabelText('Actions')[3]);
124
- expect(getAllByLabelText('Actions')[3]).toHaveAttribute('aria-expanded', 'true');
124
+ fireEvent.click(getAllByLabelText('Kebab toggle')[1]);
125
+ expect(getAllByLabelText('Kebab toggle')[1]).toHaveAttribute('aria-expanded', 'true');
125
126
  await patientlyWaitFor(() => expect(getByText('Add')).toBeInTheDocument());
126
127
  act(() => { fireEvent.click(getByText('Add')); });
127
128
 
@@ -131,7 +132,8 @@ test('Can add a filter rule', async (done) => {
131
132
  assertNockRequest(cvFiltersScope);
132
133
  assertNockRequest(cvFiltersRuleScope);
133
134
  assertNockRequest(cvRequestCallbackScope);
134
- assertNockRequest(errataScope, done);
135
+ assertNockRequest(errataScope);
136
+ done();
135
137
  act(done);
136
138
  });
137
139
 
@@ -176,10 +178,10 @@ test('Can remove a filter rule', async (done) => {
176
178
 
177
179
  await patientlyWaitFor(() => {
178
180
  expect(getByText(errataId)).toBeInTheDocument();
179
- expect(getAllByLabelText('Actions')[2]).toHaveAttribute('aria-expanded', 'false');
181
+ expect(getAllByLabelText('Kebab toggle')[2]).toHaveAttribute('aria-expanded', 'false');
180
182
  });
181
- fireEvent.click(getAllByLabelText('Actions')[2]);
182
- expect(getAllByLabelText('Actions')[2]).toHaveAttribute('aria-expanded', 'true');
183
+ fireEvent.click(getAllByLabelText('Kebab toggle')[2]);
184
+ expect(getAllByLabelText('Kebab toggle')[2]).toHaveAttribute('aria-expanded', 'true');
183
185
  await patientlyWaitFor(() => expect(getByText('Remove')).toBeInTheDocument());
184
186
  act(() => { fireEvent.click(getByText('Remove')); });
185
187
 
@@ -189,7 +191,8 @@ test('Can remove a filter rule', async (done) => {
189
191
  assertNockRequest(cvFiltersScope);
190
192
  assertNockRequest(cvFiltersRuleScope);
191
193
  assertNockRequest(cvRequestCallbackScope);
192
- assertNockRequest(errataScope, done);
194
+ assertNockRequest(errataScope);
195
+ done();
193
196
  act(done);
194
197
  });
195
198
 
@@ -253,7 +256,8 @@ test('Can bulk remove filter rules', async (done) => {
253
256
  assertNockRequest(cvFiltersScope);
254
257
  assertNockRequest(cvFiltersRuleBulkDeleteScope);
255
258
  assertNockRequest(cvRequestCallbackScope);
256
- assertNockRequest(errataScope, done);
259
+ assertNockRequest(errataScope);
260
+ done();
257
261
  act(done);
258
262
  });
259
263
 
@@ -314,7 +318,8 @@ test('Can bulk add filter rules', async (done) => {
314
318
  assertNockRequest(cvFiltersScope);
315
319
  assertNockRequest(cvFiltersRuleBulkAddScope);
316
320
  assertNockRequest(cvRequestCallbackScope);
317
- assertNockRequest(errataScope, done);
321
+ assertNockRequest(errataScope);
322
+ done();
318
323
  act(done);
319
324
  });
320
325
 
@@ -395,6 +400,7 @@ test('Can show filters and chips', async (done) => {
395
400
  assertNockRequest(errataScope); // 2nd call on status selection
396
401
  assertNockRequest(errataScope); // 3rd call on errata type selection
397
402
  assertNockRequest(errataScope); // 4th call on start date change
398
- assertNockRequest(errataScope, done); // Last call on end date change
403
+ assertNockRequest(errataScope);
404
+ done(); // Last call on end date change
399
405
  act(done);
400
406
  });
@@ -7,6 +7,7 @@
7
7
  "updated_at": "2020-12-08 09:26:11 -0500",
8
8
  "content_view": {
9
9
  "composite": false,
10
+ "rolling": false,
10
11
  "component_ids": [],
11
12
  "default": false,
12
13
  "version_count": 0,
@@ -7,6 +7,7 @@
7
7
  "updated_at": "2021-08-23 14:46:28 -0400",
8
8
  "content_view": {
9
9
  "composite": false,
10
+ "rolling": false,
10
11
  "component_ids": [],
11
12
  "default": false,
12
13
  "version_count": 4,