Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions scripts/migrations/152-rename-answered-status.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// One-off data migration for #152: rename the "Answered" Status to "Accepted" (CONTEXT.md) and replace
// "suggestion" with "issue" in the Status descriptions the seeder wrote. Issues keep their own copy of their Status
// (IssueStatus), so those copies are updated too. Safe to run more than once.
//
// Run it with mongosh against the app's database, for example:
// mongosh "mongodb://localhost:27017/devissuetracker?authSource=admin" scripts/migrations/152-rename-answered-status.js

// Each seeded Status description, from the exact text the seeder used to write to the text it writes now.
const descriptions = {
Accepted: {
legacy: "The suggestion was accepted and the corresponding item was created.",
current: "The issue was accepted and the corresponding item was created."
},
Watching: {
legacy: "The suggestion is interesting. We are watching to see how much interest there is in it.",
current: "The issue is interesting. We are watching to see how much interest there is in it."
},
Upcoming: {
legacy: "The suggestion was accepted and it will be released soon.",
current: "The issue was accepted and it will be released soon."
},
Dismissed: {
legacy: "The suggestion was not something that we are going to undertake.",
current: "The issue was not something that we are going to undertake."
}
};

const renamed = db.statuses.updateMany(
{ status_name: "Answered" },
{ $set: { status_name: "Accepted" } });
print(`statuses renamed Answered -> Accepted: ${renamed.modifiedCount}`);

const renamedCopies = db.issues.updateMany(
{ "IssueStatus.StatusName": "Answered" },
{ $set: { "IssueStatus.StatusName": "Accepted" } });
print(`issue Status copies renamed Answered -> Accepted: ${renamedCopies.modifiedCount}`);

// Only the exact seeded text is replaced, so a description an Admin wrote or edited is kept as it is.
for (const [name, { legacy, current }] of Object.entries(descriptions)) {
const statuses = db.statuses.updateMany(
{ status_name: name, status_description: legacy },
{ $set: { status_description: current } });
const copies = db.issues.updateMany(
{ "IssueStatus.StatusName": name, "IssueStatus.StatusDescription": legacy },
{ $set: { "IssueStatus.StatusDescription": current } });
print(`${name} descriptions updated: ${statuses.modifiedCount} statuses, ${copies.modifiedCount} issue copies`);
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public static List<StatusModel> GetStatuses()
new StatusModel
{
Id = new BsonObjectId(ObjectId.GenerateNewId()).ToString(),
StatusName = "Answered",
StatusName = "Accepted",
StatusDescription = "The issue was accepted and the corresponding item was created.",
Archived = false
},
Expand All @@ -60,8 +60,8 @@ public static List<StatusModel> GetStatuses()
new StatusModel
{
Id = new BsonObjectId(ObjectId.GenerateNewId()).ToString(),
StatusName = "InWork",
StatusDescription = "The issue was accepted and it is in work.",
StatusName = "Upcoming",
StatusDescription = "The issue was accepted and it will be released soon.",
Archived = false
},
new StatusModel
Expand Down
6 changes: 3 additions & 3 deletions src/CoreBusiness/IssueTracker.CoreBusiness/Enum/Enums.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@ internal enum Category
}

/// <summary>
/// Status enum
/// Status enum: the Status names an Admin can give an approved Issue, as named in CONTEXT.md
/// </summary>
internal enum Status
{
Answered,
Accepted,
Watching,
Dismissed,
InWork
Upcoming
}
}
4 changes: 2 additions & 2 deletions src/UI/IssueTracker.UI/Components/IssueComponent.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ private static string GetIssueStatusCssClass(IssueModel issue)
{
string output = issue.IssueStatus.StatusName switch
{
"Answered" => "issue-entry-status-answered",
"InWork" => "issue-entry-status-inwork",
"Accepted" => "issue-entry-status-accepted",
"Upcoming" => "issue-entry-status-upcoming",
"Watching" => "issue-entry-status-watching",
"Dismissed" => "issue-entry-status-dismissed",
_ => "issue-entry-status-none"
Expand Down
4 changes: 2 additions & 2 deletions src/UI/IssueTracker.UI/Components/IssueComponent.razor.css
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@
letter-spacing: 1.2px;
}

.issue-entry-status-answered {
.issue-entry-status-accepted {
background-color: #b5d43a;
border: 1px #b5d43a solid;
}
Expand All @@ -104,7 +104,7 @@
border: 1px solid #e9354c;
}

.issue-entry-status-inwork {
.issue-entry-status-upcoming {
background-color: #fd7e14;
border: 1px solid #fd7e14;
}
Expand Down
12 changes: 6 additions & 6 deletions src/UI/IssueTracker.UI/Components/SetStatusComponent.razor
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@

@if (string.IsNullOrWhiteSpace(_settingStatus))
{
<button id="answered" @onclick="@(() => _settingStatus = "answered")"
class="btn btn-status btn-status-answered">
answered
<button id="accepted" @onclick="@(() => _settingStatus = "accepted")"
class="btn btn-status btn-status-accepted">
accepted
</button>
<button id="inwork" @onclick="@(() => _settingStatus = "inwork")"
class="btn btn-status btn-status-inwork">
in work
<button id="upcoming" @onclick="@(() => _settingStatus = "upcoming")"
class="btn btn-status btn-status-upcoming">
upcoming
</button>
<button id="watching" @onclick="@(() => _settingStatus = "watching")"
class="btn btn-status btn-status-watching">
Expand Down
4 changes: 2 additions & 2 deletions src/UI/IssueTracker.UI/Components/SetStatusComponent.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ private Task CompleteSetStatus()
{
Issue.IssueStatus = _settingStatus switch
{
"answered" => new BasicStatusModel(_statuses.First(s =>
"accepted" => new BasicStatusModel(_statuses.First(s =>
string.Equals(s.StatusName, _settingStatus, StringComparison.CurrentCultureIgnoreCase))),
"inwork" => new BasicStatusModel(_statuses.First(s =>
"upcoming" => new BasicStatusModel(_statuses.First(s =>
string.Equals(s.StatusName, _settingStatus, StringComparison.CurrentCultureIgnoreCase))),
"watching" => new BasicStatusModel(_statuses.First(s =>
string.Equals(s.StatusName, _settingStatus, StringComparison.CurrentCultureIgnoreCase))),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,11 @@
color: black;
}

.btn-status-answered:hover {
.btn-status-accepted:hover {
color: #b5d43a;
}

.btn-status-inwork:hover {
.btn-status-upcoming:hover {
color: #fd7e14;
}

Expand Down
2 changes: 1 addition & 1 deletion src/UI/IssueTracker.UI/Pages/Create.razor
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
</div>
<div class="input-section">
<label class="form-label fw-bold text-uppercase" for="description">Issue Description</label>
<div class="input-description">Briefly describe your suggestion.</div>
<div class="input-description">Briefly describe your issue.</div>
<InputTextArea class="form-control" id="description" @bind-Value="_issue.Description"/>
</div>
<div class="input-section">
Expand Down
10 changes: 5 additions & 5 deletions src/UI/IssueTracker.UI/Pages/SampleData.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -112,28 +112,28 @@ private async Task CreateStatuses()

StatusModel item = new()
{
StatusName = "Answered",
StatusDescription = "The suggestion was accepted and the corresponding item was created."
StatusName = "Accepted",
StatusDescription = "The issue was accepted and the corresponding item was created."
};
await StatusService.CreateStatus(item);

item = new StatusModel
{
StatusName = "Watching",
StatusDescription =
"The suggestion is interesting. We are watching to see how much interest there is in it."
"The issue is interesting. We are watching to see how much interest there is in it."
};
await StatusService.CreateStatus(item);

item = new StatusModel
{
StatusName = "Upcoming", StatusDescription = "The suggestion was accepted and it will be released soon."
StatusName = "Upcoming", StatusDescription = "The issue was accepted and it will be released soon."
};
await StatusService.CreateStatus(item);

item = new StatusModel
{
StatusName = "Dismissed", StatusDescription = "The suggestion was not something that we are going to undertake."
StatusName = "Dismissed", StatusDescription = "The issue was not something that we are going to undertake."
};
await StatusService.CreateStatus(item);

Expand Down
8 changes: 4 additions & 4 deletions src/UI/IssueTracker.UI/wwwroot/css/site.css
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,7 @@ a:hover,
letter-spacing: 1.2px;
}

.issue-profile-status-answered {
.issue-profile-status-accepted {
background-color: #b5d43a;
border: 1px #b5d43a solid;
}
Expand All @@ -306,7 +306,7 @@ a:hover,
border: 1px solid #e9354c;
}

.issue-profile-status-inwork {
.issue-profile-status-upcoming {
background-color: #fd7e14;
border: 1px solid #fd7e14;
}
Expand Down Expand Up @@ -483,7 +483,7 @@ a:hover,
margin-top: 20px;
}

.issue-detail-status-answered {
.issue-detail-status-accepted {
background-color: #b5d43a;
border-top-left-radius: 15px;
border-bottom-left-radius: 15px;
Expand All @@ -495,7 +495,7 @@ a:hover,
border-bottom-left-radius: 15px;
}

.issue-detail-status-inwork {
.issue-detail-status-upcoming {
background-color: #fd7e14;
border-top-left-radius: 15px;
border-bottom-left-radius: 15px;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,8 @@ public void IssueComponent_With_NotAdmin_Should_NotDisplaysArchiveButton_Test()
<div diff:ignore></div>
</div>
</div>
<div class="issue-entry-status issue-entry-status-inwork">
<div class="issue-text-status">InWork</div>
<div class="issue-entry-status issue-entry-status-upcoming">
<div class="issue-text-status">Upcoming</div>
</div>
</div>
""";
Expand Down Expand Up @@ -125,8 +125,8 @@ public void IssueComponent_GetIssueCategoryCssClass_Should_Return_ValidCss_Test(
}

[Theory]
[InlineData("Answered", "issue-entry-status issue-entry-status-answered")]
[InlineData("InWork", "issue-entry-status issue-entry-status-inwork")]
[InlineData("Accepted", "issue-entry-status issue-entry-status-accepted")]
[InlineData("Upcoming", "issue-entry-status issue-entry-status-upcoming")]
[InlineData("Watching", "issue-entry-status issue-entry-status-watching")]
[InlineData("Dismissed", "issue-entry-status issue-entry-status-dismissed")]
[InlineData("", "issue-entry-status issue-entry-status-none")]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,11 @@ public void SetStatusComponent_With_Admin_Should_DisplayTheStatusForm_Test()
<div class="issue-container">
<div class="status-layout flex-container">
<button class="btn btn-status btn-status-status fw-bold">Set Status</button>
<button id="answered" class="btn btn-status btn-status-answered">
answered
<button id="accepted" class="btn btn-status btn-status-accepted">
accepted
</button>
<button id="inwork" class="btn btn-status btn-status-inwork">
in work
<button id="upcoming" class="btn btn-status btn-status-upcoming">
upcoming
</button>
<button id="watching" class="btn btn-status btn-status-watching">
watching
Expand All @@ -99,8 +99,8 @@ in work
}

[Theory(DisplayName = "SetStatusComponent work setting the statuses")]
[InlineData("#answered", "Answered")]
[InlineData("#inwork", "InWork")]
[InlineData("#accepted", "Accepted")]
[InlineData("#upcoming", "Upcoming")]
[InlineData("#watching", "Watching")]
[InlineData("#dismissed", "Dismissed")]
public void SetupStatusComponent_With_Statuses_Should_AllowSettingEachStatus_TestAsync(
Expand Down
4 changes: 2 additions & 2 deletions tests/IssueTracker.UI.Tests.Unit/Pages/CommentTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,8 @@ Add Comment
<div diff:ignore></div>
</div>
</div>
<div class="issue-entry-status issue-entry-status-inwork">
<div class="issue-text-status">InWork</div>
<div class="issue-entry-status issue-entry-status-upcoming">
<div class="issue-text-status">Upcoming</div>
</div>
</div>
<div class="comment-item-container">
Expand Down
2 changes: 1 addition & 1 deletion tests/IssueTracker.UI.Tests.Unit/Pages/CreateTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ public void Create_With_AuthorizedUser_Should_DisplayPage_Test()
</div>
<div class="input-section">
<label class="form-label fw-bold text-uppercase" for="description">Issue Description</label>
<div class="input-description">Briefly describe your suggestion.</div>
<div class="input-description">Briefly describe your issue.</div>
<textarea id="description" name="_issue.Description" class="form-control valid"></textarea>
</div>
<div class="input-section">
Expand Down
24 changes: 12 additions & 12 deletions tests/IssueTracker.UI.Tests.Unit/Pages/DetailsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -197,11 +197,11 @@ public void Details_With_AdminUser_Should_BeAbleToSetStatus_Test()
<div class="issue-container">
<div class="status-layout flex-container">
<button class="btn btn-status btn-status-status fw-bold">Set Status</button>
<button id="answered" class="btn btn-status btn-status-answered">
answered
<button id="accepted" class="btn btn-status btn-status-accepted">
accepted
</button>
<button id="inwork" class="btn btn-status btn-status-inwork">
in work
<button id="upcoming" class="btn btn-status btn-status-upcoming">
upcoming
</button>
<button id="watching" class="btn btn-status btn-status-watching">
watching
Expand Down Expand Up @@ -244,9 +244,9 @@ public void Details_With_AddCommentClick_Should_NavigateToCommentPage_Test()
}

[Theory(DisplayName = "Validate Status Styles")]
[InlineData(0, "issue-entry-status-answered")]
[InlineData(0, "issue-entry-status-accepted")]
[InlineData(1, "issue-entry-status-watching")]
[InlineData(2, "issue-entry-status-inwork")]
[InlineData(2, "issue-entry-status-upcoming")]
[InlineData(3, "issue-entry-status-dismissed")]
[InlineData(4, "issue-entry-status-none")]
public void Details_With_ValidIssue_Should_ShowStatusStyle_Test(int index, string expected)
Expand Down Expand Up @@ -368,8 +368,8 @@ public void Details_With_AttemptOfCommentAuthorToVote_Should_Fail_Test()

[Theory(DisplayName = "Update Status")]
[InlineData("watching")]
[InlineData("answered")]
[InlineData("inwork")]
[InlineData("accepted")]
[InlineData("upcoming")]
[InlineData("dismissed")]
public void Details_With_WhenStatusIsClicked_Should_ShouldSaveNewStatus_Test(string statusId)
{
Expand All @@ -381,8 +381,8 @@ public void Details_With_WhenStatusIsClicked_Should_ShouldSaveNewStatus_Test(str

switch (statusId)
{
case "answered":
cut.Find("#answered").Click();
case "accepted":
cut.Find("#accepted").Click();
cut.Find("#confirm-status-change").Click();
break;
case "watching":
Expand All @@ -393,8 +393,8 @@ public void Details_With_WhenStatusIsClicked_Should_ShouldSaveNewStatus_Test(str
cut.Find("#dismissed").Click();
cut.Find("#confirm-status-change").Click();
break;
case "inwork":
cut.Find("#inwork").Click();
case "upcoming":
cut.Find("#upcoming").Click();
cut.Find("#confirm-status-change").Click();
break;
}
Expand Down
4 changes: 2 additions & 2 deletions tests/IssueTracker.UI.Tests.Unit/Pages/IndexTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -233,9 +233,9 @@ public async Task Index_With_SelectingACategory_Should_FilterIssues_Test(int ind

[Theory]
[InlineData(0, "All")]
[InlineData(1, "Answered")]
[InlineData(1, "Accepted")]
[InlineData(2, "Watching")]
[InlineData(3, "InWork")]
[InlineData(3, "Upcoming")]
[InlineData(4, "Dismissed")]
public async Task Index_With_SelectingAStatus_Should_FilterTheIssues_TestAsync(int index, string expected)
{
Expand Down
Loading
Loading