Ensure complete reversibility of the archive_group feature flag
Original discussion: !201072 (comment 2687711313)
When the archive_group feature flag is disabled, all side effects from group archiving must be completely invisible to users. The platform should behave as if the group archiving feature never existed.
When the group is previously archived but the archive_group flag is then disabled:
-
The group.archivedfields in the APIs must either be hidden or return nil. Unless they are documented asexperimental. -
The project.archivedfields in the APIs must return false. Unless the project itself is archived. -
The archivedparameter in Group APIs must be ignored. -
The archivedparameter in Project APIs must ignore the parent group's archived status. -
The activeparameter in Group APIs must not check for the archive status. -
The activeparameter in Project APIs must ignore the parent group's archived status. -
Archived badge and banners in the Groups overview page must not be visible -
Archived badge and banners in the Projects overview page must not be visible. Unless the project itself is archived. -
Must be able to archive/unarchive projects in the settings page. -
Archived groups must not appear in Inactivetabs. -
Projects in archived groups must not appear in Inactive/Archivedtabs. Unless the project itself is archived.
Proposal
When the flag is disabled, the following must be true:
-
Namespace#self_or_ancestors_archived?should always return false. - The group's
:archived,:self_or_ancestors_archived,:non_archived,:self_and_ancestors_non_archivedscopes should all be no-op. - The group's
:active,:inactive,:self_and_ancestors_active, and:self_or_ancestors_inactivescopes should only check for the deletion schedule. - The project's
:self_or_ancestors_archived,:self_and_ancestors_activeand:self_or_ancestors_inactiveshould ignore the group's archived status. -
Projects::ArchiveServiceshould not check forAncestorAlreadyArchivedError. -
Projects::UnarchiveServiceshould not check forAncestorArchivedError. -
Groups::ArchiveServiceshould be a no-op. -
Groups::UnarchiveServiceshould be a no-op.
Edited by Shane Maglangit