Skip to content

Commit 888bffc

Browse files
author
Scott Bommarito
authored
Hotfix: Deprecation UI should be hidden when feature flag is disabled (#7016)
1 parent 5d2a67e commit 888bffc

5 files changed

Lines changed: 62 additions & 2 deletions

File tree

src/NuGetGallery/Controllers/PackagesController.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -748,6 +748,7 @@ public virtual async Task<ActionResult> DisplayPackage(string id, string version
748748
model.SymbolsPackageValidationIssues = _validationService.GetLatestPackageValidationIssues(model.LatestSymbolsPackage);
749749
model.IsCertificatesUIEnabled = _contentObjectService.CertificatesConfiguration?.IsUIEnabledForUser(currentUser) ?? false;
750750
model.IsAtomFeedEnabled = _featureFlagService.IsPackagesAtomFeedEnabled();
751+
model.IsPackageDeprecationEnabled = _featureFlagService.IsManageDeprecationEnabled(currentUser);
751752

752753
model.ReadMeHtml = await _readMeService.GetReadMeHtmlAsync(package);
753754

src/NuGetGallery/Scripts/gallery/page-display-package.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ $(function () {
1919
container.removeAttr(expanderAttributes[i]);
2020
}
2121

22+
// The expander should not be clickable when it doesn't have content
23+
container.find('.deprecation-expander').removeAttr('role');
24+
2225
$('#deprecation-expander-icon-right').hide();
2326
}
2427

src/NuGetGallery/ViewModels/DisplayPackageViewModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ private DisplayPackageViewModel(Package package, User currentUser, string pushed
143143
public bool HasSemVer2Dependency { get; }
144144
public bool IsDotnetToolPackageType { get; set; }
145145
public bool IsAtomFeedEnabled { get; set; }
146+
public bool IsPackageDeprecationEnabled { get; set; }
146147

147148
public bool HasNewerPrerelease
148149
{

src/NuGetGallery/Views/Packages/DisplayPackage.cshtml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@
255255
)
256256
}
257257

258-
@if (Model.DeprecationStatus != PackageDeprecationStatus.NotDeprecated)
258+
@if (Model.IsPackageDeprecationEnabled && Model.DeprecationStatus != PackageDeprecationStatus.NotDeprecated)
259259
{
260260
@Html.Partial("_DisplayPackageDeprecation")
261261
}
@@ -572,7 +572,7 @@
572572
</td>
573573

574574
<td class="package-icon-cell">
575-
@if (packageVersion.DeprecationStatus != PackageDeprecationStatus.NotDeprecated)
575+
@if (Model.IsPackageDeprecationEnabled && packageVersion.DeprecationStatus != PackageDeprecationStatus.NotDeprecated)
576576
{
577577
var deprecationTitle = packageVersion.Version;
578578
var isVulnerable = packageVersion.DeprecationStatus.HasFlag(PackageDeprecationStatus.Vulnerable);

tests/NuGetGallery.Facts/Controllers/PackagesControllerFacts.cs

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1076,6 +1076,61 @@ public async Task ShowsAtomFeedIfEnabled(bool isAtomFeedEnabled)
10761076
deprecationService.Verify();
10771077
}
10781078

1079+
[Theory]
1080+
[InlineData(false)]
1081+
[InlineData(true)]
1082+
public async Task ShowsDeprecationIfEnabled(bool isDeprecationEnabled)
1083+
{
1084+
var featureFlagService = new Mock<IFeatureFlagService>();
1085+
var packageService = new Mock<IPackageService>();
1086+
var deprecationService = new Mock<IPackageDeprecationService>();
1087+
var controller = CreateController(
1088+
GetConfigurationService(),
1089+
packageService: packageService,
1090+
featureFlagService: featureFlagService,
1091+
deprecationService: deprecationService);
1092+
controller.SetCurrentUser(TestUtility.FakeUser);
1093+
1094+
var id = "Foo";
1095+
var package = new Package()
1096+
{
1097+
PackageRegistration = new PackageRegistration()
1098+
{
1099+
Id = id,
1100+
Owners = new List<User>()
1101+
},
1102+
Version = "01.1.01",
1103+
NormalizedVersion = "1.1.1",
1104+
Title = "A test package!"
1105+
};
1106+
1107+
var packages = new[] { package };
1108+
packageService
1109+
.Setup(p => p.FindPackagesById(id, PackageDeprecationFieldsToInclude.Deprecation))
1110+
.Returns(packages);
1111+
1112+
packageService
1113+
.Setup(p => p.FilterLatestPackage(packages, SemVerLevelKey.SemVer2, true))
1114+
.Returns(package);
1115+
1116+
featureFlagService
1117+
.Setup(x => x.IsManageDeprecationEnabled(TestUtility.FakeUser))
1118+
.Returns(isDeprecationEnabled);
1119+
1120+
deprecationService
1121+
.Setup(x => x.GetDeprecationByPackage(package))
1122+
.Verifiable();
1123+
1124+
// Arrange and Act
1125+
var result = await controller.DisplayPackage(id, version: null);
1126+
1127+
// Assert
1128+
var model = ResultAssert.IsView<DisplayPackageViewModel>(result);
1129+
Assert.Equal(isDeprecationEnabled, model.IsPackageDeprecationEnabled);
1130+
1131+
deprecationService.Verify();
1132+
}
1133+
10791134
[Fact]
10801135
public async Task SplitsLicenseExpressionWhenProvided()
10811136
{

0 commit comments

Comments
 (0)