feat(bulk-report-replies): support nested replies
This commit makes the feature work in nested replies apart from
top-level replies.
In order to achieve this, it modifies MessageInfoRepositoryAdapter so it
can correctly retrieve the message ID for nested replies.
Bug: twpowertools:192
Fixed: twpowertools:237
Change-Id: I6a6a636c87dee5ecf79153d5348804d16b8066b0
diff --git a/src/features/bulkReportReplies/infrastructure/repositories/messageInfo/messageInfo.repository.adapter.test.ts b/src/features/bulkReportReplies/infrastructure/repositories/messageInfo/messageInfo.repository.adapter.test.ts
index d34a4b4..2376682 100644
--- a/src/features/bulkReportReplies/infrastructure/repositories/messageInfo/messageInfo.repository.adapter.test.ts
+++ b/src/features/bulkReportReplies/infrastructure/repositories/messageInfo/messageInfo.repository.adapter.test.ts
@@ -80,17 +80,34 @@
document.body.innerHTML = '';
});
- it('should obtain it from the data-statsid attribute of the closest .scTailwindThreadMessageMessagecardcontent element', () => {
- document.body.innerHTML = `<div class="scTailwindThreadMessageMessagecardcontent" data-focus-item="true" data-focus-group="0" tabindex="-1" data-focus-id="${dummyMessageId}" data-stats-visible-imp="true" data-stats-ve="64" data-stats-id="${dummyMessageId}">
- <div id="element-inside-message"></div>
- </div>`;
- const elementInsideMessage = document.getElementById(
- 'element-inside-message',
- );
+ describe('when treating a top-level reply', () => {
+ it('should obtain it from the data-statsid attribute of the closest .scTailwindThreadMessageMessagecardcontent element', () => {
+ document.body.innerHTML = `<div class="scTailwindThreadMessageMessagecardcontent" data-focus-item="true" data-focus-group="0" tabindex="-1" data-focus-id="${dummyMessageId}" data-stats-visible-imp="true" data-stats-ve="64" data-stats-id="${dummyMessageId}">
+ <div id="element-inside-message"></div>
+ </div>`;
+ const elementInsideMessage = document.getElementById(
+ 'element-inside-message',
+ );
- const result = sut.getInfo(elementInsideMessage);
+ const result = sut.getInfo(elementInsideMessage);
- expect(result.messageId).toBe(dummyMessageId);
+ expect(result.messageId).toBe(dummyMessageId);
+ });
+ });
+
+ describe('when treating a nested reply', () => {
+ it('should obtain it from the data-statsid attribute of the closest .scTailwindThreadMessageCommentcardnested-reply element', () => {
+ document.body.innerHTML = `<div class="scTailwindThreadMessageCommentcardnested-reply" data-focus-item="true" data-focus-group="9" tabindex="0" data-focus-id="${dummyMessageId}" data-stats-visible-imp="true" data-stats-ve="64" data-stats-id="${dummyMessageId}">
+ <div id="element-inside-message"></div>
+ </div>`;
+ const elementInsideMessage = document.getElementById(
+ 'element-inside-message',
+ );
+
+ const result = sut.getInfo(elementInsideMessage);
+
+ expect(result.messageId).toBe(dummyMessageId);
+ });
});
it("should throw an error if the data-statsid attribute doesn't exist", () => {
diff --git a/src/features/bulkReportReplies/infrastructure/repositories/messageInfo/messageInfo.repository.adapter.ts b/src/features/bulkReportReplies/infrastructure/repositories/messageInfo/messageInfo.repository.adapter.ts
index 11b2db5..3115cd2 100644
--- a/src/features/bulkReportReplies/infrastructure/repositories/messageInfo/messageInfo.repository.adapter.ts
+++ b/src/features/bulkReportReplies/infrastructure/repositories/messageInfo/messageInfo.repository.adapter.ts
@@ -30,7 +30,7 @@
private getMessageId(elementInsideMessage: Element) {
const messageElement = elementInsideMessage.closest(
- '.scTailwindThreadMessageMessagecardcontent',
+ '.scTailwindThreadMessageMessagecardcontent, .scTailwindThreadMessageCommentcardnested-reply',
);
if (messageElement === null) {
throw new Error(