katello 4.5.1 → 4.6.0.rc1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

Files changed (440) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/katello/api/rhsm/candlepin_dynflow_proxy_controller.rb +10 -0
  3. data/app/controllers/katello/api/v2/activation_keys_controller.rb +7 -0
  4. data/app/controllers/katello/api/v2/alternate_content_sources_controller.rb +52 -22
  5. data/app/controllers/katello/api/v2/content_uploads_controller.rb +2 -0
  6. data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +1 -1
  7. data/app/controllers/katello/api/v2/content_view_filters_controller.rb +1 -1
  8. data/app/controllers/katello/api/v2/debs_controller.rb +42 -10
  9. data/app/controllers/katello/api/v2/host_collections_controller.rb +5 -1
  10. data/app/controllers/katello/api/v2/host_errata_controller.rb +1 -0
  11. data/app/controllers/katello/api/v2/host_module_streams_controller.rb +9 -1
  12. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +8 -1
  13. data/app/controllers/katello/api/v2/organizations_controller.rb +3 -1
  14. data/app/controllers/katello/api/v2/simple_content_access_controller.rb +8 -0
  15. data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +34 -11
  16. data/app/controllers/katello/concerns/organizations_controller_extensions.rb +7 -16
  17. data/app/lib/actions/katello/alternate_content_source/alternate_content_source_common.rb +16 -0
  18. data/app/lib/actions/katello/alternate_content_source/create.rb +11 -5
  19. data/app/lib/actions/katello/alternate_content_source/destroy.rb +3 -4
  20. data/app/lib/actions/katello/alternate_content_source/refresh.rb +3 -5
  21. data/app/lib/actions/katello/alternate_content_source/update.rb +57 -13
  22. data/app/lib/actions/katello/applicability/hosts/bulk_generate.rb +2 -2
  23. data/app/lib/actions/katello/organization/manifest_refresh.rb +8 -4
  24. data/app/lib/actions/katello/organization/simple_content_access/toggle.rb +1 -9
  25. data/app/lib/actions/katello/repository/create.rb +9 -0
  26. data/app/lib/actions/katello/repository/destroy.rb +21 -0
  27. data/app/lib/actions/katello/repository/errata_mail.rb +3 -3
  28. data/app/lib/actions/katello/repository/refresh_repository.rb +3 -0
  29. data/app/lib/actions/katello/repository/update.rb +33 -0
  30. data/app/lib/actions/katello/repository/update_redhat_repository.rb +1 -1
  31. data/app/lib/actions/pulp3/alternate_content_source/create.rb +5 -4
  32. data/app/lib/actions/pulp3/alternate_content_source/create_remote.rb +5 -4
  33. data/app/lib/actions/pulp3/alternate_content_source/delete.rb +4 -4
  34. data/app/lib/actions/pulp3/alternate_content_source/delete_remote.rb +4 -4
  35. data/app/lib/actions/pulp3/alternate_content_source/refresh.rb +4 -4
  36. data/app/lib/actions/pulp3/alternate_content_source/update.rb +4 -4
  37. data/app/lib/actions/pulp3/alternate_content_source/update_remote.rb +5 -5
  38. data/app/lib/actions/pulp3/capsule_content/reclaim_space.rb +1 -0
  39. data/app/lib/actions/pulp3/orchestration/alternate_content_source/create.rb +3 -3
  40. data/app/lib/actions/pulp3/orchestration/alternate_content_source/delete.rb +6 -7
  41. data/app/lib/actions/pulp3/orchestration/alternate_content_source/refresh.rb +2 -2
  42. data/app/lib/actions/pulp3/orchestration/alternate_content_source/refresh_remote.rb +18 -0
  43. data/app/lib/actions/pulp3/orchestration/alternate_content_source/update.rb +3 -3
  44. data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +1 -1
  45. data/app/lib/katello/concerns/base_template_scope_extensions.rb +1 -1
  46. data/app/lib/katello/errors.rb +1 -1
  47. data/app/lib/katello/resources/candlepin/owner.rb +9 -2
  48. data/app/lib/katello/validators/alternate_content_source_products_validator.rb +17 -0
  49. data/app/models/katello/alternate_content_source.rb +39 -8
  50. data/app/models/katello/alternate_content_source_product.rb +13 -0
  51. data/app/models/katello/concerns/host_managed_extensions.rb +12 -2
  52. data/app/models/katello/concerns/pulp_database_unit.rb +2 -2
  53. data/app/models/katello/concerns/smart_proxy_extensions.rb +5 -6
  54. data/app/models/katello/content_view.rb +4 -0
  55. data/app/models/katello/content_view_deb_filter.rb +51 -0
  56. data/app/models/katello/content_view_deb_filter_rule.rb +24 -0
  57. data/app/models/katello/content_view_filter.rb +10 -3
  58. data/app/models/katello/glue/candlepin/owner.rb +0 -1
  59. data/app/models/katello/installed_package.rb +1 -0
  60. data/app/models/katello/product.rb +3 -0
  61. data/app/models/katello/repository.rb +2 -0
  62. data/app/models/katello/smart_proxy_alternate_content_source.rb +6 -0
  63. data/app/services/cert/certs.rb +8 -16
  64. data/app/services/katello/content_unit_indexer.rb +2 -1
  65. data/app/services/katello/organization_creator.rb +4 -4
  66. data/app/services/katello/pulp/server.rb +2 -2
  67. data/app/services/katello/pulp3/alternate_content_source.rb +22 -4
  68. data/app/services/katello/pulp3/api/apt.rb +12 -0
  69. data/app/services/katello/pulp3/erratum.rb +1 -4
  70. data/app/services/katello/pulp3/repository/apt.rb +186 -2
  71. data/app/services/katello/pulp3/repository.rb +4 -3
  72. data/app/services/katello/pulp3/service_common.rb +1 -1
  73. data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +1 -1
  74. data/app/views/foreman/smart_proxies/show.html.erb +3 -3
  75. data/app/views/katello/api/v2/alternate_content_sources/base.json.rabl +18 -3
  76. data/app/views/katello/api/v2/alternate_content_sources/show.json.rabl +20 -0
  77. data/app/views/katello/api/v2/ansible_collections/compare.json.rabl +10 -0
  78. data/app/views/katello/api/v2/content_view_filters/base.json.rabl +5 -0
  79. data/app/views/katello/api/v2/module_streams/compare.json.rabl +10 -0
  80. data/app/views/katello/api/v2/repository_sets/show.json.rabl +4 -0
  81. data/app/views/katello/layouts/foreman_with_bastion.html.erb +1 -1
  82. data/app/views/katello/layouts/react.html.erb +1 -1
  83. data/app/views/overrides/organizations/_edit_override.html.erb +5 -8
  84. data/app/views/overrides/organizations/_index_row_override.html.erb +1 -1
  85. data/app/views/overrides/organizations/_step_1_override.html.erb +5 -0
  86. data/ca/redhat-uep.pem +18 -23
  87. data/config/katello.yaml.example +0 -2
  88. data/config/routes/api/v2.rb +2 -0
  89. data/config/routes/overrides.rb +1 -0
  90. data/db/migrate/20201116161820_create_content_view_deb_filter_rules.rb +17 -0
  91. data/db/migrate/20220524132259_remove_last_refreshed_from_katello_alternate_content_sources.rb +5 -0
  92. data/db/migrate/20220601163911_add_vendor_to_katello_installed_packages.rb +5 -0
  93. data/db/migrate/20220610165621_add_repositories_and_products_to_acs.rb +23 -0
  94. data/db/seeds.d/102-organizations.rb +1 -1
  95. data/engines/bastion/app/views/bastion/layouts/application.html.erb +1 -1
  96. data/engines/bastion/app/views/bastion/layouts/application_ie.html.erb +1 -1
  97. data/engines/bastion/app/views/bastion/layouts/assets.html.erb +1 -1
  98. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/environment-content.controller.js +2 -0
  99. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/environment.controller.js +2 -0
  100. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/details/views/environment-content-views.html +1 -1
  101. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.controller.js +1 -0
  102. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/views/environments.html +3 -3
  103. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +4 -5
  104. data/engines/bastion_katello/lib/bastion_katello/engine.rb +0 -1
  105. data/lib/katello/engine.rb +1 -2
  106. data/lib/katello/permission_creator.rb +2 -2
  107. data/lib/katello/permissions/host_permissions.rb +1 -0
  108. data/lib/katello/plugin.rb +6 -12
  109. data/lib/katello/version.rb +1 -1
  110. data/locale/action_names.rb +49 -46
  111. data/locale/bn/katello.po +361 -53
  112. data/{webpack/scenes/AnsibleCollections/AnsibleCollectionsTables.scss → locale/bn/katello.po.time_stamp} +0 -0
  113. data/locale/cs/katello.po +361 -53
  114. data/locale/cs/katello.po.time_stamp +0 -0
  115. data/locale/de/katello.po +366 -58
  116. data/locale/de/katello.po.time_stamp +0 -0
  117. data/locale/en/katello.po +361 -53
  118. data/locale/en/katello.po.time_stamp +0 -0
  119. data/locale/es/katello.po +364 -56
  120. data/locale/es/katello.po.time_stamp +0 -0
  121. data/locale/fr/katello.po +376 -68
  122. data/locale/fr/katello.po.time_stamp +0 -0
  123. data/locale/gu/katello.po +361 -53
  124. data/locale/gu/katello.po.time_stamp +0 -0
  125. data/locale/hi/katello.po +361 -53
  126. data/locale/hi/katello.po.time_stamp +0 -0
  127. data/locale/it/katello.po +361 -53
  128. data/locale/it/katello.po.time_stamp +0 -0
  129. data/locale/ja/katello.po +374 -66
  130. data/locale/ja/katello.po.time_stamp +0 -0
  131. data/locale/katello.pot +1626 -1079
  132. data/locale/kn/katello.po +361 -53
  133. data/locale/kn/katello.po.time_stamp +0 -0
  134. data/locale/ko/katello.po +361 -53
  135. data/locale/ko/katello.po.time_stamp +0 -0
  136. data/locale/mr/katello.po +361 -53
  137. data/locale/mr/katello.po.time_stamp +0 -0
  138. data/locale/or/katello.po +361 -53
  139. data/locale/or/katello.po.time_stamp +0 -0
  140. data/locale/pa/katello.po +361 -53
  141. data/locale/pa/katello.po.time_stamp +0 -0
  142. data/locale/pt/katello.po +361 -53
  143. data/locale/pt/katello.po.time_stamp +0 -0
  144. data/locale/pt_BR/katello.po +364 -56
  145. data/locale/pt_BR/katello.po.time_stamp +0 -0
  146. data/locale/ru/katello.po +361 -53
  147. data/locale/ru/katello.po.time_stamp +0 -0
  148. data/locale/ta/katello.po +361 -53
  149. data/locale/ta/katello.po.time_stamp +0 -0
  150. data/locale/te/katello.po +361 -53
  151. data/locale/te/katello.po.time_stamp +0 -0
  152. data/locale/zh_CN/katello.po +374 -66
  153. data/locale/zh_CN/katello.po.time_stamp +0 -0
  154. data/locale/zh_TW/katello.po +361 -53
  155. data/locale/zh_TW/katello.po.time_stamp +0 -0
  156. data/package.json +0 -3
  157. data/webpack/components/EditableTextInput/EditableTextInput.js +3 -16
  158. data/webpack/components/EditableTextInput/PencilEditButton.js +33 -0
  159. data/webpack/components/Errata/index.js +18 -3
  160. data/webpack/components/Loading.js +1 -1
  161. data/webpack/components/RoutedTabs/index.js +1 -17
  162. data/webpack/components/Search/Search.js +0 -1
  163. data/webpack/components/Search/__tests__/search.test.js +1 -2
  164. data/webpack/components/SelectAllCheckbox/index.js +7 -4
  165. data/webpack/components/SelectableDropdown/SelectableDropdown.js +1 -0
  166. data/webpack/components/Table/EmptyStateMessage.js +77 -2
  167. data/webpack/components/Table/MainTable.js +46 -4
  168. data/webpack/components/Table/TableHooks.js +9 -6
  169. data/webpack/components/Table/TableWrapper.js +14 -8
  170. data/webpack/components/TypeAhead/TypeAhead.js +26 -11
  171. data/webpack/components/TypeAhead/pf3Search/TypeAheadItems.js +1 -1
  172. data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.js +1 -0
  173. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +2 -1
  174. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +9 -4
  175. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeActions.js +37 -0
  176. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +173 -0
  177. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.scss +6 -0
  178. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeConstants.js +6 -0
  179. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +301 -0
  180. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeSelectors.js +25 -0
  181. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeCard.test.js +108 -0
  182. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/__tests__/SystemPurposeEditModal.test.js +161 -0
  183. data/webpack/components/extensions/HostDetails/Cards/__tests__/errataOverviewCard.test.js +12 -12
  184. data/webpack/components/extensions/HostDetails/DetailsTabCards/HwPropertiesCard.js +100 -0
  185. data/webpack/components/extensions/HostDetails/DetailsTabCards/SystemPropertiesCardExtensions.js +26 -4
  186. data/webpack/components/extensions/HostDetails/HostDetailsConstants.js +3 -1
  187. data/webpack/components/extensions/HostDetails/HostDetailsReducer.js +14 -0
  188. data/webpack/components/extensions/HostDetails/HostDetailsSelectors.js +8 -2
  189. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +8 -12
  190. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +23 -2
  191. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +5 -0
  192. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +57 -7
  193. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js +2 -0
  194. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySets.fixtures.json +3 -0
  195. data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +4 -1
  196. data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +1 -10
  197. data/webpack/components/extensions/HostDetails/hostDetailsHelpers.js +1 -1
  198. data/webpack/components/extensions/RegistrationCommands/index.js +49 -17
  199. data/webpack/containers/Application/config.js +5 -10
  200. data/webpack/global_index.js +19 -7
  201. data/webpack/global_test_setup.js +14 -2
  202. data/webpack/ouia_id_check.js +95 -0
  203. data/webpack/redux/actions/RedHatRepositories/helpers.js +2 -0
  204. data/webpack/redux/reducers/index.js +2 -4
  205. data/webpack/scenes/AlternateContentSources/ACSActions.js +36 -3
  206. data/webpack/scenes/AlternateContentSources/ACSConstants.js +3 -0
  207. data/webpack/scenes/AlternateContentSources/ACSSelectors.js +15 -6
  208. data/webpack/scenes/AlternateContentSources/Create/ACSCreateWizard.js +73 -42
  209. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCreateFinish.js +26 -10
  210. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSProducts.js +44 -0
  211. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSReview.js +59 -45
  212. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSSmartProxies.js +2 -1
  213. data/webpack/scenes/AlternateContentSources/Create/Steps/AcsUrlPaths.js +0 -1
  214. data/webpack/scenes/AlternateContentSources/Create/Steps/SelectSource.js +35 -19
  215. data/webpack/scenes/AlternateContentSources/Create/__tests__/acsCreate.test.js +120 -13
  216. data/webpack/scenes/AlternateContentSources/Create/__tests__/products.fixtures.json +92 -0
  217. data/webpack/scenes/AlternateContentSources/Details/ACSExpandableDetails.js +459 -0
  218. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditCredentials.js +354 -0
  219. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditDetails.js +104 -0
  220. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditProducts.js +120 -0
  221. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditSmartProxies.js +118 -0
  222. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditURLPaths.js +118 -0
  223. data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSEdits.test.js +242 -0
  224. data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSExpandableDetails.test.js +106 -0
  225. data/webpack/scenes/AlternateContentSources/Details/__tests__/acsDetails.fixtures.json +49 -0
  226. data/webpack/scenes/AlternateContentSources/Details/__tests__/acsProducts.fixtures.json +95 -0
  227. data/webpack/scenes/AlternateContentSources/Details/__tests__/simplifiedAcsDetails.fixtures.json +39 -0
  228. data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +215 -87
  229. data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.scss +3 -0
  230. data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsTable.test.js +1 -2
  231. data/webpack/scenes/Content/__tests__/contentTable.test.js +1 -2
  232. data/webpack/scenes/ContentViews/ContentViewsConstants.js +15 -4
  233. data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +1 -2
  234. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +2 -0
  235. data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +1 -2
  236. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +113 -0
  237. data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +89 -0
  238. data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +32 -9
  239. data/webpack/scenes/ContentViews/Details/Filters/Add/__tests__/cvFilterAdd.test.js +13 -3
  240. data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +39 -27
  241. data/webpack/scenes/ContentViews/Details/Filters/CVDebFilterContent.js +236 -0
  242. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +1 -0
  243. data/webpack/scenes/ContentViews/Details/Filters/CVFilterDetailType.js +10 -0
  244. data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +3 -0
  245. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +3 -1
  246. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +17 -4
  247. data/webpack/scenes/ContentViews/Details/Filters/ContentType.js +1 -0
  248. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +34 -22
  249. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVDebMatchContentModal.js +97 -0
  250. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +1 -2
  251. data/webpack/scenes/ContentViews/Details/Filters/Rules/DebPackage/AddEditDebPackageRuleModal.js +128 -0
  252. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +56 -3
  253. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +62 -8
  254. data/webpack/scenes/ContentViews/Details/Filters/__tests__/ContentViewPackageGroupFilter.test.js +1 -5
  255. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +1 -2
  256. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +32 -2
  257. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +1 -2
  258. data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilter.test.js +1 -2
  259. data/webpack/scenes/ContentViews/Details/Filters/__tests__/emptyCVContainerImageFilterContent.fixtures.json +13 -0
  260. data/webpack/scenes/ContentViews/Details/Filters/__tests__/emptyCVPackageFilterRules.fixtures.json +13 -0
  261. data/webpack/scenes/ContentViews/Details/Filters/__tests__/emptyContentViewFilters.fixtures.json +13 -0
  262. data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +1 -2
  263. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +5 -1
  264. data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +1 -2
  265. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/__tests__/BulkDeleteModal.test.js +3 -0
  266. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompare.js +143 -0
  267. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompare.scss +51 -0
  268. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareConfig.js +314 -0
  269. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareHeader.js +186 -0
  270. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareTable.js +74 -0
  271. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/AnsibleCollectionsCompareAllContentData.fixtures.json +63 -0
  272. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/CVVersionCompare.test.js +657 -0
  273. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/CVVersionEmptyContentCompareData.fixtures.json +14 -0
  274. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/ContainerTagsCompareAllContentData.fixtures.json +95 -0
  275. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/DebPackagesCompareAllContentData.fixtures.json +87 -0
  276. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/ErrataCompareAllContentData.fixtures.json +319 -0
  277. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/ErrataCompareThreeContentTypesData.fixtures.json +131 -0
  278. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/FilesCompareAllContentData.fixtures.json +51 -0
  279. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/FilesCompareThreeContentTypesData.fixtures.json +48 -0
  280. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/ModuleStreamsCompareAllContentData.fixtures.json +239 -0
  281. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/PackageGroupsCompareAllContentData.fixtures.json +51 -0
  282. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/PythonPackagesCompareAllContentData.fixtures.json +315 -0
  283. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/RPMPackagesCompareAllContentData.fixtures.json +470 -0
  284. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/RPMPackagesCompareThreeContentTypesData.fixtures.json +475 -0
  285. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewDetails.fixtures.json +160 -0
  286. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionOneDetials.fixtures.json +161 -0
  287. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionThreeDetails.fixtures.json +154 -0
  288. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersionTwoDetails.fixtures.json +211 -0
  289. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/contentViewVersions.fixtures.json +1013 -0
  290. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/emptyStateCVVersionOneDetails.fixtures.json +145 -0
  291. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/emptyStateCVVersionTwoDetails.fixtures.json +145 -0
  292. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +102 -36
  293. data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +1 -2
  294. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +4 -2
  295. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +1 -2
  296. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetailsEmpty.test.js +1 -2
  297. data/webpack/scenes/ContentViews/Details/Versions/__tests__/contentViewVersions.test.js +113 -40
  298. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +96 -81
  299. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +1 -2
  300. data/webpack/scenes/ContentViews/__tests__/mockDetails.fixtures.json +7 -2
  301. data/webpack/scenes/SmartProxy/SmartProxyContentActions.js +1 -1
  302. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +0 -30
  303. data/webpack/test-utils/nockWrapper.js +7 -0
  304. metadata +100 -145
  305. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.controller.js +0 -34
  306. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/content-views.routes.js +0 -751
  307. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-deletion.controller.js +0 -42
  308. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-activation-keys.controller.js +0 -81
  309. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-confirm.controller.js +0 -65
  310. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-content-hosts.controller.js +0 -82
  311. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion-environments.controller.js +0 -76
  312. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/content-view-version-deletion.controller.js +0 -160
  313. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/content-view-deletion.html +0 -58
  314. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-activation-keys.html +0 -94
  315. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-confirm.html +0 -76
  316. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-content-hosts.html +0 -88
  317. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/deletion/views/version-deletion-environments.html +0 -73
  318. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-component.factory.js +0 -32
  319. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-composite-available-content-views.controller.js +0 -75
  320. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/content-view-composite-content-views-list.controller.js +0 -68
  321. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite-available-content-views.html +0 -81
  322. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite-content-views-list.html +0 -81
  323. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/components/views/content-view-composite.html +0 -24
  324. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-deb-repositories.controller.js +0 -50
  325. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-docker-repositories.controller.js +0 -42
  326. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-file-repositories.controller.js +0 -50
  327. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-ostree-repositories.controller.js +0 -42
  328. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-available-repositories.controller.js +0 -45
  329. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-deb-repositories-list.controller.js +0 -48
  330. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-details.controller.js +0 -100
  331. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-docker-repositories-list.controller.js +0 -49
  332. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-file-repositories-list.controller.js +0 -48
  333. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-ostree-repositories-list.controller.js +0 -49
  334. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-promotion.controller.js +0 -129
  335. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-publish.controller.js +0 -46
  336. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-repositories-list.controller.js +0 -42
  337. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-repositories.service.js +0 -91
  338. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-versions.controller.js +0 -240
  339. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-errata-filter.controller.js +0 -115
  340. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-module-stream-filter.controller.js +0 -68
  341. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/available-package-group-filter.controller.js +0 -66
  342. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/date-type-errata-filter.controller.js +0 -77
  343. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/docker-tag-filter.controller.js +0 -137
  344. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/edit-filter.controller.js +0 -36
  345. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/errata-filter-list.controller.js +0 -78
  346. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/errata-filter.controller.js +0 -74
  347. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-content-type.filter.js +0 -21
  348. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-details.controller.js +0 -34
  349. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-helper.service.js +0 -30
  350. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-repositories.controller.js +0 -86
  351. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-rule-matching-package-modal.controller.js +0 -37
  352. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter-type.filter.js +0 -21
  353. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filter.factory.js +0 -66
  354. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/filters.controller.js +0 -85
  355. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/module-stream-list-filter.controller.js +0 -73
  356. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/new-filter.controller.js +0 -100
  357. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/package-filter.controller.js +0 -179
  358. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/package-group-list-filter.controller.js +0 -75
  359. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/rule.factory.js +0 -21
  360. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/date-type-errata-filter.html +0 -9
  361. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/date-type-errata.html +0 -75
  362. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/docker-filter.html +0 -28
  363. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/docker-tag-filter-details.html +0 -65
  364. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/edit-filter.html +0 -19
  365. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/errata-filter-details.html +0 -63
  366. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/errata-filter.html +0 -50
  367. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-details.html +0 -9
  368. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-repositories.html +0 -121
  369. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filter-rule-matching-package-modal.html +0 -43
  370. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/filters.html +0 -85
  371. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/module-stream-filter-details.html +0 -58
  372. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/module-stream-filter.html +0 -43
  373. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/new-filter.html +0 -62
  374. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter-details.html +0 -182
  375. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-filter.html +0 -28
  376. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-group-filter-details.html +0 -42
  377. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/package-group-filter.html +0 -43
  378. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/filters/views/partials/filter-repositories-count.html +0 -2
  379. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/content-view-history.controller.js +0 -47
  380. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/content-view-history.factory.js +0 -22
  381. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/histories/views/content-view-history.html +0 -36
  382. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-copy.html +0 -20
  383. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-deb-repositories.html +0 -87
  384. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details-tasks.html +0 -4
  385. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-details.html +0 -144
  386. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-docker-repositories.html +0 -114
  387. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-file-repositories.html +0 -87
  388. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-info.html +0 -63
  389. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-ostree-repositories.html +0 -87
  390. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-promotion.html +0 -59
  391. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-publish.html +0 -58
  392. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-repositories.html +0 -116
  393. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/views/content-view-versions.html +0 -126
  394. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/content-view-new.controller.js +0 -78
  395. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/new/views/content-view-new.html +0 -127
  396. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version-content.controller.js +0 -138
  397. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version.controller.js +0 -59
  398. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-apt.html +0 -25
  399. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-components.html +0 -19
  400. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-deb.html +0 -19
  401. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-details.html +0 -15
  402. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-docker.html +0 -23
  403. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-errata.html +0 -48
  404. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-file.html +0 -21
  405. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-module-streams.html +0 -8
  406. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-package-groups.html +0 -21
  407. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-packages.html +0 -27
  408. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version-yum.html +0 -42
  409. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/views/content-view-version.html +0 -83
  410. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/views/content-views.html +0 -74
  411. data/webpack/components/Table/__test__/useBulkSelect.test.js +0 -99
  412. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsActions.js +0 -30
  413. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsConstants.js +0 -3
  414. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsPage.js +0 -80
  415. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsReducer.js +0 -39
  416. data/webpack/scenes/AnsibleCollections/AnsibleCollectionsTableSchema.js +0 -60
  417. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetails.js +0 -94
  418. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsActions.js +0 -23
  419. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsConstants.js +0 -3
  420. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsReducer.js +0 -30
  421. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionsSchema.js +0 -35
  422. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetailInfo.test.js +0 -16
  423. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetails.fixtures.js +0 -25
  424. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetails.test.js +0 -27
  425. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetailsActions.test.js +0 -41
  426. data/webpack/scenes/AnsibleCollections/Details/__tests__/AnsibleCollectionDetailsReducer.test.js +0 -33
  427. data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetailInfo.test.js.snap +0 -83
  428. data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetails.test.js.snap +0 -190
  429. data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetailsActions.test.js.snap +0 -58
  430. data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetailsReducer.test.js.snap +0 -50
  431. data/webpack/scenes/AnsibleCollections/Details/index.js +0 -17
  432. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionPage.test.js +0 -23
  433. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollections.fixtures.js +0 -52
  434. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionsActions.test.js +0 -48
  435. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionsReducer.test.js +0 -46
  436. data/webpack/scenes/AnsibleCollections/__tests__/AnsibleCollectionsTable.test.js +0 -25
  437. data/webpack/scenes/AnsibleCollections/__tests__/__snapshots__/AnsibleCollectionPage.test.js.snap +0 -73
  438. data/webpack/scenes/AnsibleCollections/__tests__/__snapshots__/AnsibleCollectionsTable.test.js.snap +0 -81
  439. data/webpack/scenes/AnsibleCollections/index.js +0 -17
  440. data/webpack/scenes/Subscriptions/Manifest/__tests__/ManageManifestModal.test.js +0 -123
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { act, renderWithRedux, patientlyWaitFor, fireEvent } from 'react-testing-lib-wrapper';
3
3
  import { Route } from 'react-router-dom';
4
- import nock, { nockInstance, assertNockRequest, mockAutocomplete, mockSetting } from '../../../../../test-utils/nockWrapper';
4
+ import { nockInstance, assertNockRequest, mockAutocomplete, mockSetting } from '../../../../../test-utils/nockWrapper';
5
5
  import api from '../../../../../services/api';
6
6
  import CONTENT_VIEWS_KEY from '../../../ContentViewsConstants';
7
7
  import ContentViewVersions from '../ContentViewVersions';
@@ -12,8 +12,10 @@ import contentViewTaskInProgressResponseData from './contentViewTaskInProgressRe
12
12
  import contentViewTaskResponseData from './contentViewTaskResponse.fixtures.json';
13
13
  import cvDetailData from '../../../../ContentViews/__tests__/mockDetails.fixtures.json';
14
14
  import environmentPathsData from '../../../Publish/__tests__/environmentPaths.fixtures.json';
15
+ import cvIndexData from '../../../__tests__/contentViewList.fixtures.json';
15
16
 
16
17
  const cvPromotePath = api.getApiUrl('/content_view_versions/10/promote');
18
+ const cvIndexPath = api.getApiUrl('/content_views');
17
19
  const promoteResponseData = contentViewTaskInProgressResponseData;
18
20
 
19
21
 
@@ -50,7 +52,6 @@ beforeEach(() => {
50
52
  });
51
53
 
52
54
  afterEach(() => {
53
- nock.cleanAll();
54
55
  assertNockRequest(envScope);
55
56
  assertNockRequest(searchDelayScope);
56
57
  assertNockRequest(autoSearchScope);
@@ -75,10 +76,11 @@ test('Can call API and show versions on page load', async (done) => {
75
76
  expect(getByText(`Version ${firstVersion.version}`)).toBeTruthy();
76
77
  });
77
78
  assertNockRequest(autocompleteScope);
78
- assertNockRequest(scope, done);
79
+ assertNockRequest(scope);
80
+ act(done);
79
81
  });
80
82
 
81
- test('Can link to view environment and see publish time', async () => {
83
+ test('Can link to view environment and see publish time', async (done) => {
82
84
  const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
83
85
  const scope = nockInstance
84
86
  .get(cvVersions)
@@ -105,9 +107,10 @@ test('Can link to view environment and see publish time', async () => {
105
107
 
106
108
  assertNockRequest(autocompleteScope);
107
109
  assertNockRequest(scope);
110
+ act(done);
108
111
  });
109
112
 
110
- test('Can show package and erratas and link to list page', async () => {
113
+ test('Can show package and erratas and link to list page', async (done) => {
111
114
  const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
112
115
  const scope = nockInstance
113
116
  .get(cvVersions)
@@ -132,9 +135,10 @@ test('Can show package and erratas and link to list page', async () => {
132
135
 
133
136
  assertNockRequest(autocompleteScope);
134
137
  assertNockRequest(scope);
138
+ act(done);
135
139
  });
136
140
 
137
- test('Can show additional content and link to list page', async () => {
141
+ test('Can show additional content and link to list page', async (done) => {
138
142
  const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
139
143
  const scope = nockInstance
140
144
  .get(cvVersions)
@@ -157,9 +161,10 @@ test('Can show additional content and link to list page', async () => {
157
161
 
158
162
  assertNockRequest(autocompleteScope);
159
163
  assertNockRequest(scope);
164
+ act(done);
160
165
  });
161
166
 
162
- test('Can load for empty versions', async () => {
167
+ test('Can load for empty versions', async (done) => {
163
168
  const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
164
169
  const scope = nockInstance
165
170
  .get(cvVersions)
@@ -176,6 +181,7 @@ test('Can load for empty versions', async () => {
176
181
  expect(queryByText("You currently don't have any versions for this content view.")).toBeInTheDocument());
177
182
  assertNockRequest(autocompleteScope);
178
183
  assertNockRequest(scope);
184
+ act(done);
179
185
  });
180
186
 
181
187
  test('Can call API and show versions with tasks on page load', async (done) => {
@@ -211,10 +217,66 @@ test('Can call API and show versions with tasks on page load', async (done) => {
211
217
 
212
218
  assertNockRequest(autocompleteScope);
213
219
  assertNockRequest(scope);
214
- assertNockRequest(taskInProgressScope, done);
220
+ assertNockRequest(taskInProgressScope);
215
221
  act(done);// Force the test to stop listening for tasks
216
222
  });
217
223
 
224
+ test('Can open Promote Modal', async (done) => {
225
+ const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
226
+ const cvScope = nockInstance
227
+ .get(cvIndexPath)
228
+ .query(true)
229
+ .reply(200, cvIndexData);
230
+ const scope = nockInstance
231
+ .get(cvVersions)
232
+ .query(true)
233
+ .reply(200, cvVersionsData);
234
+
235
+ const cvPromoteParams = {
236
+ id: 10, versionEnvironments: [], description: '', environment_ids: [5], force: true,
237
+ };
238
+
239
+ const promoteScope = nockInstance
240
+ .post(cvPromotePath, cvPromoteParams)
241
+ .reply(202, promoteResponseData);
242
+
243
+ const {
244
+ getByText, queryByText, getByLabelText, getAllByLabelText,
245
+ } = renderWithRedux(
246
+ withCVRoute(<ContentViewVersions cvId={5} details={cvDetailData} />),
247
+ renderOptions,
248
+ );
249
+
250
+ expect(queryByText(`Version ${firstVersion.version}`)).toBeNull();
251
+ await patientlyWaitFor(() => {
252
+ expect(getByText(`Version ${firstVersion.version}`)).toBeInTheDocument();
253
+ });
254
+ // Expand Row Action
255
+ expect(getAllByLabelText('Actions')[1]).toHaveAttribute('aria-expanded', 'false');
256
+ fireEvent.click(getAllByLabelText('Actions')[1]);
257
+ expect(getAllByLabelText('Actions')[1]).toHaveAttribute('aria-expanded', 'true');
258
+ fireEvent.click(getByText('Promote'));
259
+ await patientlyWaitFor(() => {
260
+ expect(getByText('Select a lifecycle environment from the available promotion paths to promote new version.')).toBeInTheDocument();
261
+ expect(getByLabelText('prod')).toBeInTheDocument();
262
+ });
263
+ // Select env prod
264
+ fireEvent.click(getByLabelText('prod'));
265
+ fireEvent.click(getByLabelText('promote_content_view'));
266
+ // Modal closes itself
267
+ await patientlyWaitFor(() => {
268
+ expect(queryByText('Select a lifecycle environment from the available promotion paths to promote new version.')).toBeNull();
269
+ expect(getByText(`Version ${firstVersion.version}`)).toBeInTheDocument();
270
+ });
271
+ assertNockRequest(autocompleteScope);
272
+ assertNockRequest(scope);
273
+ assertNockRequest(promoteScope);
274
+ // Page is refreshed
275
+ assertNockRequest(scope);
276
+ assertNockRequest(cvScope);
277
+ act(done);
278
+ });
279
+
218
280
  test('Can reload versions upon task completion', async (done) => {
219
281
  const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
220
282
  const { results: withTaskResults } = cvVersionsTasksData;
@@ -223,6 +285,10 @@ test('Can reload versions upon task completion', async (done) => {
223
285
  .get(cvVersions)
224
286
  .query(true)
225
287
  .reply(200, cvVersionsTasksData);
288
+ const cvScope = nockInstance
289
+ .get(cvIndexPath)
290
+ .query(true)
291
+ .reply(200, cvIndexData);
226
292
 
227
293
  const taskSuccessScope = nockInstance
228
294
  .get(taskPollingUrl)
@@ -253,56 +319,63 @@ test('Can reload versions upon task completion', async (done) => {
253
319
  assertNockRequest(scope);
254
320
  assertNockRequest(taskSuccessScope);
255
321
  // Assert CV Versions API is called upon task completion
256
- assertNockRequest(reloadScope, done);
322
+ assertNockRequest(reloadScope);
323
+ assertNockRequest(cvScope);
257
324
  act(done);
258
325
  });
259
326
 
260
- test('Can open Promote Modal', async (done) => {
327
+ test('Shows call-to-action when there are no versions', async (done) => {
261
328
  const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
262
329
  const scope = nockInstance
263
330
  .get(cvVersions)
264
331
  .query(true)
265
- .reply(200, cvVersionsData);
266
-
267
- const cvPromoteParams = {
268
- id: 10, versionEnvironments: [], description: '', environment_ids: [5], force: true,
269
- };
332
+ .reply(200, emptyCVVersionData);
270
333
 
271
- const promoteScope = nockInstance
272
- .post(cvPromotePath, cvPromoteParams)
273
- .reply(202, promoteResponseData);
334
+ const scopeWizard = nockInstance
335
+ .get(environmentPathsPath)
336
+ .query(true)
337
+ .reply(200, environmentPathsData);
274
338
 
275
- const {
276
- getByText, queryByText, getByLabelText, getAllByLabelText,
277
- } = renderWithRedux(
339
+ const { getByText, queryByText } = renderWithRedux(
278
340
  withCVRoute(<ContentViewVersions cvId={5} details={cvDetailData} />),
279
341
  renderOptions,
280
342
  );
281
343
 
282
- expect(queryByText(`Version ${firstVersion.version}`)).toBeNull();
283
- await patientlyWaitFor(() => {
284
- expect(getByText(`Version ${firstVersion.version}`)).toBeInTheDocument();
285
- });
286
- // Expand Row Action
287
- expect(getAllByLabelText('Actions')[1]).toHaveAttribute('aria-expanded', 'false');
288
- fireEvent.click(getAllByLabelText('Actions')[1]);
289
- expect(getAllByLabelText('Actions')[1]).toHaveAttribute('aria-expanded', 'true');
290
- fireEvent.click(getByText('Promote'));
344
+ // Nothing will show at first, page is loading
345
+ expect(queryByText('Publish new version')).toBeNull();
346
+ // Assert that the CV version is now showing on the screen, but wait for it to appear.
291
347
  await patientlyWaitFor(() => {
292
- expect(getByText('Select a lifecycle environment from the available promotion paths to promote new version.')).toBeInTheDocument();
293
- expect(getByLabelText('prod')).toBeInTheDocument();
348
+ expect(getByText('Publish new version')).toBeInTheDocument();
294
349
  });
295
- // Select env prod
296
- fireEvent.click(getByLabelText('prod'));
297
- fireEvent.click(getByLabelText('promote_content_view'));
298
- // Modal closes itself
350
+ fireEvent.click(getByText('Publish new version'));
351
+ await patientlyWaitFor(() => expect(getByText('Publish new version - 1.0')).toBeInTheDocument);
352
+
353
+ assertNockRequest(scopeWizard);
354
+ assertNockRequest(autocompleteScope);
355
+ assertNockRequest(scope);
356
+ act(done);
357
+ });
358
+
359
+ test('Hides selectAllCheckbox when there are no versions', async (done) => {
360
+ const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
361
+ const scope = nockInstance
362
+ .get(cvVersions)
363
+ .query(true)
364
+ .reply(200, emptyCVVersionData);
365
+
366
+ const { queryByLabelText, queryByText, getByText } = renderWithRedux(
367
+ withCVRoute(<ContentViewVersions cvId={5} details={cvDetailData} />),
368
+ renderOptions,
369
+ );
370
+ // Nothing will show at first, page is loading
371
+ expect(queryByText('Publish new version')).toBeNull();
372
+ // Assert that the CV version is now showing on the screen, but wait for it to appear.
299
373
  await patientlyWaitFor(() => {
300
- expect(queryByText('Select a lifecycle environment from the available promotion paths to promote new version.')).toBeNull();
374
+ expect(getByText('Publish new version')).toBeInTheDocument();
375
+ expect(queryByLabelText('Select all')).not.toBeInTheDocument();
301
376
  });
377
+
302
378
  assertNockRequest(autocompleteScope);
303
379
  assertNockRequest(scope);
304
- assertNockRequest(promoteScope);
305
- // Page is refreshed
306
- assertNockRequest(scope, done);
307
380
  act(done);
308
381
  });
@@ -126,9 +126,10 @@ const ContentViewTable = () => {
126
126
  );
127
127
 
128
128
  const emptyContentTitle = __("You currently don't have any Content views.");
129
- const emptyContentBody = __('A content view can be added by using the "Create content view" button above.');
129
+ const emptyContentBody = __('A content view can be added by using the "Create content view" button below.');
130
130
  const emptySearchTitle = __('No matching content views found');
131
131
  const emptySearchBody = __('Try changing your search settings.');
132
+ const showPrimaryAction = true;
132
133
  const {
133
134
  id,
134
135
  latest_version_id: latestVersionId,
@@ -137,7 +138,6 @@ const ContentViewTable = () => {
137
138
  environments,
138
139
  versions,
139
140
  } = actionableCvDetails;
140
-
141
141
  return (
142
142
  <TableWrapper
143
143
  {...{
@@ -150,6 +150,7 @@ const ContentViewTable = () => {
150
150
  searchQuery,
151
151
  updateSearchQuery,
152
152
  fetchItems,
153
+ showPrimaryAction,
153
154
  }}
154
155
  ouiaId="content-views-table"
155
156
  additionalListeners={[activeSortColumn, activeSortDirection]}
@@ -157,16 +158,25 @@ const ContentViewTable = () => {
157
158
  variant={TableVariant.compact}
158
159
  status={status}
159
160
  autocompleteEndpoint="/content_views/auto_complete_search"
161
+ primaryActionButton={canCreate ? (
162
+ <Button
163
+ ouiaId="create-content-view"
164
+ onClick={openForm}
165
+ variant="primary"
166
+ aria-label="create_content_view"
167
+ > {__('Create content view')}
168
+ </Button >) : undefined}
160
169
  actionButtons={
161
170
  <>
162
- {canCreate &&
171
+ {results?.length !== 0 &&
163
172
  <Button ouiaId="create-content-view" onClick={openForm} variant="primary" aria-label="create_content_view">
164
173
  {__('Create content view')}
165
174
  </Button>
166
175
  }
167
176
  <CreateContentViewModal show={isModalOpen} setIsOpen={setIsModalOpen} aria-label="create_content_view_modal" />
168
177
  <CopyContentViewModal cvId={actionableCvId} cvName={actionableCvName} show={copy} setIsOpen={setCopy} aria-label="copy_content_view_modal" />
169
- {isPublishModalOpen &&
178
+ {
179
+ isPublishModalOpen &&
170
180
  <PublishContentViewWizard
171
181
  details={actionableCvDetails}
172
182
  show={isPublishModalOpen}
@@ -179,7 +189,8 @@ const ContentViewTable = () => {
179
189
  aria-label="publish_content_view_modal"
180
190
  />
181
191
  }
182
- {isPromoteModalOpen &&
192
+ {
193
+ isPromoteModalOpen &&
183
194
  <ContentViewVersionPromote
184
195
  cvId={id && Number(id)}
185
196
  versionIdToPromote={latestVersionId}
@@ -188,7 +199,8 @@ const ContentViewTable = () => {
188
199
  setIsOpen={setIsPromoteModalOpen}
189
200
  />
190
201
  }
191
- {isDeleteModalOpen &&
202
+ {
203
+ isDeleteModalOpen &&
192
204
  <ContentViewDeleteWizard
193
205
  cvId={id && Number(id)}
194
206
  cvEnvironments={environments}
@@ -196,7 +208,8 @@ const ContentViewTable = () => {
196
208
  show={isDeleteModalOpen}
197
209
  setIsOpen={setIsDeleteModalOpen}
198
210
  aria-label="delete_content_view_modal"
199
- />}
211
+ />
212
+ }
200
213
  </>
201
214
  }
202
215
  >
@@ -214,80 +227,82 @@ const ContentViewTable = () => {
214
227
  <Th key="action-menu" />
215
228
  </Tr>
216
229
  </Thead>
217
- {results?.map((cvInfo, rowIndex) => {
218
- const {
219
- composite,
220
- name,
221
- id: cvId,
222
- last_published: lastPublished,
223
- latest_version: latestVersion,
224
- latest_version_id: cvLatestVersionId,
225
- latest_version_environments: cvLatestVersionEnvironments,
226
- last_task: lastTask,
227
- activation_keys: activationKeys,
228
- hosts,
229
- related_cv_count: relatedCVCount,
230
- related_composite_cvs: relatedCompositeCVs,
231
- description,
232
- createdAt,
233
- } = cvInfo;
234
- const { last_sync_words: lastSyncWords, started_at: startedAt } = lastTask ?? {};
235
- const isExpanded = tableRowIsExpanded(cvId);
236
- return (
237
- <Tbody isExpanded={isExpanded} key={`${cvId}_${createdAt}`}>
238
- <Tr key={cvId}>
239
- <Td
240
- expand={{
241
- rowIndex,
242
- isExpanded,
243
- onToggle: (_event, _rInx, isOpen) =>
244
- expandedTableRows.onToggle(isOpen, cvId),
245
- }}
246
- />
247
- <Td><ContentViewIcon position="right" composite={composite} /></Td>
248
- <Td><Link to={`${urlBuilder('content_views', '')}${cvId}`}>{name}</Link></Td>
249
- <Td>{lastPublished ? <LongDateTime date={lastPublished} showRelativeTimeTooltip /> : <InactiveText text={__('Not yet published')} />}</Td>
250
- <Td><LastSync startedAt={startedAt} lastSync={lastTask} lastSyncWords={lastSyncWords} emptyMessage="N/A" /></Td>
251
- <Td>{latestVersion ?
252
- <ContentViewVersionCell {...{
253
- id: cvId,
254
- latestVersion,
255
- latestVersionId: cvLatestVersionId,
256
- latestVersionEnvironments: cvLatestVersionEnvironments,
257
- }}
258
- /> :
259
- <InactiveText style={{ marginTop: '0.5em', marginBottom: '0.5em' }} text={__('Not yet published')} />}
260
- </Td>
261
- <Td
262
- key={`rowActions-${id}`}
263
- actions={{
264
- items: actionsWithPermissions(cvInfo),
265
- }}
266
- />
267
- </Tr>
268
- <Tr key="child_row" isExpanded={isExpanded}>
269
- <Td colSpan={2}>
270
- <ExpandableRowContent>
271
- <DetailsExpansion
272
- cvId={cvId}
273
- cvName={name}
274
- cvComposite={composite}
275
- {...{
276
- activationKeys, hosts, relatedCVCount, relatedCompositeCVs,
277
- }}
278
- />
279
- </ExpandableRowContent>
280
- </Td>
281
- <Td colSpan={4}>
282
- <ExpandableRowContent>
283
- {description || <InactiveText text={__('No description')} />}
284
- </ExpandableRowContent>
285
- </Td>
286
- </Tr>
287
- </Tbody>
288
- );
289
- })}
290
- </TableWrapper>
230
+ {
231
+ results?.map((cvInfo, rowIndex) => {
232
+ const {
233
+ composite,
234
+ name,
235
+ id: cvId,
236
+ last_published: lastPublished,
237
+ latest_version: latestVersion,
238
+ latest_version_id: cvLatestVersionId,
239
+ latest_version_environments: cvLatestVersionEnvironments,
240
+ last_task: lastTask,
241
+ activation_keys: activationKeys,
242
+ hosts,
243
+ related_cv_count: relatedCVCount,
244
+ related_composite_cvs: relatedCompositeCVs,
245
+ description,
246
+ createdAt,
247
+ } = cvInfo;
248
+ const { last_sync_words: lastSyncWords, started_at: startedAt } = lastTask ?? {};
249
+ const isExpanded = tableRowIsExpanded(cvId);
250
+ return (
251
+ <Tbody isExpanded={isExpanded} key={`${cvId}_${createdAt}`}>
252
+ <Tr key={cvId}>
253
+ <Td
254
+ expand={{
255
+ rowIndex,
256
+ isExpanded,
257
+ onToggle: (_event, _rInx, isOpen) =>
258
+ expandedTableRows.onToggle(isOpen, cvId),
259
+ }}
260
+ />
261
+ <Td><ContentViewIcon position="right" composite={composite} /></Td>
262
+ <Td><Link to={`${urlBuilder('content_views', '')}${cvId}`}>{name}</Link></Td>
263
+ <Td>{lastPublished ? <LongDateTime date={lastPublished} showRelativeTimeTooltip /> : <InactiveText text={__('Not yet published')} />}</Td>
264
+ <Td><LastSync startedAt={startedAt} lastSync={lastTask} lastSyncWords={lastSyncWords} emptyMessage="N/A" /></Td>
265
+ <Td>{latestVersion ?
266
+ <ContentViewVersionCell {...{
267
+ id: cvId,
268
+ latestVersion,
269
+ latestVersionId: cvLatestVersionId,
270
+ latestVersionEnvironments: cvLatestVersionEnvironments,
271
+ }}
272
+ /> :
273
+ <InactiveText style={{ marginTop: '0.5em', marginBottom: '0.5em' }} text={__('Not yet published')} />}
274
+ </Td>
275
+ <Td
276
+ key={`rowActions-${id}`}
277
+ actions={{
278
+ items: actionsWithPermissions(cvInfo),
279
+ }}
280
+ />
281
+ </Tr>
282
+ <Tr key="child_row" isExpanded={isExpanded}>
283
+ <Td colSpan={2}>
284
+ <ExpandableRowContent>
285
+ <DetailsExpansion
286
+ cvId={cvId}
287
+ cvName={name}
288
+ cvComposite={composite}
289
+ {...{
290
+ activationKeys, hosts, relatedCVCount, relatedCompositeCVs,
291
+ }}
292
+ />
293
+ </ExpandableRowContent>
294
+ </Td>
295
+ <Td colSpan={4}>
296
+ <ExpandableRowContent>
297
+ {description || <InactiveText text={__('No description')} />}
298
+ </ExpandableRowContent>
299
+ </Td>
300
+ </Tr>
301
+ </Tbody>
302
+ );
303
+ })
304
+ }
305
+ </TableWrapper >
291
306
  );
292
307
  };
293
308
 
@@ -5,7 +5,7 @@ import { renderWithRedux, patientlyWaitFor, fireEvent } from 'react-testing-lib-
5
5
  import CONTENT_VIEWS_KEY from '../ContentViewsConstants';
6
6
  import ContentViewsPage from '../../ContentViews';
7
7
  import api from '../../../services/api';
8
- import nock, {
8
+ import {
9
9
  nockInstance, assertNockRequest, mockAutocomplete, mockSetting,
10
10
  } from '../../../test-utils/nockWrapper';
11
11
  import createBasicCVs from './basicContentViews.fixtures';
@@ -31,7 +31,6 @@ beforeEach(() => {
31
31
  });
32
32
 
33
33
  afterEach(() => {
34
- nock.cleanAll();
35
34
  assertNockRequest(searchDelayScope);
36
35
  assertNockRequest(autoSearchScope);
37
36
  });
@@ -1,10 +1,15 @@
1
1
  {
2
2
  "label": "mock_details",
3
3
  "permissions": {
4
- "view_content_views": true,
4
+ "view_content_views": true,
5
5
  "edit_content_views": true,
6
6
  "destroy_content_views": true,
7
7
  "publish_content_views": true,
8
8
  "promote_or_remove_content_views": true
9
- }
9
+ },
10
+ "name": "mock_details",
11
+ "composite": false,
12
+ "next_version": "1.0",
13
+ "id": "5",
14
+ "version_count": 0
10
15
  }
@@ -12,7 +12,7 @@ export const getSmartProxies = () => get({
12
12
  type: API_OPERATIONS.GET,
13
13
  key: SMART_PROXY_KEY,
14
14
  url: foremanApi.getApiUrl('/smart_proxies'),
15
- params: { organization_id: orgId() },
15
+ params: { organization_id: orgId(), per_page: 'all' },
16
16
  });
17
17
 
18
18
  export default getSmartProxyContent;
@@ -13,7 +13,6 @@ import { columns } from './ManifestHistoryTableSchema';
13
13
  import DeleteManifestModalText from './DeleteManifestModalText';
14
14
  import { MANAGE_MANIFEST_MODAL_ID, DELETE_MANIFEST_MODAL_ID } from './ManifestConstants';
15
15
  import { CONTENT_CREDENTIAL_CERT_TYPE } from '../../ContentCredentials/ContentCredentialConstants';
16
- import SimpleContentAccess from './SimpleContentAccess';
17
16
  import CdnConfigurationForm from './CdnConfigurationTab';
18
17
 
19
18
  import './ManageManifestModal.scss';
@@ -87,10 +86,6 @@ class ManageManifestModal extends Component {
87
86
  canDeleteManifest,
88
87
  isManifestImported,
89
88
  canEditOrganizations,
90
- simpleContentAccess,
91
- simpleContentAccessEligible,
92
- enableSimpleContentAccess,
93
- disableSimpleContentAccess,
94
89
  taskInProgress,
95
90
  manifestActionStarted,
96
91
  contentCredentials,
@@ -100,14 +95,6 @@ class ManageManifestModal extends Component {
100
95
  const showCdnConfigurationTab = canEditOrganizations;
101
96
  const showSubscriptionManifest = (canImportManifest || canDeleteManifest);
102
97
  const showManifestTab = (canEditOrganizations || showSubscriptionManifest);
103
- const disableSCASwitch = (
104
- // allow users to turn SCA off even if they are not eligible to turn it back on
105
- (!simpleContentAccessEligible && !simpleContentAccess) ||
106
- disableManifestActions ||
107
- !isManifestImported ||
108
- actionInProgress ||
109
- organization.loading
110
- );
111
98
 
112
99
  const emptyStateData = () => ({
113
100
  header: __('There is no Manifest History to display.'),
@@ -149,17 +136,6 @@ class ManageManifestModal extends Component {
149
136
  <Grid>
150
137
  <h3>{__('Subscription Manifest')}</h3>
151
138
  <hr />
152
- { isManifestImported &&
153
- <Row>
154
- <SimpleContentAccess
155
- enableSimpleContentAccess={enableSimpleContentAccess}
156
- disableSimpleContentAccess={disableSimpleContentAccess}
157
- isSimpleContentAccessEnabled={simpleContentAccess}
158
- canToggleSimpleContentAccess={!disableSCASwitch}
159
- simpleContentAccessEligible={simpleContentAccessEligible}
160
- />
161
- </Row>
162
- }
163
139
  <Row>
164
140
  <Col sm={5}>
165
141
  <strong>{__('Subscription Allocation')}</strong>
@@ -271,8 +247,6 @@ ManageManifestModal.propTypes = {
271
247
  upload: PropTypes.func.isRequired,
272
248
  refresh: PropTypes.func.isRequired,
273
249
  delete: PropTypes.func.isRequired,
274
- enableSimpleContentAccess: PropTypes.func.isRequired,
275
- disableSimpleContentAccess: PropTypes.func.isRequired,
276
250
  loadManifestHistory: PropTypes.func.isRequired,
277
251
  getContentCredentials: PropTypes.func.isRequired,
278
252
  organization: PropTypes.shape({
@@ -302,8 +276,6 @@ ManageManifestModal.propTypes = {
302
276
  disabledReason: PropTypes.string,
303
277
  loadOrganization: PropTypes.func.isRequired,
304
278
  taskInProgress: PropTypes.bool.isRequired,
305
- simpleContentAccess: PropTypes.bool,
306
- simpleContentAccessEligible: PropTypes.bool,
307
279
  manifestHistory: PropTypes.shape({
308
280
  loading: PropTypes.bool,
309
281
  // Disabling rule as existing code failed due to an eslint-plugin-react update
@@ -327,8 +299,6 @@ ManageManifestModal.defaultProps = {
327
299
  isManifestImported: false,
328
300
  deleteManifestModalExists: false,
329
301
  canEditOrganizations: false,
330
- simpleContentAccess: false,
331
- simpleContentAccessEligible: undefined,
332
302
  manifestActionStarted: false,
333
303
  contentCredentials: [],
334
304
  };
@@ -18,6 +18,13 @@ export const nockInstance = nock('http://localhost');
18
18
  // The number of tries dictates the number of attempts assert will make before failing.
19
19
  // `tries * interval` is the maximum time that every nock scope will wait before failing if not met.
20
20
  export const assertNockRequest = (nockScope, jestDone, tries = 600) => {
21
+ // First function run of setInterval is not until after interval milliseconds.
22
+ // So duplicating some code here just in case the scope is already complete.
23
+ if (nockScope.isDone()) {
24
+ nockScope.done(); // Assert nock request
25
+ if (jestDone) jestDone(); // Tell jest test is done
26
+ return;
27
+ }
21
28
  // 500ms interval * 600 tries = 5 min timeout
22
29
  const interval = 500;
23
30
  let i = 0;