diff --git a/ts/features/messages/components/MessageDetail/MessageDetailsAttachmentItem.tsx b/ts/features/messages/components/MessageDetail/MessageDetailsAttachmentItem.tsx
index 0d16ddd59f0..7bc16162b20 100644
--- a/ts/features/messages/components/MessageDetail/MessageDetailsAttachmentItem.tsx
+++ b/ts/features/messages/components/MessageDetail/MessageDetailsAttachmentItem.tsx
@@ -3,12 +3,17 @@ import I18n from "i18next";
import { ServiceId } from "../../../../../definitions/backend/ServiceId";
import { ThirdPartyAttachment } from "../../../../../definitions/backend/ThirdPartyAttachment";
import { useAttachmentDownload } from "../../hooks/useAttachmentDownload";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../../pushNotifications/analytics";
export type MessageDetailsAttachmentItemProps = {
attachment: ThirdPartyAttachment;
bottomSpacer?: boolean;
disabled?: boolean;
- isPN?: boolean;
+ sendOpeningSource: SendOpeningSource;
+ sendUserType: SendUserType;
messageId: string;
onPreNavigate?: () => void;
serviceId: ServiceId;
@@ -18,7 +23,8 @@ export const MessageDetailsAttachmentItem = ({
attachment,
bottomSpacer,
disabled = false,
- isPN = false,
+ sendOpeningSource,
+ sendUserType,
messageId,
onPreNavigate = undefined,
serviceId
@@ -27,7 +33,8 @@ export const MessageDetailsAttachmentItem = ({
useAttachmentDownload(
messageId,
attachment,
- isPN,
+ sendOpeningSource,
+ sendUserType,
serviceId,
onPreNavigate
);
diff --git a/ts/features/messages/components/MessageDetail/MessageDetailsAttachments.tsx b/ts/features/messages/components/MessageDetail/MessageDetailsAttachments.tsx
index f419ea290e0..58efa173e65 100644
--- a/ts/features/messages/components/MessageDetail/MessageDetailsAttachments.tsx
+++ b/ts/features/messages/components/MessageDetail/MessageDetailsAttachments.tsx
@@ -5,27 +5,34 @@ import { ServiceId } from "../../../../../definitions/backend/ServiceId";
import { useIOSelector } from "../../../../store/hooks";
import { thirdPartyMessageAttachments } from "../../store/reducers/thirdPartyById";
import { ATTACHMENT_CATEGORY } from "../../types/attachmentCategory";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../../pushNotifications/analytics";
import { MessageDetailsAttachmentItem } from "./MessageDetailsAttachmentItem";
export type MessageDetailsAttachmentsProps = {
banner?: ReactNode;
disabled?: boolean;
- isPN?: boolean;
messageId: string;
serviceId: ServiceId;
+ sendOpeningSource: SendOpeningSource;
+ sendUserType: SendUserType;
};
export const MessageDetailsAttachments = ({
banner,
disabled = false,
- isPN = false,
messageId,
- serviceId
+ serviceId,
+ sendOpeningSource,
+ sendUserType
}: MessageDetailsAttachmentsProps) => {
const originalAttachments = useIOSelector(state =>
thirdPartyMessageAttachments(state, messageId)
);
- const attachments = isPN
+ const isSend = sendOpeningSource !== "not_set";
+ const attachments = isSend
? originalAttachments.filter(
attachment => attachment.category !== ATTACHMENT_CATEGORY.F24
)
@@ -47,7 +54,8 @@ export const MessageDetailsAttachments = ({
>
);
diff --git a/ts/features/messages/components/MessageDetail/MessagePaymentItem.tsx b/ts/features/messages/components/MessageDetail/MessagePaymentItem.tsx
index 2a3a5dfa920..693ca74a290 100644
--- a/ts/features/messages/components/MessageDetail/MessagePaymentItem.tsx
+++ b/ts/features/messages/components/MessageDetail/MessagePaymentItem.tsx
@@ -41,6 +41,10 @@ import { formatPaymentNoticeNumber } from "../../../payments/common/utils";
import { ServiceId } from "../../../../../definitions/backend/ServiceId";
import { trackPNPaymentStart } from "../../../pn/analytics";
import { formatAndValidateDueDate } from "../../../payments/checkout/utils";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../../pushNotifications/analytics";
import {
computeAndTrackPaymentStart,
shouldUpdatePaymentUponReturning
@@ -55,6 +59,8 @@ type MessagePaymentItemProps = {
noticeNumber: string;
paymentAmount?: PaymentAmount;
rptId: string;
+ sendOpeningSource: SendOpeningSource;
+ sendUserType: SendUserType;
serviceId: ServiceId;
willNavigateToPayment?: () => void;
};
@@ -175,6 +181,8 @@ export const MessagePaymentItem = ({
noSpaceOnTop = false,
noticeNumber,
rptId,
+ sendOpeningSource,
+ sendUserType,
serviceId,
willNavigateToPayment = undefined
}: MessagePaymentItemProps) => {
@@ -205,7 +213,7 @@ export const MessagePaymentItem = ({
dispatch,
() => {
if (isPNPayment) {
- trackPNPaymentStart();
+ trackPNPaymentStart(sendOpeningSource, sendUserType);
} else {
computeAndTrackPaymentStart(serviceId, store.getState());
}
@@ -219,6 +227,8 @@ export const MessagePaymentItem = ({
isPNPayment,
paymentStatusForUI,
rptId,
+ sendOpeningSource,
+ sendUserType,
serviceId,
store,
toast,
diff --git a/ts/features/messages/components/MessageDetail/__mocks__/MessageDetailsAttachmentItem.tsx b/ts/features/messages/components/MessageDetail/__mocks__/MessageDetailsAttachmentItem.tsx
index ced2f5c54a2..7e7dbd48de4 100644
--- a/ts/features/messages/components/MessageDetail/__mocks__/MessageDetailsAttachmentItem.tsx
+++ b/ts/features/messages/components/MessageDetail/__mocks__/MessageDetailsAttachmentItem.tsx
@@ -5,7 +5,8 @@ export const MessageDetailsAttachmentItem = ({
attachment,
bottomSpacer,
disabled,
- isPN,
+ sendOpeningSource,
+ sendUserType,
messageId,
onPreNavigate,
serviceId
@@ -21,7 +22,8 @@ export const MessageDetailsAttachmentItem = ({
{`Has${bottomSpacer ? "" : " no"} bottom spacer`}
{`Is ${disabled ? "" : "not "}disabled`}
- {`Is ${isPN ? "" : "not "}SEND`}
+ {`Send Opening Source ${sendOpeningSource}`}
+ {`Send User Type ${sendUserType}`}
{`Message Id: ${messageId}`}
{`Service Id: ${serviceId}`}
diff --git a/ts/features/messages/components/MessageDetail/__mocks__/MessageDetailsAttachments.tsx b/ts/features/messages/components/MessageDetail/__mocks__/MessageDetailsAttachments.tsx
index 2409e171897..2f192ec1c1c 100644
--- a/ts/features/messages/components/MessageDetail/__mocks__/MessageDetailsAttachments.tsx
+++ b/ts/features/messages/components/MessageDetail/__mocks__/MessageDetailsAttachments.tsx
@@ -4,15 +4,17 @@ import { MessageDetailsAttachmentsProps } from "../MessageDetailsAttachments";
export const MessageDetailsAttachments = ({
banner,
disabled,
- isPN,
messageId,
- serviceId
+ serviceId,
+ sendOpeningSource,
+ sendUserType
}: MessageDetailsAttachmentsProps) => (
<>
Mock MessageDetailsAttachments
{`${banner ? "Has" : "Does not have"} Banner`}
{`Is ${disabled ? "" : "not "}disabled`}
- {`Is ${isPN ? "" : "not "}SEND`}
+ {`Send Opening Source ${sendOpeningSource}`}
+ {`Send User Type ${sendUserType}`}
{`Message Id: ${messageId}`}
{`Service Id: ${serviceId}`}
>
diff --git a/ts/features/messages/components/MessageDetail/__tests__/MessageDetailsAttachmentItem.test.tsx b/ts/features/messages/components/MessageDetail/__tests__/MessageDetailsAttachmentItem.test.tsx
index 446e5e60eb4..f5672c06533 100644
--- a/ts/features/messages/components/MessageDetail/__tests__/MessageDetailsAttachmentItem.test.tsx
+++ b/ts/features/messages/components/MessageDetail/__tests__/MessageDetailsAttachmentItem.test.tsx
@@ -6,85 +6,79 @@ import { renderScreenWithNavigationStoreContext } from "../../../../../utils/tes
import { MessageDetailsAttachmentItem } from "../MessageDetailsAttachmentItem";
import { ThirdPartyAttachment } from "../../../../../../definitions/backend/ThirdPartyAttachment";
import { ServiceId } from "../../../../../../definitions/backend/ServiceId";
+import { MESSAGES_ROUTES } from "../../../navigation/routes";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../../../pushNotifications/analytics";
-describe("MessageDetailsAttachmentItem", () => {
- it("Should match snapshot with required parameters", () => {
- const messageId = "01HNWXJG52YS359GWSYSRK2BWC";
- const serviceId = "01HNWXKWAGWPHV7VGMQ21EZPSA" as ServiceId;
- const thirdPartyAttachment = {
- id: "1",
- url: "https://invalid.url",
- content_type: "application/pdf",
- name: "A PDF File",
- category: "DOCUMENT"
- } as ThirdPartyAttachment;
+const messageId = "01HNWXJG52YS359GWSYSRK2BWC";
+const serviceId = "01HNWXKWAGWPHV7VGMQ21EZPSA" as ServiceId;
+const thirdPartyAttachments: ReadonlyArray = [
+ {
+ id: "1",
+ url: "https://invalid.url",
+ content_type: "application/pdf",
+ category: "DOCUMENT"
+ } as ThirdPartyAttachment,
+ {
+ id: "1",
+ url: "https://invalid.url",
+ content_type: "application/pdf",
+ name: "A PDF File",
+ category: "DOCUMENT"
+ } as ThirdPartyAttachment
+];
- const component = renderScreen(thirdPartyAttachment, messageId, serviceId);
- expect(component.toJSON()).toMatchSnapshot();
- });
- it("Should match snapshot with all parameters", () => {
- const messageId = "01HNWXJG52YS359GWSYSRK2BWC";
- const thirdPartyAttachment = {
- id: "1",
- url: "https://invalid.url",
- content_type: "application/pdf",
- name: "A PDF File",
- category: "DOCUMENT"
- } as ThirdPartyAttachment;
- const serviceId = "01HNWXKWAGWPHV7VGMQ21EZPSA" as ServiceId;
-
- const component = renderScreen(
- thirdPartyAttachment,
- messageId,
- serviceId,
- true,
- false,
- true
- );
- expect(component.toJSON()).toMatchSnapshot();
- });
- it("Should match snapshot when the attachment has no name", () => {
- const messageId = "01HNWXJG52YS359GWSYSRK2BWC";
- const serviceId = "01HNWXKWAGWPHV7VGMQ21EZPSA" as ServiceId;
- const thirdPartyAttachment = {
- id: "1",
- url: "https://invalid.url",
- content_type: "application/pdf",
- category: "DOCUMENT"
- } as ThirdPartyAttachment;
-
- const component = renderScreen(thirdPartyAttachment, messageId, serviceId);
- expect(component.toJSON()).toMatchSnapshot();
- });
- it("Should match snapshot when is fetching the attachment", () => {
- const messageId = "01HNWXJG52YS359GWSYSRK2BWC";
- const serviceId = "01HNWXKWAGWPHV7VGMQ21EZPSA" as ServiceId;
- const thirdPartyAttachment = {
- id: "1",
- url: "https://invalid.url",
- content_type: "application/pdf",
- category: "DOCUMENT"
- } as ThirdPartyAttachment;
+const sendOpeningSources: ReadonlyArray = [
+ "aar",
+ "message",
+ "not_set"
+];
+const sendUserTypes: ReadonlyArray = [
+ "mandatory",
+ "not_set",
+ "recipient"
+];
- const component = renderScreen(
- thirdPartyAttachment,
- messageId,
- serviceId,
- undefined,
- true,
- false
- );
- expect(component.toJSON()).toMatchSnapshot();
+thirdPartyAttachments.forEach(thirdPartyAttachment => {
+ // eslint-disable-next-line sonarjs/cognitive-complexity
+ [false, true].forEach(isFetching => {
+ [undefined, false, true].forEach(showBottomSpacer => {
+ [undefined, false, true].forEach(isDisabled => {
+ sendOpeningSources.forEach(sendOpeningSource => {
+ sendUserTypes.forEach(sendUserType => {
+ it(`should match snapshot (attachment ${
+ thirdPartyAttachment.name ? "with" : "without"
+ } name, ${isFetching ? "" : "not "}fetching, ${
+ showBottomSpacer ? "with" : "without"
+ } bottom spacer, ${
+ isDisabled ? "disabled" : "enabled"
+ }, opening source ${sendOpeningSource}, user type ${sendUserType})`, () => {
+ const component = renderScreen(
+ thirdPartyAttachment,
+ isFetching,
+ showBottomSpacer,
+ isDisabled,
+ sendOpeningSource,
+ sendUserType
+ );
+ expect(component.toJSON()).toMatchSnapshot();
+ });
+ });
+ });
+ });
+ });
});
});
const renderScreen = (
attachment: ThirdPartyAttachment,
- messageId: string,
- serviceId: ServiceId,
- bottomSpacer?: boolean,
- isFetching?: boolean,
- disabled?: boolean
+ isFetching: boolean,
+ bottomSpacer: boolean | undefined,
+ disabled: boolean | undefined,
+ sendOpeningSource: SendOpeningSource,
+ sendUserType: SendUserType
) => {
const initialState = appReducer(undefined, applicationChangeState("active"));
const finalState = appReducer(
@@ -112,9 +106,11 @@ const renderScreen = (
disabled={disabled}
messageId={messageId}
serviceId={serviceId}
+ sendOpeningSource={sendOpeningSource}
+ sendUserType={sendUserType}
/>
),
- "DUMMY",
+ MESSAGES_ROUTES.MESSAGE_DETAIL,
{},
store
);
diff --git a/ts/features/messages/components/MessageDetail/__tests__/MessageDetailsAttachments.test.tsx b/ts/features/messages/components/MessageDetail/__tests__/MessageDetailsAttachments.test.tsx
index 9926d0289f4..bc9b73bfe32 100644
--- a/ts/features/messages/components/MessageDetail/__tests__/MessageDetailsAttachments.test.tsx
+++ b/ts/features/messages/components/MessageDetail/__tests__/MessageDetailsAttachments.test.tsx
@@ -10,6 +10,10 @@ import { renderScreenWithNavigationStoreContext } from "../../../../../utils/tes
import { MessageDetailsAttachments } from "../MessageDetailsAttachments";
import { MESSAGES_ROUTES } from "../../../navigation/routes";
import * as thirdPartySelectors from "../../../store/reducers/thirdPartyById";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../../../pushNotifications/analytics";
jest.mock("../MessageDetailsAttachmentItem");
@@ -58,28 +62,42 @@ describe("MessageDetailsAttachments", () => {
]
];
+ const sendOpeningSources: ReadonlyArray = [
+ "aar",
+ "message",
+ "not_set"
+ ];
+ const sendUserTypes: ReadonlyArray = [
+ "mandatory",
+ "not_set",
+ "recipient"
+ ];
+
const reactComponent = {"A banner"};
attachments.forEach(attachmentArray =>
[undefined, reactComponent].forEach(banner =>
[undefined, false, true].forEach(disabled =>
- [undefined, false, true].forEach(isSend =>
- it(`should match snapshot (${
- attachmentArray.length
- } attachments) (has ${
- banner ? "" : "no "
- }banner) (disabled: ${disabled}) (isSend: ${isSend})`, () => {
- jest
- .spyOn(thirdPartySelectors, "thirdPartyMessageAttachments")
- .mockImplementation((_state, _messageId) => attachmentArray);
- const component = renderScreen(
- messageId,
- serviceId,
- disabled,
- isSend,
- banner
- );
- expect(component.toJSON()).toMatchSnapshot();
- })
+ sendOpeningSources.forEach(sendOpeningSource =>
+ sendUserTypes.forEach(sendUserType =>
+ it(`should match snapshot (${
+ attachmentArray.length
+ } attachments) (has ${
+ banner ? "" : "no "
+ }banner) (disabled: ${disabled}) (opening source: ${sendOpeningSource} user type: ${sendUserType})`, () => {
+ jest
+ .spyOn(thirdPartySelectors, "thirdPartyMessageAttachments")
+ .mockImplementation((_state, _messageId) => attachmentArray);
+ const component = renderScreen(
+ messageId,
+ serviceId,
+ disabled,
+ sendOpeningSource,
+ sendUserType,
+ banner
+ );
+ expect(component.toJSON()).toMatchSnapshot();
+ })
+ )
)
)
)
@@ -90,7 +108,8 @@ const renderScreen = (
messageId: string,
serviceId: ServiceId,
disabled: boolean | undefined,
- isPN: boolean | undefined,
+ sendOpeningSource: SendOpeningSource,
+ sendUserType: SendUserType,
banner: ReactNode | undefined
) => {
const initialState = appReducer(undefined, applicationChangeState("active"));
@@ -104,7 +123,8 @@ const renderScreen = (
banner={banner}
messageId={messageId}
disabled={disabled}
- isPN={isPN}
+ sendOpeningSource={sendOpeningSource}
+ sendUserType={sendUserType}
serviceId={serviceId}
/>
),
diff --git a/ts/features/messages/components/MessageDetail/__tests__/MessagePaymentItem.test.tsx b/ts/features/messages/components/MessageDetail/__tests__/MessagePaymentItem.test.tsx
index 30d2c17bf71..69a01def7c4 100644
--- a/ts/features/messages/components/MessageDetail/__tests__/MessagePaymentItem.test.tsx
+++ b/ts/features/messages/components/MessageDetail/__tests__/MessagePaymentItem.test.tsx
@@ -146,6 +146,8 @@ const renderComponent = (
rptId={rptId}
noticeNumber={payment.noticeCode}
serviceId={"01J5X34VA7H1726CQNTG14GNDH" as ServiceId}
+ sendOpeningSource={"not_set"}
+ sendUserType={"not_set"}
/>
),
"DUMMY",
diff --git a/ts/features/messages/components/MessageDetail/__tests__/__snapshots__/MessageDetailsAttachmentItem.test.tsx.snap b/ts/features/messages/components/MessageDetail/__tests__/__snapshots__/MessageDetailsAttachmentItem.test.tsx.snap
index 593abfe1368..4b0884fc1a2 100644
--- a/ts/features/messages/components/MessageDetail/__tests__/__snapshots__/MessageDetailsAttachmentItem.test.tsx.snap
+++ b/ts/features/messages/components/MessageDetail/__tests__/__snapshots__/MessageDetailsAttachmentItem.test.tsx.snap
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`MessageDetailsAttachmentItem Should match snapshot when is fetching the attachment 1`] = `
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, disabled, opening source aar, user type mandatory) 1`] = `
- DUMMY
+ MESSAGE_DETAIL
- 1
+ A PDF File
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, disabled, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, disabled, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, disabled, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, disabled, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, disabled, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, disabled, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, disabled, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, disabled, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, enabled, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, enabled, opening source aar, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, enabled, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, enabled, opening source aar, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, enabled, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, enabled, opening source aar, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, enabled, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, enabled, opening source message, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, enabled, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, enabled, opening source message, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, enabled, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, enabled, opening source message, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, enabled, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, enabled, opening source not_set, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, enabled, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, enabled, opening source not_set, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, enabled, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, with bottom spacer, enabled, opening source not_set, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, disabled, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, disabled, opening source aar, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, disabled, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, disabled, opening source aar, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, disabled, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, disabled, opening source aar, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, disabled, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, disabled, opening source message, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, disabled, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, disabled, opening source message, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, disabled, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, disabled, opening source message, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, disabled, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, disabled, opening source not_set, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, disabled, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, disabled, opening source not_set, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, disabled, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, disabled, opening source not_set, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source aar, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source aar, user type mandatory) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source aar, user type mandatory) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source aar, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source aar, user type not_set) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source aar, user type not_set) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source aar, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source aar, user type recipient) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source aar, user type recipient) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source message, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source message, user type mandatory) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source message, user type mandatory) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source message, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source message, user type not_set) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source message, user type not_set) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source message, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source message, user type recipient) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source message, user type recipient) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source not_set, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source not_set, user type mandatory) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source not_set, user type mandatory) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source not_set, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source not_set, user type not_set) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source not_set, user type not_set) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source not_set, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source not_set, user type recipient) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, fetching, without bottom spacer, enabled, opening source not_set, user type recipient) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, disabled, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, disabled, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, disabled, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, disabled, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, disabled, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, disabled, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, disabled, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, disabled, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, disabled, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, enabled, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, enabled, opening source aar, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, enabled, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, enabled, opening source aar, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, enabled, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, enabled, opening source aar, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, enabled, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, enabled, opening source message, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, enabled, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, enabled, opening source message, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, enabled, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, enabled, opening source message, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, enabled, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, enabled, opening source not_set, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, enabled, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, enabled, opening source not_set, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, enabled, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, with bottom spacer, enabled, opening source not_set, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, disabled, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, disabled, opening source aar, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, disabled, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, disabled, opening source aar, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, disabled, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, disabled, opening source aar, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, disabled, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, disabled, opening source message, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, disabled, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, disabled, opening source message, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, disabled, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, disabled, opening source message, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, disabled, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, disabled, opening source not_set, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, disabled, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, disabled, opening source not_set, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, disabled, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, disabled, opening source not_set, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source aar, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source aar, user type mandatory) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source aar, user type mandatory) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source aar, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source aar, user type not_set) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source aar, user type not_set) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source aar, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source aar, user type recipient) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source aar, user type recipient) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source message, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source message, user type mandatory) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source message, user type mandatory) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source message, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source message, user type not_set) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source message, user type not_set) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source message, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source message, user type recipient) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source message, user type recipient) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source not_set, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source not_set, user type mandatory) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source not_set, user type mandatory) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source not_set, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source not_set, user type not_set) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source not_set, user type not_set) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source not_set, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source not_set, user type recipient) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment with name, not fetching, without bottom spacer, enabled, opening source not_set, user type recipient) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A PDF File
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, disabled, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, disabled, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, disabled, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, disabled, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, disabled, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, disabled, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, disabled, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, disabled, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, disabled, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, enabled, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, enabled, opening source aar, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, enabled, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, enabled, opening source aar, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, enabled, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, enabled, opening source aar, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, enabled, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, enabled, opening source message, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, enabled, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, enabled, opening source message, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, enabled, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, enabled, opening source message, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, enabled, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, enabled, opening source not_set, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, enabled, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, enabled, opening source not_set, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, enabled, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, with bottom spacer, enabled, opening source not_set, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, disabled, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, disabled, opening source aar, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, disabled, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, disabled, opening source aar, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, disabled, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, disabled, opening source aar, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, disabled, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, disabled, opening source message, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, disabled, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, disabled, opening source message, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, disabled, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, disabled, opening source message, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, disabled, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, disabled, opening source not_set, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, disabled, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, disabled, opening source not_set, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, disabled, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, disabled, opening source not_set, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source aar, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source aar, user type mandatory) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source aar, user type mandatory) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source aar, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source aar, user type not_set) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source aar, user type not_set) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source aar, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source aar, user type recipient) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source aar, user type recipient) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source message, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source message, user type mandatory) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source message, user type mandatory) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source message, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source message, user type not_set) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source message, user type not_set) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source message, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source message, user type recipient) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source message, user type recipient) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source not_set, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source not_set, user type mandatory) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source not_set, user type mandatory) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source not_set, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source not_set, user type not_set) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source not_set, user type not_set) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source not_set, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source not_set, user type recipient) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, fetching, without bottom spacer, enabled, opening source not_set, user type recipient) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, disabled, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, disabled, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, disabled, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, disabled, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, disabled, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, disabled, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, disabled, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, disabled, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, disabled, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, enabled, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, enabled, opening source aar, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, enabled, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, enabled, opening source aar, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, enabled, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, enabled, opening source aar, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, enabled, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, enabled, opening source message, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, enabled, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, enabled, opening source message, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, enabled, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, enabled, opening source message, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, enabled, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, enabled, opening source not_set, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, enabled, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, enabled, opening source not_set, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, enabled, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, with bottom spacer, enabled, opening source not_set, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, disabled, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, disabled, opening source aar, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, disabled, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, disabled, opening source aar, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, disabled, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, disabled, opening source aar, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, disabled, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, disabled, opening source message, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, disabled, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, disabled, opening source message, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, disabled, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, disabled, opening source message, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, disabled, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, disabled, opening source not_set, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, disabled, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, disabled, opening source not_set, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, disabled, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, disabled, opening source not_set, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source aar, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source aar, user type mandatory) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source aar, user type mandatory) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source aar, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source aar, user type not_set) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source aar, user type not_set) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source aar, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source aar, user type recipient) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source aar, user type recipient) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source message, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source message, user type mandatory) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source message, user type mandatory) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source message, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source message, user type not_set) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source message, user type not_set) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source message, user type recipient) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source message, user type recipient) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source message, user type recipient) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source not_set, user type mandatory) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source not_set, user type mandatory) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source not_set, user type mandatory) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source not_set, user type not_set) 2`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source not_set, user type not_set) 3`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source not_set, user type not_set) 4`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
@@ -672,7 +201957,7 @@ exports[`MessageDetailsAttachmentItem Should match snapshot when is fetching the
`;
-exports[`MessageDetailsAttachmentItem Should match snapshot when the attachment has no name 1`] = `
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source not_set, user type recipient) 2`] = `
- DUMMY
+ MESSAGE_DETAIL
`;
-exports[`MessageDetailsAttachmentItem Should match snapshot with all parameters 1`] = `
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source not_set, user type recipient) 3`] = `
- DUMMY
+ MESSAGE_DETAIL
-
- A PDF File
-
+ 1
+
+
- PDF
-
+
+ PDF
+
+
-
-
-
-
-
-
+ >
+
+
+
+
-
@@ -1827,7 +203147,7 @@ exports[`MessageDetailsAttachmentItem Should match snapshot with all parameters
`;
-exports[`MessageDetailsAttachmentItem Should match snapshot with required parameters 1`] = `
+exports[`should match snapshot (attachment without name, not fetching, without bottom spacer, enabled, opening source not_set, user type recipient) 4`] = `
- DUMMY
+ MESSAGE_DETAIL
- A PDF File
+ 1
`;
-exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: false) (isSend: true) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: false) (opening source: aar user type: not_set) 1`] = `
`;
-exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: false) (isSend: undefined) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: false) (opening source: aar user type: recipient) 1`] = `
`;
-exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: true) (isSend: false) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: false) (opening source: message user type: mandatory) 1`] = `
`;
-exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: true) (isSend: true) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: false) (opening source: message user type: not_set) 1`] = `
`;
-exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: true) (isSend: undefined) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: false) (opening source: message user type: recipient) 1`] = `
`;
-exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: undefined) (isSend: false) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: false) (opening source: not_set user type: mandatory) 1`] = `
`;
-exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: undefined) (isSend: true) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: false) (opening source: not_set user type: not_set) 1`] = `
`;
-exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: undefined) (isSend: undefined) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: false) (opening source: not_set user type: recipient) 1`] = `
`;
-exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: false) (isSend: false) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: true) (opening source: aar user type: mandatory) 1`] = `
`;
-exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: false) (isSend: true) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: true) (opening source: aar user type: not_set) 1`] = `
`;
-exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: false) (isSend: undefined) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: true) (opening source: aar user type: recipient) 1`] = `
`;
-exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: true) (isSend: false) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: true) (opening source: message user type: mandatory) 1`] = `
`;
-exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: true) (isSend: true) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: true) (opening source: message user type: not_set) 1`] = `
`;
-exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: true) (isSend: undefined) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: true) (opening source: message user type: recipient) 1`] = `
`;
-exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: undefined) (isSend: false) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: true) (opening source: not_set user type: mandatory) 1`] = `
`;
-exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: undefined) (isSend: true) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: true) (opening source: not_set user type: not_set) 1`] = `
`;
-exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: undefined) (isSend: undefined) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: true) (opening source: not_set user type: recipient) 1`] = `
`;
-exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: false) (isSend: false) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: undefined) (opening source: aar user type: mandatory) 1`] = `
-
-
-
-
-
- Allegati
-
-
-
-
-
-
- A banner
-
-
- Mock MessageDetailsAttachmentItem
-
-
-
- Attachment category: undefined
-
-
- Attachment content-type: undefined
-
-
- Attachment id: 1
-
-
- Attachment name: undefined
-
-
- Attachment url: https://an.url/path
-
-
-
- Has no bottom spacer
-
-
- Is not disabled
-
-
- Is not SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
+ />
@@ -7310,7 +7182,7 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has ba
`;
-exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: false) (isSend: true) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: undefined) (opening source: aar user type: not_set) 1`] = `
-
-
-
-
-
- Allegati
-
-
-
-
-
-
- A banner
-
-
- Mock MessageDetailsAttachmentItem
-
-
-
- Attachment category: undefined
-
-
- Attachment content-type: undefined
-
-
- Attachment id: 1
-
-
- Attachment name: undefined
-
-
- Attachment url: https://an.url/path
-
-
-
- Has no bottom spacer
-
-
- Is not disabled
-
-
- Is SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
+ />
@@ -7816,7 +7560,7 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has ba
`;
-exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: false) (isSend: undefined) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: undefined) (opening source: aar user type: recipient) 1`] = `
-
-
-
-
-
- Allegati
-
-
-
-
-
-
- A banner
-
-
- Mock MessageDetailsAttachmentItem
-
-
-
- Attachment category: undefined
-
-
- Attachment content-type: undefined
-
-
- Attachment id: 1
-
-
- Attachment name: undefined
-
-
- Attachment url: https://an.url/path
-
-
-
- Has no bottom spacer
-
-
- Is not disabled
-
-
- Is not SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
+ />
@@ -8322,7 +7938,7 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has ba
`;
-exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: true) (isSend: false) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: undefined) (opening source: message user type: mandatory) 1`] = `
-
-
-
-
-
- Allegati
-
-
-
-
-
-
- A banner
-
-
- Mock MessageDetailsAttachmentItem
-
-
-
- Attachment category: undefined
-
-
- Attachment content-type: undefined
-
-
- Attachment id: 1
-
-
- Attachment name: undefined
-
-
- Attachment url: https://an.url/path
-
-
-
- Has no bottom spacer
-
-
- Is disabled
-
-
- Is not SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
+ />
@@ -8828,7 +8316,7 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has ba
`;
-exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: true) (isSend: true) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: undefined) (opening source: message user type: not_set) 1`] = `
-
-
-
-
-
- Allegati
-
-
-
-
-
-
- A banner
-
-
- Mock MessageDetailsAttachmentItem
-
-
-
- Attachment category: undefined
-
-
- Attachment content-type: undefined
-
-
- Attachment id: 1
-
-
- Attachment name: undefined
-
-
- Attachment url: https://an.url/path
-
-
-
- Has no bottom spacer
-
-
- Is disabled
-
-
- Is SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
+ />
@@ -9334,7 +8694,7 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has ba
`;
-exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: true) (isSend: undefined) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: undefined) (opening source: message user type: recipient) 1`] = `
-
-
-
-
-
- Allegati
-
-
-
-
-
-
- A banner
-
-
- Mock MessageDetailsAttachmentItem
-
-
-
- Attachment category: undefined
-
-
- Attachment content-type: undefined
-
-
- Attachment id: 1
-
-
- Attachment name: undefined
-
-
- Attachment url: https://an.url/path
-
-
-
- Has no bottom spacer
-
-
- Is disabled
-
-
- Is not SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
+ />
@@ -9840,7 +9072,7 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has ba
`;
-exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: undefined) (isSend: false) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: undefined) (opening source: not_set user type: mandatory) 1`] = `
-
-
-
-
-
- Allegati
-
-
-
-
-
-
- A banner
-
-
- Mock MessageDetailsAttachmentItem
-
-
-
- Attachment category: undefined
-
-
- Attachment content-type: undefined
-
-
- Attachment id: 1
-
-
- Attachment name: undefined
-
-
- Attachment url: https://an.url/path
-
-
-
- Has no bottom spacer
-
-
- Is not disabled
-
-
- Is not SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
+ />
@@ -10346,7 +9450,7 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has ba
`;
-exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: undefined) (isSend: true) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: undefined) (opening source: not_set user type: not_set) 1`] = `
-
-
-
-
-
- Allegati
-
-
-
-
-
-
- A banner
-
-
- Mock MessageDetailsAttachmentItem
-
-
-
- Attachment category: undefined
-
-
- Attachment content-type: undefined
-
-
- Attachment id: 1
-
-
- Attachment name: undefined
-
-
- Attachment url: https://an.url/path
-
-
-
- Has no bottom spacer
-
-
- Is not disabled
-
-
- Is SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
+ />
@@ -10852,7 +9828,7 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has ba
`;
-exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: undefined) (isSend: undefined) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has banner) (disabled: undefined) (opening source: not_set user type: recipient) 1`] = `
-
-
-
-
-
- Allegati
-
-
-
-
-
-
- A banner
-
-
- Mock MessageDetailsAttachmentItem
-
-
-
- Attachment category: undefined
-
-
- Attachment content-type: undefined
-
-
- Attachment id: 1
-
-
- Attachment name: undefined
-
-
- Attachment url: https://an.url/path
-
-
-
- Has no bottom spacer
-
-
- Is not disabled
-
-
- Is not SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
+ />
@@ -11358,7 +10206,7 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has ba
`;
-exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: false) (isSend: false) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: false) (opening source: aar user type: mandatory) 1`] = `
-
-
-
-
-
- Allegati
-
-
-
-
-
-
- Mock MessageDetailsAttachmentItem
-
-
-
- Attachment category: undefined
-
-
- Attachment content-type: undefined
-
-
- Attachment id: 1
-
-
- Attachment name: undefined
-
-
- Attachment url: https://an.url/path
-
-
-
- Has no bottom spacer
-
-
- Is not disabled
-
-
- Is not SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
+ />
@@ -11861,7 +10584,7 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no
`;
-exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: false) (isSend: true) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: false) (opening source: aar user type: not_set) 1`] = `
-
-
-
-
-
- Allegati
-
-
-
-
-
-
- Mock MessageDetailsAttachmentItem
-
-
-
- Attachment category: undefined
-
-
- Attachment content-type: undefined
-
-
- Attachment id: 1
-
-
- Attachment name: undefined
-
-
- Attachment url: https://an.url/path
-
-
-
- Has no bottom spacer
-
-
- Is not disabled
-
-
- Is SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
+ />
@@ -12364,7 +10962,7 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no
`;
-exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: false) (isSend: undefined) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: false) (opening source: aar user type: recipient) 1`] = `
-
-
-
-
-
- Allegati
-
-
-
-
-
-
- Mock MessageDetailsAttachmentItem
-
-
-
- Attachment category: undefined
-
-
- Attachment content-type: undefined
-
-
- Attachment id: 1
-
-
- Attachment name: undefined
-
-
- Attachment url: https://an.url/path
-
-
-
- Has no bottom spacer
-
-
- Is not disabled
-
-
- Is not SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
+ />
@@ -12867,7 +11340,7 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no
`;
-exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: true) (isSend: false) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: false) (opening source: message user type: mandatory) 1`] = `
-
-
-
-
-
- Allegati
-
-
-
-
-
-
- Mock MessageDetailsAttachmentItem
-
-
-
- Attachment category: undefined
-
-
- Attachment content-type: undefined
-
-
- Attachment id: 1
-
-
- Attachment name: undefined
-
-
- Attachment url: https://an.url/path
-
-
-
- Has no bottom spacer
-
-
- Is disabled
-
-
- Is not SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
+ />
@@ -13370,7 +11718,7 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no
`;
-exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: true) (isSend: true) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: false) (opening source: message user type: not_set) 1`] = `
-
-
-
-
-
- Allegati
-
-
-
-
-
-
- Mock MessageDetailsAttachmentItem
-
-
-
- Attachment category: undefined
-
-
- Attachment content-type: undefined
-
-
- Attachment id: 1
-
-
- Attachment name: undefined
-
-
- Attachment url: https://an.url/path
-
-
-
- Has no bottom spacer
-
-
- Is disabled
-
-
- Is SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
+ />
@@ -13873,7 +12096,57257 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no
`;
-exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: true) (isSend: undefined) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: false) (opening source: message user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: false) (opening source: not_set user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: false) (opening source: not_set user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: false) (opening source: not_set user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: true) (opening source: aar user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: true) (opening source: aar user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: true) (opening source: aar user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: true) (opening source: message user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: true) (opening source: message user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: true) (opening source: message user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: true) (opening source: not_set user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: true) (opening source: not_set user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: true) (opening source: not_set user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: undefined) (opening source: aar user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: undefined) (opening source: aar user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: undefined) (opening source: aar user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: undefined) (opening source: message user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: undefined) (opening source: message user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: undefined) (opening source: message user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: undefined) (opening source: not_set user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: undefined) (opening source: not_set user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (0 attachments) (has no banner) (disabled: undefined) (opening source: not_set user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: false) (opening source: aar user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: false) (opening source: aar user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: false) (opening source: aar user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: false) (opening source: message user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: false) (opening source: message user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: false) (opening source: message user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: false) (opening source: not_set user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: false) (opening source: not_set user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: false) (opening source: not_set user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: true) (opening source: aar user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: true) (opening source: aar user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: true) (opening source: aar user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: true) (opening source: message user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: true) (opening source: message user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: true) (opening source: message user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: true) (opening source: not_set user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: true) (opening source: not_set user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: true) (opening source: not_set user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: undefined) (opening source: aar user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: undefined) (opening source: aar user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: undefined) (opening source: aar user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: undefined) (opening source: message user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: undefined) (opening source: message user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: undefined) (opening source: message user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: undefined) (opening source: not_set user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: undefined) (opening source: not_set user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has banner) (disabled: undefined) (opening source: not_set user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: false) (opening source: aar user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: false) (opening source: aar user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: false) (opening source: aar user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: false) (opening source: message user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: false) (opening source: message user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: false) (opening source: message user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: false) (opening source: not_set user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: false) (opening source: not_set user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: false) (opening source: not_set user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: true) (opening source: aar user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: true) (opening source: aar user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: true) (opening source: aar user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: true) (opening source: message user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: true) (opening source: message user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: true) (opening source: message user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: true) (opening source: not_set user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: true) (opening source: not_set user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: true) (opening source: not_set user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: undefined) (opening source: aar user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: undefined) (opening source: aar user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: undefined) (opening source: aar user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: undefined) (opening source: message user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: undefined) (opening source: message user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: undefined) (opening source: message user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: undefined) (opening source: not_set user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: undefined) (opening source: not_set user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: undefined) (opening source: not_set user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: false) (opening source: aar user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: false) (opening source: aar user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: false) (opening source: aar user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: false) (opening source: message user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: false) (opening source: message user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: false) (opening source: message user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: false) (opening source: not_set user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 3
+
+
+ Attachment name: f24.pdf
+
+
+ Attachment url: https://an.url/f24
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: false) (opening source: not_set user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 3
+
+
+ Attachment name: f24.pdf
+
+
+ Attachment url: https://an.url/f24
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: false) (opening source: not_set user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 3
+
+
+ Attachment name: f24.pdf
+
+
+ Attachment url: https://an.url/f24
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: true) (opening source: aar user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: true) (opening source: aar user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: true) (opening source: aar user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: true) (opening source: message user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: true) (opening source: message user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: true) (opening source: message user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: true) (opening source: not_set user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 3
+
+
+ Attachment name: f24.pdf
+
+
+ Attachment url: https://an.url/f24
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: true) (opening source: not_set user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 3
+
+
+ Attachment name: f24.pdf
+
+
+ Attachment url: https://an.url/f24
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: true) (opening source: not_set user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 3
+
+
+ Attachment name: f24.pdf
+
+
+ Attachment url: https://an.url/f24
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: undefined) (opening source: aar user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: undefined) (opening source: aar user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: undefined) (opening source: aar user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: undefined) (opening source: message user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: undefined) (opening source: message user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: undefined) (opening source: message user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: undefined) (opening source: not_set user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 3
+
+
+ Attachment name: f24.pdf
+
+
+ Attachment url: https://an.url/f24
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: undefined) (opening source: not_set user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 3
+
+
+ Attachment name: f24.pdf
+
+
+ Attachment url: https://an.url/f24
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: undefined) (opening source: not_set user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ A banner
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 3
+
+
+ Attachment name: f24.pdf
+
+
+ Attachment url: https://an.url/f24
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: false) (opening source: aar user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: false) (opening source: aar user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: false) (opening source: aar user type: recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: false) (opening source: message user type: mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: false) (opening source: message user type: not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MESSAGE_DETAIL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allegati
+
+
+
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: undefined
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://an.url/path
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: false) (opening source: message user type: recipient) 1`] = `
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
Has no bottom spacer
- Is disabled
+ Is not disabled
+
+
+ Send Opening Source message
- Is not SEND
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -14376,7 +69996,7 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no
`;
-exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: undefined) (isSend: false) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: false) (opening source: not_set user type: mandatory) 1`] = `
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 3
+
+
+ Attachment name: f24.pdf
+
+
+ Attachment url: https://an.url/f24
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
Has no bottom spacer
@@ -14824,7 +70660,10 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no
Is not disabled
- Is not SEND
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -14879,7 +70718,7 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no
`;
-exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: undefined) (isSend: true) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: false) (opening source: not_set user type: not_set) 1`] = `
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 3
+
+
+ Attachment name: f24.pdf
+
+
+ Attachment url: https://an.url/f24
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
Has no bottom spacer
@@ -15327,7 +71382,10 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no
Is not disabled
- Is SEND
+ Send Opening Source not_set
+
+
+ Send User Type not_set
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -15382,7 +71440,7 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no
`;
-exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no banner) (disabled: undefined) (isSend: undefined) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: false) (opening source: not_set user type: recipient) 1`] = `
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: DOCUMENT
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 2
+
+
+ Attachment name: Document.pdf
+
+
+ Attachment url: https://an.url/document
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 3
+
+
+ Attachment name: f24.pdf
+
+
+ Attachment url: https://an.url/f24
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: PAGOPA
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 4
+
+
+ Attachment name: pagopa.pdf
+
+
+ Attachment url: https://an.url/pagopa
+
+
Has no bottom spacer
@@ -15830,7 +72104,10 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no
Is not disabled
- Is not SEND
+ Send Opening Source not_set
+
+
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -15885,7 +72162,7 @@ exports[`MessageDetailsAttachments should match snapshot (1 attachments) (has no
`;
-exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: false) (isSend: false) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: true) (opening source: aar user type: mandatory) 1`] = `
-
- A banner
-
Mock MessageDetailsAttachmentItem
@@ -16333,10 +72607,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Has bottom spacer
- Is not disabled
+ Is disabled
+
+
+ Send Opening Source aar
- Is not SEND
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -16402,79 +72679,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Has bottom spacer
- Is not disabled
-
-
- Is not SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
- Mock MessageDetailsAttachmentItem
-
-
-
- Attachment category: F24
-
-
- Attachment content-type: application/pdf
-
-
- Attachment id: 3
-
-
- Attachment name: f24.pdf
-
-
- Attachment url: https://an.url/f24
-
-
-
- Has bottom spacer
+ Is disabled
- Is not disabled
+ Send Opening Source aar
- Is not SEND
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -16540,10 +72751,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Has no bottom spacer
- Is not disabled
+ Is disabled
- Is not SEND
+ Send Opening Source aar
+
+
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -16598,7 +72812,7 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
`;
-exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: false) (isSend: true) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: true) (opening source: aar user type: not_set) 1`] = `
-
- A banner
-
Mock MessageDetailsAttachmentItem
@@ -17046,10 +73257,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Has bottom spacer
- Is not disabled
+ Is disabled
- Is SEND
+ Send Opening Source aar
+
+
+ Send User Type not_set
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -17115,10 +73329,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Has bottom spacer
- Is not disabled
+ Is disabled
- Is SEND
+ Send Opening Source aar
+
+
+ Send User Type not_set
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -17184,10 +73401,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Has no bottom spacer
- Is not disabled
+ Is disabled
- Is SEND
+ Send Opening Source aar
+
+
+ Send User Type not_set
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -17242,7 +73462,7 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
`;
-exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: false) (isSend: undefined) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: true) (opening source: aar user type: recipient) 1`] = `
-
- A banner
-
Mock MessageDetailsAttachmentItem
@@ -17690,10 +73907,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Has bottom spacer
- Is not disabled
+ Is disabled
+
+
+ Send Opening Source aar
- Is not SEND
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -17759,79 +73979,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Has bottom spacer
- Is not disabled
-
-
- Is not SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
- Mock MessageDetailsAttachmentItem
-
-
-
- Attachment category: F24
-
-
- Attachment content-type: application/pdf
-
-
- Attachment id: 3
-
-
- Attachment name: f24.pdf
-
-
- Attachment url: https://an.url/f24
-
-
-
- Has bottom spacer
+ Is disabled
- Is not disabled
+ Send Opening Source aar
- Is not SEND
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -17897,10 +74051,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Has no bottom spacer
- Is not disabled
+ Is disabled
+
+
+ Send Opening Source aar
- Is not SEND
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -17955,7 +74112,7 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
`;
-exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: true) (isSend: false) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: true) (opening source: message user type: mandatory) 1`] = `
-
- A banner
-
Mock MessageDetailsAttachmentItem
@@ -18406,7 +74560,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Is disabled
- Is not SEND
+ Send Opening Source message
+
+
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -18475,76 +74632,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Is disabled
- Is not SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
- Mock MessageDetailsAttachmentItem
+ Send Opening Source message
-
- Attachment category: F24
-
-
- Attachment content-type: application/pdf
-
-
- Attachment id: 3
-
-
- Attachment name: f24.pdf
-
-
- Attachment url: https://an.url/f24
-
-
-
- Has bottom spacer
-
-
- Is disabled
-
-
- Is not SEND
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -18613,7 +74704,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Is disabled
- Is not SEND
+ Send Opening Source message
+
+
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -18668,7 +74762,7 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
`;
-exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: true) (isSend: true) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: true) (opening source: message user type: not_set) 1`] = `
-
- A banner
-
Mock MessageDetailsAttachmentItem
@@ -19119,7 +75210,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Is disabled
- Is SEND
+ Send Opening Source message
+
+
+ Send User Type not_set
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -19188,7 +75282,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Is disabled
- Is SEND
+ Send Opening Source message
+
+
+ Send User Type not_set
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -19257,7 +75354,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Is disabled
- Is SEND
+ Send Opening Source message
+
+
+ Send User Type not_set
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -19312,7 +75412,7 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
`;
-exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: true) (isSend: undefined) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: true) (opening source: message user type: recipient) 1`] = `
-
- A banner
-
Mock MessageDetailsAttachmentItem
@@ -19763,7 +75860,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Is disabled
- Is not SEND
+ Send Opening Source message
+
+
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -19832,76 +75932,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Is disabled
- Is not SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
- Mock MessageDetailsAttachmentItem
+ Send Opening Source message
-
- Attachment category: F24
-
-
- Attachment content-type: application/pdf
-
-
- Attachment id: 3
-
-
- Attachment name: f24.pdf
-
-
- Attachment url: https://an.url/f24
-
-
-
- Has bottom spacer
-
-
- Is disabled
-
-
- Is not SEND
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -19970,7 +76004,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Is disabled
- Is not SEND
+ Send Opening Source message
+
+
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -20025,7 +76062,7 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
`;
-exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: undefined) (isSend: false) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: true) (opening source: not_set user type: mandatory) 1`] = `
-
- A banner
-
Mock MessageDetailsAttachmentItem
@@ -20473,10 +76507,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Has bottom spacer
- Is not disabled
+ Is disabled
+
+
+ Send Opening Source not_set
- Is not SEND
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -20542,10 +76579,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Has bottom spacer
- Is not disabled
+ Is disabled
- Is not SEND
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -20611,10 +76651,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Has bottom spacer
- Is not disabled
+ Is disabled
+
+
+ Send Opening Source not_set
- Is not SEND
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -20680,10 +76723,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Has no bottom spacer
- Is not disabled
+ Is disabled
+
+
+ Send Opening Source not_set
- Is not SEND
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -20738,7 +76784,7 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
`;
-exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: undefined) (isSend: true) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: true) (opening source: not_set user type: not_set) 1`] = `
-
- A banner
-
Mock MessageDetailsAttachmentItem
@@ -21186,10 +77229,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Has bottom spacer
- Is not disabled
+ Is disabled
- Is SEND
+ Send Opening Source not_set
+
+
+ Send User Type not_set
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -21255,10 +77301,85 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Has bottom spacer
- Is not disabled
+ Is disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
- Is SEND
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 3
+
+
+ Attachment name: f24.pdf
+
+
+ Attachment url: https://an.url/f24
+
+
+
+ Has bottom spacer
+
+
+ Is disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -21324,10 +77445,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Has no bottom spacer
- Is not disabled
+ Is disabled
+
+
+ Send Opening Source not_set
- Is SEND
+ Send User Type not_set
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -21382,7 +77506,7 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
`;
-exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has banner) (disabled: undefined) (isSend: undefined) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: true) (opening source: not_set user type: recipient) 1`] = `
-
- A banner
-
Mock MessageDetailsAttachmentItem
@@ -21830,10 +77951,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Has bottom spacer
- Is not disabled
+ Is disabled
- Is not SEND
+ Send Opening Source not_set
+
+
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -21899,10 +78023,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Has bottom spacer
- Is not disabled
+ Is disabled
- Is not SEND
+ Send Opening Source not_set
+
+
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -21968,10 +78095,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Has bottom spacer
- Is not disabled
+ Is disabled
- Is not SEND
+ Send Opening Source not_set
+
+
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -22037,10 +78167,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
Has no bottom spacer
- Is not disabled
+ Is disabled
- Is not SEND
+ Send Opening Source not_set
+
+
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -22095,7 +78228,7 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has ba
`;
-exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: false) (isSend: false) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: undefined) (opening source: aar user type: mandatory) 1`] = `
- Is not SEND
+ Send Opening Source aar
+
+
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -22612,76 +78748,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
Is not disabled
- Is not SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
- Mock MessageDetailsAttachmentItem
+ Send Opening Source aar
-
- Attachment category: F24
-
-
- Attachment content-type: application/pdf
-
-
- Attachment id: 3
-
-
- Attachment name: f24.pdf
-
-
- Attachment url: https://an.url/f24
-
-
-
- Has bottom spacer
-
-
- Is not disabled
-
-
- Is not SEND
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -22750,7 +78820,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
Is not disabled
- Is not SEND
+ Send Opening Source aar
+
+
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -22805,7 +78878,7 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
`;
-exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: false) (isSend: true) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: undefined) (opening source: aar user type: not_set) 1`] = `
- Is SEND
+ Send Opening Source aar
+
+
+ Send User Type not_set
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -23322,7 +79398,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
Is not disabled
- Is SEND
+ Send Opening Source aar
+
+
+ Send User Type not_set
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -23391,7 +79470,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
Is not disabled
- Is SEND
+ Send Opening Source aar
+
+
+ Send User Type not_set
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -23446,7 +79528,7 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
`;
-exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: false) (isSend: undefined) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: undefined) (opening source: aar user type: recipient) 1`] = `
- Is not SEND
+ Send Opening Source aar
+
+
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -23963,76 +80048,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
Is not disabled
- Is not SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
- Mock MessageDetailsAttachmentItem
-
-
-
- Attachment category: F24
-
-
- Attachment content-type: application/pdf
-
-
- Attachment id: 3
-
-
- Attachment name: f24.pdf
-
-
- Attachment url: https://an.url/f24
-
-
-
- Has bottom spacer
-
-
- Is not disabled
+ Send Opening Source aar
- Is not SEND
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -24101,7 +80120,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
Is not disabled
- Is not SEND
+ Send Opening Source aar
+
+
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -24156,7 +80178,7 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
`;
-exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: true) (isSend: false) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: undefined) (opening source: message user type: mandatory) 1`] = `
- Is disabled
+ Is not disabled
- Is not SEND
+ Send Opening Source message
+
+
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -24670,79 +80695,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
Has bottom spacer
- Is disabled
-
-
- Is not SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
- Mock MessageDetailsAttachmentItem
-
-
-
- Attachment category: F24
-
-
- Attachment content-type: application/pdf
-
-
- Attachment id: 3
-
-
- Attachment name: f24.pdf
-
-
- Attachment url: https://an.url/f24
-
-
-
- Has bottom spacer
+ Is not disabled
- Is disabled
+ Send Opening Source message
- Is not SEND
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -24808,10 +80767,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
Has no bottom spacer
- Is disabled
+ Is not disabled
+
+
+ Send Opening Source message
- Is not SEND
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -24866,7 +80828,7 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
`;
-exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: true) (isSend: true) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: undefined) (opening source: message user type: not_set) 1`] = `
- Is disabled
+ Is not disabled
+
+
+ Send Opening Source message
- Is SEND
+ Send User Type not_set
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -25380,10 +81345,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
Has bottom spacer
- Is disabled
+ Is not disabled
+
+
+ Send Opening Source message
- Is SEND
+ Send User Type not_set
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -25449,10 +81417,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
Has no bottom spacer
- Is disabled
+ Is not disabled
+
+
+ Send Opening Source message
- Is SEND
+ Send User Type not_set
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -25507,7 +81478,7 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
`;
-exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: true) (isSend: undefined) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: undefined) (opening source: message user type: recipient) 1`] = `
- Is disabled
+ Is not disabled
+
+
+ Send Opening Source message
- Is not SEND
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -26021,79 +81995,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
Has bottom spacer
- Is disabled
-
-
- Is not SEND
-
-
- Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
-
-
- Service Id: 01JKAGWVQRFE1P8QAHZS743M90
-
-
- Has no onPreNavigate callback
-
-
- Mock MessageDetailsAttachmentItem
-
-
-
- Attachment category: F24
-
-
- Attachment content-type: application/pdf
-
-
- Attachment id: 3
-
-
- Attachment name: f24.pdf
-
-
- Attachment url: https://an.url/f24
-
-
-
- Has bottom spacer
+ Is not disabled
- Is disabled
+ Send Opening Source message
- Is not SEND
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -26159,10 +82067,13 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
Has no bottom spacer
- Is disabled
+ Is not disabled
+
+
+ Send Opening Source message
- Is not SEND
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -26217,7 +82128,7 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
`;
-exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: undefined) (isSend: false) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: undefined) (opening source: not_set user type: mandatory) 1`] = `
- Is not SEND
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -26734,7 +82648,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
Is not disabled
- Is not SEND
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -26803,7 +82720,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
Is not disabled
- Is not SEND
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -26872,7 +82792,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
Is not disabled
- Is not SEND
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -26927,7 +82850,7 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
`;
-exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: undefined) (isSend: true) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: undefined) (opening source: not_set user type: not_set) 1`] = `
- Is SEND
+ Send Opening Source not_set
+
+
+ Send User Type not_set
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -27444,7 +83370,82 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
Is not disabled
- Is SEND
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
+
+
+ Service Id: 01JKAGWVQRFE1P8QAHZS743M90
+
+
+ Has no onPreNavigate callback
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: application/pdf
+
+
+ Attachment id: 3
+
+
+ Attachment name: f24.pdf
+
+
+ Attachment url: https://an.url/f24
+
+
+
+ Has bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -27513,7 +83514,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
Is not disabled
- Is SEND
+ Send Opening Source not_set
+
+
+ Send User Type not_set
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -27568,7 +83572,7 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
`;
-exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: undefined) (isSend: undefined) 1`] = `
+exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no banner) (disabled: undefined) (opening source: not_set user type: recipient) 1`] = `
- Is not SEND
+ Send Opening Source not_set
+
+
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -28085,7 +84092,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
Is not disabled
- Is not SEND
+ Send Opening Source not_set
+
+
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -28154,7 +84164,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
Is not disabled
- Is not SEND
+ Send Opening Source not_set
+
+
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
@@ -28223,7 +84236,10 @@ exports[`MessageDetailsAttachments should match snapshot (4 attachments) (has no
Is not disabled
- Is not SEND
+ Send Opening Source not_set
+
+
+ Send User Type recipient
Message Id: 01HNWYRT55GXGPXR16BW2MSBVY
diff --git a/ts/features/messages/hooks/useAttachmentDownload.tsx b/ts/features/messages/hooks/useAttachmentDownload.tsx
index bca2783aa2e..86e26f316b5 100644
--- a/ts/features/messages/hooks/useAttachmentDownload.tsx
+++ b/ts/features/messages/hooks/useAttachmentDownload.tsx
@@ -4,14 +4,7 @@ import { useCallback, useEffect } from "react";
import RNFS from "react-native-fs";
import { ServiceId } from "../../../../definitions/backend/ServiceId";
import { ThirdPartyAttachment } from "../../../../definitions/backend/ThirdPartyAttachment";
-import NavigationService from "../../../navigation/NavigationService";
import { useIODispatch, useIOSelector, useIOStore } from "../../../store/hooks";
-import {
- trackPNAttachmentDownloadFailure,
- trackPNAttachmentOpening
-} from "../../pn/analytics";
-import PN_ROUTES from "../../pn/navigation/routes";
-import { trackThirdPartyMessageAttachmentShowPreview } from "../analytics";
import { MESSAGES_ROUTES } from "../navigation/routes";
import {
cancelPreviousAttachmentDownload,
@@ -25,15 +18,28 @@ import {
isRequestedAttachmentDownloadSelector
} from "../store/reducers/downloads";
import { attachmentDisplayName } from "../utils/attachments";
+import {
+ trackPNAttachmentDownloadFailure,
+ trackPNAttachmentOpening
+} from "../../pn/analytics";
+import { trackThirdPartyMessageAttachmentShowPreview } from "../analytics";
+import PN_ROUTES from "../../pn/navigation/routes";
+import NavigationService from "../../../navigation/NavigationService";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../pushNotifications/analytics";
export const useAttachmentDownload = (
messageId: string,
attachment: ThirdPartyAttachment,
- isPN: boolean,
+ sendOpeningSource: SendOpeningSource,
+ sendUserType: SendUserType,
serviceId: ServiceId,
onPreNavigate?: () => void
) => {
const attachmentId = attachment.id;
+ const isSendAttachment = sendOpeningSource !== "not_set";
const dispatch = useIODispatch();
const store = useIOStore();
@@ -54,8 +60,12 @@ export const useAttachmentDownload = (
const doNavigate = useCallback(() => {
dispatch(clearRequestedAttachmentDownload());
onPreNavigate?.();
- if (isPN) {
- trackPNAttachmentOpening(attachmentCategory);
+ if (isSendAttachment) {
+ trackPNAttachmentOpening(
+ sendOpeningSource,
+ sendUserType,
+ attachmentCategory
+ );
NavigationService.navigate(MESSAGES_ROUTES.MESSAGES_NAVIGATOR, {
screen: PN_ROUTES.MAIN,
params: {
@@ -80,11 +90,14 @@ export const useAttachmentDownload = (
attachmentCategory,
attachmentId,
dispatch,
- isPN,
+ isSendAttachment,
messageId,
onPreNavigate,
+ sendOpeningSource,
+ sendUserType,
serviceId
]);
+
const checkPathAndNavigate = useCallback(
async (downloadPath: string) => {
if (await RNFS.exists(downloadPath)) {
@@ -100,7 +113,7 @@ export const useAttachmentDownload = (
return;
}
- if (!isPN) {
+ if (!isSendAttachment) {
trackThirdPartyMessageAttachmentShowPreview();
}
@@ -114,18 +127,18 @@ export const useAttachmentDownload = (
downloadAttachment.request({
attachment,
messageId,
- skipMixpanelTrackingOnFailure: isPN,
+ skipMixpanelTrackingOnFailure: isSendAttachment,
serviceId
})
);
}
}, [
- attachment,
+ isFetching,
+ isSendAttachment,
dispatch,
download,
doNavigate,
- isFetching,
- isPN,
+ attachment,
messageId,
serviceId
]);
@@ -139,7 +152,7 @@ export const useAttachmentDownload = (
void checkPathAndNavigate(download.path);
} else if (isDownloadError) {
dispatch(clearRequestedAttachmentDownload());
- if (isPN) {
+ if (isSendAttachment) {
trackPNAttachmentDownloadFailure(attachmentCategory);
}
toast.error(I18n.t("messageDetails.attachments.failing.details"));
@@ -149,10 +162,9 @@ export const useAttachmentDownload = (
attachmentId,
checkPathAndNavigate,
dispatch,
- doNavigate,
download,
isDownloadError,
- isPN,
+ isSendAttachment,
messageId,
store,
toast
diff --git a/ts/features/messages/saga/__test__/handleThirdPartyMessage.test.ts b/ts/features/messages/saga/__test__/handleThirdPartyMessage.test.ts
new file mode 100644
index 00000000000..c9b8072ca74
--- /dev/null
+++ b/ts/features/messages/saga/__test__/handleThirdPartyMessage.test.ts
@@ -0,0 +1,406 @@
+import * as E from "fp-ts/lib/Either";
+import { testSaga } from "redux-saga-test-plan";
+import {
+ TagEnum,
+ TagEnum as TEBASE
+} from "../../../../../definitions/backend/MessageCategoryBase";
+import { TagEnum as TEPAYMENT } from "../../../../../definitions/backend/MessageCategoryPayment";
+import { TagEnum as TESEND } from "../../../../../definitions/backend/MessageCategoryPN";
+import { ServiceDetails } from "../../../../../definitions/services/ServiceDetails";
+import { handleThirdPartyMessage, testable } from "../handleThirdPartyMessage";
+import { ThirdPartyMessageWithContent } from "../../../../../definitions/backend/ThirdPartyMessageWithContent";
+import * as ANALYTICS from "../../analytics";
+import * as SEND_ANALYTICS from "../../../pn/analytics";
+import { loadThirdPartyMessage } from "../../store/actions";
+import { ServiceId } from "../../../../../definitions/services/ServiceId";
+import { serviceDetailsByIdSelector } from "../../../services/details/store/selectors";
+import { withRefreshApiCall } from "../../../authentication/fastLogin/saga/utils";
+import { ThirdPartyMessageUnion } from "../../types/thirdPartyById";
+
+describe("handleThirdPartyMessage", () => {
+ const serviceDetails = {
+ id: "01K80HY0HV1KP41F555A854HDG",
+ name: "Service Name",
+ organization: {
+ name: "Organization Name",
+ fiscal_code: "IT34655573020"
+ }
+ } as unknown as ServiceDetails;
+
+ afterEach(() => {
+ jest.clearAllMocks();
+ });
+
+ describe("handleThirdPartyMessage saga", () => {
+ it("should follow the proper flow when everything goes well", () => {
+ const mockGetThirdPartyMessageRequest = jest.fn();
+ const mockGetThirdPartyMessageFactory = () =>
+ mockGetThirdPartyMessageRequest;
+ const messageId = "01K813A7EVHP2W5ZAYDSTX9J0E";
+ const serviceId = "01K813ACAMDW4DRVXK0CEGFHGM" as ServiceId;
+ const action = loadThirdPartyMessage.request({
+ id: messageId,
+ serviceId,
+ tag: TagEnum.GENERIC
+ });
+ const thirdPartyMessage = {};
+ const result = E.right({ status: 200, value: thirdPartyMessage });
+ testSaga(handleThirdPartyMessage, mockGetThirdPartyMessageFactory, action)
+ .next()
+ .select(serviceDetailsByIdSelector, serviceId)
+ .next(serviceDetails)
+ .call(
+ withRefreshApiCall,
+ mockGetThirdPartyMessageRequest({ id: messageId }),
+ action
+ )
+ .next(result)
+ .call(
+ testable!.trackSuccess,
+ thirdPartyMessage,
+ serviceDetails,
+ TagEnum.GENERIC
+ )
+ .next()
+ .put(
+ loadThirdPartyMessage.success({
+ id: messageId,
+ content: {
+ kind: "TPM"
+ } as ThirdPartyMessageUnion
+ })
+ );
+ });
+ });
+
+ // eslint-disable-next-line sonarjs/cognitive-complexity
+ describe("testable.trackSuccess", () => {
+ const generateMessages = (attachmentCount: number | undefined) => {
+ const thirdPartyMessage = {
+ third_party_message: {
+ attachments:
+ attachmentCount != null
+ ? [...Array(attachmentCount)].map(index => ({
+ id: `${index}`,
+ url: "https://an.url/path"
+ }))
+ : undefined
+ }
+ };
+ const sendMessageNone = {
+ third_party_message: {
+ details: {}
+ }
+ };
+ const sendMessageSomeNoTimeline = {
+ third_party_message: {
+ attachments:
+ attachmentCount != null
+ ? [...Array(attachmentCount)].map(index => ({
+ id: `${index}`,
+ url: "https://an.url/path"
+ }))
+ : undefined,
+ details: {
+ subject: "",
+ iun: "",
+ recipients: [],
+ notificationStatusHistory: []
+ }
+ }
+ };
+ const sendMessageSome1ItemTimeline = {
+ third_party_message: {
+ attachments:
+ attachmentCount != null
+ ? [...Array(attachmentCount)].map(index => ({
+ id: `${index}`,
+ url: "https://an.url/path"
+ }))
+ : undefined,
+ details: {
+ subject: "",
+ iun: "",
+ recipients: [],
+ notificationStatusHistory: [
+ {
+ activeFrom: new Date(),
+ relatedTimelineElements: [],
+ status: "ACCEPTED"
+ }
+ ]
+ }
+ }
+ };
+ const sendMessageSome2ItemsTimeline = {
+ third_party_message: {
+ attachments:
+ attachmentCount != null
+ ? [...Array(attachmentCount)].map(index => ({
+ id: `${index}`,
+ url: "https://an.url/path"
+ }))
+ : undefined,
+
+ details: {
+ subject: "",
+ iun: "",
+ recipients: [],
+ notificationStatusHistory: [
+ {
+ activeFrom: new Date(),
+ relatedTimelineElements: [],
+ status: "ACCEPTED"
+ },
+ {
+ activeFrom: new Date(),
+ relatedTimelineElements: [],
+ status: "CANCELLED"
+ }
+ ]
+ }
+ }
+ };
+ return [
+ {
+ message: thirdPartyMessage,
+ isNone: false,
+ isSend: false,
+ timelineStatus: undefined
+ },
+ {
+ message: sendMessageNone,
+ isNone: true,
+ isSend: true,
+ timelineStatus: undefined
+ },
+ {
+ message: sendMessageSomeNoTimeline,
+ isNone: false,
+ isSend: true,
+ timelineStatus: undefined
+ },
+ {
+ message: sendMessageSome1ItemTimeline,
+ isNone: false,
+ isSend: true,
+ timelineStatus: "ACCEPTED"
+ },
+ {
+ message: sendMessageSome2ItemsTimeline,
+ isNone: false,
+ isSend: true,
+ timelineStatus: "CANCELLED"
+ }
+ ];
+ };
+ [undefined, serviceDetails].forEach(serviceDetail => {
+ [
+ TEBASE.EU_COVID_CERT,
+ TEBASE.GENERIC,
+ TEBASE.LEGAL_MESSAGE,
+ TEPAYMENT.PAYMENT,
+ TESEND.PN
+ ].forEach(tagEnum => {
+ [undefined, 0, 1, 2].forEach(attachmentCount => {
+ generateMessages(attachmentCount).forEach(messageWrapper => {
+ it(`should call proper analytics functions (service (${
+ serviceDetail ? "undefined" : "defined"
+ }) tag (${tagEnum}) attachment count (${attachmentCount}) is send (${
+ messageWrapper.isSend
+ }) is none (${messageWrapper.isNone}) timeline status (${
+ messageWrapper.timelineStatus
+ })`, () => {
+ const spiedOnMockedTrackRemoteContentLoadSuccess = jest
+ .spyOn(ANALYTICS, "trackRemoteContentLoadSuccess")
+ .mockImplementation();
+ const spiedOnMockedTrackPNNotificationLoadSuccess = jest
+ .spyOn(SEND_ANALYTICS, "trackPNNotificationLoadSuccess")
+ .mockImplementation();
+ const spiedOnMockedTrackPNNotificationLoadError = jest
+ .spyOn(SEND_ANALYTICS, "trackPNNotificationLoadError")
+ .mockImplementation();
+ const spiedOnMockedTrackThirdPartyMessageAttachmentCount = jest
+ .spyOn(ANALYTICS, "trackThirdPartyMessageAttachmentCount")
+ .mockImplementation();
+
+ testable!.trackSuccess(
+ messageWrapper.message as unknown as ThirdPartyMessageWithContent,
+ serviceDetail,
+ tagEnum
+ );
+
+ // trackRemoteContentLoadSuccess
+ expect(
+ spiedOnMockedTrackRemoteContentLoadSuccess.mock.calls.length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackRemoteContentLoadSuccess.mock.calls[0].length
+ ).toBe(5);
+ expect(
+ spiedOnMockedTrackRemoteContentLoadSuccess.mock.calls[0][0]
+ ).toBe(serviceDetail?.id);
+ expect(
+ spiedOnMockedTrackRemoteContentLoadSuccess.mock.calls[0][1]
+ ).toBe(serviceDetail?.name);
+ expect(
+ spiedOnMockedTrackRemoteContentLoadSuccess.mock.calls[0][2]
+ ).toBe(serviceDetail?.organization.name);
+ expect(
+ spiedOnMockedTrackRemoteContentLoadSuccess.mock.calls[0][3]
+ ).toBe(serviceDetail?.organization.fiscal_code);
+ expect(
+ spiedOnMockedTrackRemoteContentLoadSuccess.mock.calls[0][4]
+ ).toBe(tagEnum);
+
+ // trackPNNotificationLoadSuccess
+ if (
+ tagEnum === TESEND.PN &&
+ !messageWrapper.isNone &&
+ messageWrapper.isSend
+ ) {
+ expect(
+ spiedOnMockedTrackPNNotificationLoadSuccess.mock.calls.length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackPNNotificationLoadSuccess.mock.calls[0]
+ .length
+ ).toBe(4);
+ expect(
+ spiedOnMockedTrackPNNotificationLoadSuccess.mock.calls[0][0]
+ ).toBe(attachmentCount !== undefined && attachmentCount > 0);
+ expect(
+ spiedOnMockedTrackPNNotificationLoadSuccess.mock.calls[0][1]
+ ).toBe(messageWrapper.timelineStatus);
+ expect(
+ spiedOnMockedTrackPNNotificationLoadSuccess.mock.calls[0][2]
+ ).toBe("message");
+ expect(
+ spiedOnMockedTrackPNNotificationLoadSuccess.mock.calls[0][3]
+ ).toBe("not_set");
+ } else {
+ expect(
+ spiedOnMockedTrackPNNotificationLoadSuccess.mock.calls.length
+ ).toBe(0);
+ }
+
+ // trackPNNotificationLoadError
+ if (
+ tagEnum === TESEND.PN &&
+ (messageWrapper.isNone || !messageWrapper.isSend)
+ ) {
+ expect(
+ spiedOnMockedTrackPNNotificationLoadError.mock.calls.length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackPNNotificationLoadError.mock.calls[0].length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackPNNotificationLoadError.mock.calls[0][0]
+ ).toBe(
+ "Unable convert the third party message to SEND message structure"
+ );
+ } else {
+ expect(
+ spiedOnMockedTrackPNNotificationLoadError.mock.calls.length
+ ).toBe(0);
+ }
+
+ // trackThirdPartyMessageAttachmentCount
+ if (tagEnum !== TESEND.PN) {
+ expect(
+ spiedOnMockedTrackThirdPartyMessageAttachmentCount.mock.calls
+ .length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackThirdPartyMessageAttachmentCount.mock
+ .calls[0].length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackThirdPartyMessageAttachmentCount.mock
+ .calls[0][0]
+ ).toBe(
+ !messageWrapper.isNone && attachmentCount
+ ? attachmentCount
+ : 0
+ );
+ } else {
+ expect(
+ spiedOnMockedTrackThirdPartyMessageAttachmentCount.mock.calls
+ .length
+ ).toBe(0);
+ }
+ });
+ });
+ });
+ });
+ });
+ });
+
+ describe("testable.trackFailure", () => {
+ [undefined, serviceDetails].forEach(serviceDetail => {
+ [
+ TEBASE.EU_COVID_CERT,
+ TEBASE.GENERIC,
+ TEBASE.LEGAL_MESSAGE,
+ TEPAYMENT.PAYMENT,
+ TESEND.PN
+ ].forEach(tagEnum => {
+ it(`should call proper analytics functions (service details (${
+ serviceDetail != null ? "defined" : "undefined"
+ }) tag (${tagEnum}))`, () => {
+ const reason = "A reason";
+ const spiedOnMockedTrackRemoteContentLoadFailure = jest
+ .spyOn(ANALYTICS, "trackRemoteContentLoadFailure")
+ .mockImplementation();
+ const spiedOnMockedTrackPNNotificationLoadError = jest
+ .spyOn(SEND_ANALYTICS, "trackPNNotificationLoadError")
+ .mockImplementation();
+
+ testable!.trackFailure(reason, serviceDetail, tagEnum);
+
+ expect(
+ spiedOnMockedTrackRemoteContentLoadFailure.mock.calls.length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackRemoteContentLoadFailure.mock.calls[0].length
+ ).toBe(6);
+ expect(
+ spiedOnMockedTrackRemoteContentLoadFailure.mock.calls[0][0]
+ ).toBe(serviceDetail?.id);
+ expect(
+ spiedOnMockedTrackRemoteContentLoadFailure.mock.calls[0][1]
+ ).toBe(serviceDetail?.name);
+ expect(
+ spiedOnMockedTrackRemoteContentLoadFailure.mock.calls[0][2]
+ ).toBe(serviceDetail?.organization.name);
+ expect(
+ spiedOnMockedTrackRemoteContentLoadFailure.mock.calls[0][3]
+ ).toBe(serviceDetail?.organization.fiscal_code);
+ expect(
+ spiedOnMockedTrackRemoteContentLoadFailure.mock.calls[0][4]
+ ).toBe(tagEnum);
+ expect(
+ spiedOnMockedTrackRemoteContentLoadFailure.mock.calls[0][5]
+ ).toBe(reason);
+
+ if (tagEnum === TESEND.PN) {
+ expect(
+ spiedOnMockedTrackPNNotificationLoadError.mock.calls.length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackPNNotificationLoadError.mock.calls[0].length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackPNNotificationLoadError.mock.calls[0][0]
+ ).toBe(reason);
+ } else {
+ expect(
+ spiedOnMockedTrackPNNotificationLoadError.mock.calls.length
+ ).toBe(0);
+ }
+ });
+ });
+ });
+ });
+});
diff --git a/ts/features/messages/saga/handleThirdPartyMessage.ts b/ts/features/messages/saga/handleThirdPartyMessage.ts
index c1c4b820db2..649f0921b40 100644
--- a/ts/features/messages/saga/handleThirdPartyMessage.ts
+++ b/ts/features/messages/saga/handleThirdPartyMessage.ts
@@ -24,6 +24,7 @@ import { TagEnum } from "../../../../definitions/backend/MessageCategoryPN";
import { serviceDetailsByIdSelector } from "../../services/details/store/selectors";
import { ServiceDetails } from "../../../../definitions/services/ServiceDetails";
import { thirdPartyKind } from "../types/thirdPartyById";
+import { isTestEnv } from "../../../utils/environment";
export function* handleThirdPartyMessage(
getThirdPartyMessage: BackendClient["getThirdPartyMessage"],
@@ -96,9 +97,21 @@ const trackSuccess = (
if (O.isSome(pnMessageOption)) {
const pnMessage = pnMessageOption.value;
- trackPNNotificationLoadSuccess(pnMessage);
+ const hasAttachments =
+ pnMessage.attachments != null && pnMessage.attachments.length > 0;
+ const timeline = pnMessage.notificationStatusHistory;
+ const status =
+ timeline.length > 0 ? timeline[timeline.length - 1].status : undefined;
+ trackPNNotificationLoadSuccess(
+ hasAttachments,
+ status,
+ "message",
+ "not_set"
+ );
} else {
- trackPNNotificationLoadError();
+ trackPNNotificationLoadError(
+ "Unable convert the third party message to SEND message structure"
+ );
}
} else {
const attachments = messageFromApi.third_party_message.attachments;
@@ -125,3 +138,5 @@ const trackFailure = (
trackPNNotificationLoadError(reason);
}
};
+
+export const testable = isTestEnv ? { trackSuccess, trackFailure } : undefined;
diff --git a/ts/features/messages/screens/MessageDetailsScreen.tsx b/ts/features/messages/screens/MessageDetailsScreen.tsx
index 5b5f989b8e4..7c7a86bafaa 100644
--- a/ts/features/messages/screens/MessageDetailsScreen.tsx
+++ b/ts/features/messages/screens/MessageDetailsScreen.tsx
@@ -204,6 +204,8 @@ export const MessageDetailsScreen = (props: MessageDetailsScreenProps) => {
{hasRemoteContent && }
diff --git a/ts/features/pn/__mocks__/pnMessage.ts b/ts/features/pn/__mocks__/pnMessage.ts
index 0bea75bc58e..7f9dd196baa 100644
--- a/ts/features/pn/__mocks__/pnMessage.ts
+++ b/ts/features/pn/__mocks__/pnMessage.ts
@@ -1,45 +1,52 @@
import { ThirdPartyMessageWithContent } from "../../../../definitions/backend/ThirdPartyMessageWithContent";
+import { Denomination } from "../../../../definitions/pn/Denomination";
+import { noticeCode } from "../../../../definitions/pn/noticeCode";
+import { paTaxId } from "../../../../definitions/pn/paTaxId";
+import { TaxId } from "../../../../definitions/pn/TaxId";
import { ThirdPartyAttachment } from "../../../../definitions/pn/ThirdPartyAttachment";
+import { ThirdPartyMessage } from "../../../../definitions/pn/ThirdPartyMessage";
import { message_1 } from "../../messages/__mocks__/message";
import { ATTACHMENT_CATEGORY } from "../../messages/types/attachmentCategory";
-export const thirdPartyMessage: ThirdPartyMessageWithContent = {
- ...message_1,
- created_at: new Date("2020-01-01T00:00:00.000Z"),
- third_party_message: {
- attachments: [
- {
- id: "1",
- name: "A First Attachment",
- content_type: "application/pdf",
- category: ATTACHMENT_CATEGORY.DOCUMENT,
- url: "/resource/attachment1.pdf"
- },
+export const sendThirdPartyMessage: ThirdPartyMessage = {
+ attachments: [
+ {
+ id: "1",
+ name: "A First Attachment",
+ content_type: "application/pdf",
+ category: ATTACHMENT_CATEGORY.DOCUMENT,
+ url: "/resource/attachment1.pdf"
+ },
+ {
+ id: "2",
+ name: "A Second Attachment",
+ content_type: "application/pdf",
+ category: ATTACHMENT_CATEGORY.DOCUMENT,
+ url: "/resource/attachment2.pdf"
+ }
+ ] as Array,
+ details: {
+ abstract: "######## abstract ########",
+ iun: "731143-7-0317-8200-0",
+ subject: "######## subject ########",
+ recipients: [
{
- id: "2",
- name: "A Second Attachment",
- content_type: "application/pdf",
- category: ATTACHMENT_CATEGORY.DOCUMENT,
- url: "/resource/attachment2.pdf"
- }
- ] as Array,
- details: {
- abstract: "######## abstract ########",
- iun: "731143-7-0317-8200-0",
- subject: "######## subject ########",
- recipients: [
- {
- recipientType: "-",
- taxId: "AAABBB00A00A000A",
- denomination: "AaAaAa BbBbBb",
- payment: {
- noticeCode: "026773337463073118",
- creditorTaxId: "00000000009"
- }
+ recipientType: "-",
+ taxId: "AAABBB00A00A000A" as TaxId,
+ denomination: "AaAaAa BbBbBb" as Denomination,
+ payment: {
+ noticeCode: "026773337463073118" as noticeCode,
+ creditorTaxId: "00000000009" as paTaxId
}
- ],
- notificationStatusHistory: [],
- senderDenomination: "Sender denomination"
- }
+ }
+ ],
+ notificationStatusHistory: [],
+ senderDenomination: "Sender denomination"
}
};
+
+export const thirdPartyMessage: ThirdPartyMessageWithContent = {
+ ...message_1,
+ created_at: new Date("2020-01-01T00:00:00.000Z"),
+ third_party_message: sendThirdPartyMessage
+};
diff --git a/ts/features/pn/aar/analytics/__tests__/index.test.ts b/ts/features/pn/aar/analytics/__tests__/index.test.ts
index a4daa14e3b3..bf8f1e4b143 100644
--- a/ts/features/pn/aar/analytics/__tests__/index.test.ts
+++ b/ts/features/pn/aar/analytics/__tests__/index.test.ts
@@ -1,12 +1,33 @@
import {
+ trackSendAARAccessDeniedDelegateInfo,
+ trackSendAARAccessDeniedDismissed,
+ trackSendAARAccessDeniedScreenView,
+ trackSendAARToS,
+ trackSendAARToSAccepted,
+ trackSendAARToSDismissed,
aarProblemJsonAnalyticsReport,
trackSendAARFailure,
trackSendQRCodeScanRedirect,
trackSendQRCodeScanRedirectConfirmed,
- trackSendQRCodeScanRedirectDismissed
+ trackSendQRCodeScanRedirectDismissed,
+ trackSendAarNotificationClosure,
+ trackSendAarNotificationClosureBack,
+ trackSendAarNotificationClosureConfirm,
+ trackSendAarNotificationClosureExit,
+ trackSendAarErrorScreenClosure,
+ trackSendAarErrorScreenDetails,
+ trackSendAarErrorScreenDetailsHelp,
+ trackSendAarErrorScreenDetailsCode
} from "..";
import { AARProblemJson } from "../../../../../../definitions/pn/aar/AARProblemJson";
import * as mixpanel from "../../../../../mixpanel";
+import { SendUserType } from "../../../../pushNotifications/analytics";
+
+const sendUserTypes: ReadonlyArray = [
+ "mandatory",
+ "not_set",
+ "recipient"
+];
describe("index", () => {
const spiedOnMockedMixpanelTrack = jest
@@ -321,4 +342,240 @@ describe("index", () => {
});
});
});
+
+ describe("trackSendAARToS", () => {
+ it("should call 'mixpanelTrack' with proper event name and properties", () => {
+ trackSendAARToS();
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "SEND_TEMPORARY_NOTIFICATION_OPENING_DISCLAIMER"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "UX",
+ event_type: "screen_view"
+ });
+ });
+ });
+
+ describe("trackSendAARToSAccepted", () => {
+ it("should call 'mixpanelTrack' with proper event name and properties", () => {
+ trackSendAARToSAccepted();
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "SEND_TEMPORARY_NOTIFICATION_OPENING_DISCLAIMER_ACCEPTED"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "UX",
+ event_type: "action"
+ });
+ });
+ });
+
+ describe("trackSendAARToSDismissed", () => {
+ it("should call 'mixpanelTrack' with proper event name and properties", () => {
+ trackSendAARToSDismissed();
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "SEND_TEMPORARY_NOTIFICATION_OPENING_DISCLAIMER_DISMISSED"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "UX",
+ event_type: "action"
+ });
+ });
+ });
+
+ describe("trackSendAARAccessDeniedScreenView", () => {
+ it("should call 'mixpanelTrack' with proper event name and properties", () => {
+ trackSendAARAccessDeniedScreenView();
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "SEND_TEMPORARY_NOTIFICATION_OPENING_NOT_ALLOWED"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "UX",
+ event_type: "screen_view"
+ });
+ });
+ });
+
+ describe("trackSendAARAccessDeniedDelegateInfo", () => {
+ it("should call 'mixpanelTrack' with proper event name and properties", () => {
+ trackSendAARAccessDeniedDelegateInfo();
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "SEND_TEMPORARY_NOTIFICATION_OPENING_NOT_ALLOWED_MANDATE_INFO"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "UX",
+ event_type: "exit"
+ });
+ });
+ });
+
+ describe("trackSendAARAccessDeniedDismissed", () => {
+ it("should call 'mixpanelTrack' with proper event name and properties", () => {
+ trackSendAARAccessDeniedDismissed();
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "SEND_TEMPORARY_NOTIFICATION_OPENING_NOT_ALLOWED_DISMISSED"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "UX",
+ event_type: "action"
+ });
+ });
+ });
+
+ describe("trackSendAarNotificationClosure", () => {
+ sendUserTypes.forEach(userType => {
+ it(`should call 'mixpanelTrack' with proper event name and parameters (userType ${userType})`, () => {
+ trackSendAarNotificationClosure(userType);
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "SEND_TEMPORARY_NOTIFICATION_CLOSURE"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "UX",
+ event_type: "screen_view",
+ send_user: userType
+ });
+ });
+ });
+ });
+
+ describe("trackSendAarNotificationClosureBack", () => {
+ sendUserTypes.forEach(userType => {
+ it(`should call 'mixpanelTrack' with proper event name and parameters (userType ${userType})`, () => {
+ trackSendAarNotificationClosureBack(userType);
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "SEND_TEMPORARY_NOTIFICATION_CLOSURE_BACK"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "UX",
+ event_type: "action",
+ send_user: userType
+ });
+ });
+ });
+ });
+
+ describe("trackSendAarNotificationClosureConfirm", () => {
+ sendUserTypes.forEach(userType => {
+ it(`should call 'mixpanelTrack' with proper event name and parameters (userType ${userType})`, () => {
+ trackSendAarNotificationClosureConfirm(userType);
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "SEND_TEMPORARY_NOTIFICATION_CLOSURE_CONFIRM"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "UX",
+ event_type: "action",
+ send_user: userType
+ });
+ });
+ });
+ });
+
+ describe("trackSendAarNotificationClosureExit", () => {
+ sendUserTypes.forEach(userType => {
+ it(`should call 'mixpanelTrack' with proper event name and parameters (userType ${userType})`, () => {
+ trackSendAarNotificationClosureExit(userType);
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "SEND_TEMPORARY_NOTIFICATION_CLOSURE_EXIT"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "UX",
+ event_type: "exit",
+ send_user: userType
+ });
+ });
+ });
+ });
+
+ describe("trackSendAarErrorScreenClosure", () => {
+ it(`should call 'mixpanelTrack' with proper event name and parameters)`, () => {
+ trackSendAarErrorScreenClosure();
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "SEND_AAR_ERROR_CLOSURE"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "UX",
+ event_type: "action"
+ });
+ });
+ });
+
+ describe("trackSendAarErrorScreenDetails", () => {
+ it(`should call 'mixpanelTrack' with proper event name and parameters)`, () => {
+ trackSendAarErrorScreenDetails();
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "SEND_AAR_ERROR_DETAIL"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "UX",
+ event_type: "screen_view"
+ });
+ });
+ });
+
+ describe("trackSendAarErrorScreenDetailsHelp", () => {
+ it(`should call 'mixpanelTrack' with proper event name and parameters)`, () => {
+ trackSendAarErrorScreenDetailsHelp();
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "SEND_AAR_ERROR_DETAIL_HELP"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "UX",
+ event_type: "action"
+ });
+ });
+ });
+
+ describe("trackSendAarErrorScreenDetailsCode", () => {
+ it(`should call 'mixpanelTrack' with proper event name and parameters)`, () => {
+ trackSendAarErrorScreenDetailsCode();
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "SEND_AAR_ERROR_DETAIL_CODE"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "UX",
+ event_type: "action"
+ });
+ });
+ });
});
diff --git a/ts/features/pn/aar/analytics/index.ts b/ts/features/pn/aar/analytics/index.ts
index 219f838879e..ab3ac3d02f8 100644
--- a/ts/features/pn/aar/analytics/index.ts
+++ b/ts/features/pn/aar/analytics/index.ts
@@ -1,6 +1,7 @@
import { AARProblemJson } from "../../../../../definitions/pn/aar/AARProblemJson";
import { mixpanelTrack } from "../../../../mixpanel";
import { buildEventProperties } from "../../../../utils/analytics";
+import { SendUserType } from "../../../pushNotifications/analytics";
import { SendAARFailurePhase } from "../utils/stateUtils";
export const trackSendQRCodeScanRedirect = () => {
@@ -33,6 +34,43 @@ export const trackSendAARFailure = (
void mixpanelTrack(eventName, props);
};
+export const trackSendAARToS = () => {
+ const eventName = "SEND_TEMPORARY_NOTIFICATION_OPENING_DISCLAIMER";
+ const props = buildEventProperties("UX", "screen_view");
+ void mixpanelTrack(eventName, props);
+};
+
+export const trackSendAARToSAccepted = () => {
+ const eventName = "SEND_TEMPORARY_NOTIFICATION_OPENING_DISCLAIMER_ACCEPTED";
+ const props = buildEventProperties("UX", "action");
+ void mixpanelTrack(eventName, props);
+};
+
+export const trackSendAARToSDismissed = () => {
+ const eventName = "SEND_TEMPORARY_NOTIFICATION_OPENING_DISCLAIMER_DISMISSED";
+ const props = buildEventProperties("UX", "action");
+ void mixpanelTrack(eventName, props);
+};
+
+export const trackSendAARAccessDeniedScreenView = () => {
+ const eventName = "SEND_TEMPORARY_NOTIFICATION_OPENING_NOT_ALLOWED";
+ const props = buildEventProperties("UX", "screen_view");
+ void mixpanelTrack(eventName, props);
+};
+
+export const trackSendAARAccessDeniedDelegateInfo = () => {
+ const eventName =
+ "SEND_TEMPORARY_NOTIFICATION_OPENING_NOT_ALLOWED_MANDATE_INFO";
+ const props = buildEventProperties("UX", "exit");
+ void mixpanelTrack(eventName, props);
+};
+
+export const trackSendAARAccessDeniedDismissed = () => {
+ const eventName = "SEND_TEMPORARY_NOTIFICATION_OPENING_NOT_ALLOWED_DISMISSED";
+ const props = buildEventProperties("UX", "action");
+ void mixpanelTrack(eventName, props);
+};
+
export const aarProblemJsonAnalyticsReport = (
responseCode: number,
input: AARProblemJson
@@ -52,3 +90,61 @@ export const aarProblemJsonAnalyticsReport = (
: "";
return `${responseCode} ${input.status}${titleReport} ${input.detail}${traceIdReport}${errorReport}`;
};
+
+export const trackSendAarNotificationClosure = (userType: SendUserType) => {
+ const eventName = "SEND_TEMPORARY_NOTIFICATION_CLOSURE";
+ const eventProps = buildEventProperties("UX", "screen_view", {
+ send_user: userType
+ });
+ void mixpanelTrack(eventName, eventProps);
+};
+
+export const trackSendAarNotificationClosureBack = (userType: SendUserType) => {
+ const eventName = "SEND_TEMPORARY_NOTIFICATION_CLOSURE_BACK";
+ const eventProps = buildEventProperties("UX", "action", {
+ send_user: userType
+ });
+ void mixpanelTrack(eventName, eventProps);
+};
+
+export const trackSendAarNotificationClosureConfirm = (
+ userType: SendUserType
+) => {
+ const eventName = "SEND_TEMPORARY_NOTIFICATION_CLOSURE_CONFIRM";
+ const eventProps = buildEventProperties("UX", "action", {
+ send_user: userType
+ });
+ void mixpanelTrack(eventName, eventProps);
+};
+
+export const trackSendAarNotificationClosureExit = (userType: SendUserType) => {
+ const eventName = "SEND_TEMPORARY_NOTIFICATION_CLOSURE_EXIT";
+ const eventProps = buildEventProperties("UX", "exit", {
+ send_user: userType
+ });
+ void mixpanelTrack(eventName, eventProps);
+};
+
+export const trackSendAarErrorScreenClosure = () => {
+ const eventName = "SEND_AAR_ERROR_CLOSURE";
+ const eventProps = buildEventProperties("UX", "action");
+ void mixpanelTrack(eventName, eventProps);
+};
+
+export const trackSendAarErrorScreenDetails = () => {
+ const eventName = "SEND_AAR_ERROR_DETAIL";
+ const eventProps = buildEventProperties("UX", "screen_view");
+ void mixpanelTrack(eventName, eventProps);
+};
+
+export const trackSendAarErrorScreenDetailsHelp = () => {
+ const eventName = "SEND_AAR_ERROR_DETAIL_HELP";
+ const eventProps = buildEventProperties("UX", "action");
+ void mixpanelTrack(eventName, eventProps);
+};
+
+export const trackSendAarErrorScreenDetailsCode = () => {
+ const eventName = "SEND_AAR_ERROR_DETAIL_CODE";
+ const eventProps = buildEventProperties("UX", "action");
+ void mixpanelTrack(eventName, eventProps);
+};
diff --git a/ts/features/pn/aar/components/SendAARMessageDetailBottomSheet.tsx b/ts/features/pn/aar/components/SendAARMessageDetailBottomSheet.tsx
index 5acf3ed127e..3d5886d811c 100644
--- a/ts/features/pn/aar/components/SendAARMessageDetailBottomSheet.tsx
+++ b/ts/features/pn/aar/components/SendAARMessageDetailBottomSheet.tsx
@@ -9,21 +9,25 @@ import { View } from "react-native";
import { useIOSelector } from "../../../../store/hooks";
import { sendVisitTheWebsiteUrlSelector } from "../../../../store/reducers/backendStatus/remoteConfig";
import { openWebUrl } from "../../../../utils/url";
+import { trackSendAarNotificationClosureExit } from "../analytics";
+import { SendUserType } from "../../../pushNotifications/analytics";
export type SendAARMessageDetailBottomSheetProps = {
- isDelegate: boolean;
onPrimaryActionPress: () => void;
onSecondaryActionPress: () => void;
+ sendUserType: SendUserType;
};
export const SendAARMessageDetailBottomSheet = ({
- isDelegate,
onPrimaryActionPress,
- onSecondaryActionPress
+ onSecondaryActionPress,
+ sendUserType
}: SendAARMessageDetailBottomSheetProps) => {
+ const isDelegate = sendUserType === "mandatory";
const sendVisitTheWebsiteUrl = useIOSelector(sendVisitTheWebsiteUrlSelector);
const onLinkPress = () => {
+ trackSendAarNotificationClosureExit(sendUserType);
openWebUrl(sendVisitTheWebsiteUrl);
};
diff --git a/ts/features/pn/aar/components/SendAARMessageDetailBottomSheetComponent.tsx b/ts/features/pn/aar/components/SendAARMessageDetailBottomSheetComponent.tsx
index de0a15ec444..f1413193829 100644
--- a/ts/features/pn/aar/components/SendAARMessageDetailBottomSheetComponent.tsx
+++ b/ts/features/pn/aar/components/SendAARMessageDetailBottomSheetComponent.tsx
@@ -1,31 +1,35 @@
import I18n from "i18next";
import { RefObject } from "react";
import { useIONavigation } from "../../../../navigation/params/AppParamsList";
-import { useIOSelector, useIOStore } from "../../../../store/hooks";
+import { useIOStore } from "../../../../store/hooks";
import { useIOBottomSheetModal } from "../../../../utils/hooks/bottomSheet";
import { MESSAGES_ROUTES } from "../../../messages/navigation/routes";
import PN_ROUTES from "../../navigation/routes";
import { isPnServiceEnabled } from "../../reminderBanner/reducer/bannerDismiss";
-import { isAarMessageDelegatedSelector } from "../store/selectors";
+import { SendUserType } from "../../../pushNotifications/analytics";
+import {
+ trackSendAarNotificationClosureBack,
+ trackSendAarNotificationClosureConfirm
+} from "../analytics";
import { SendAARMessageDetailBottomSheet } from "./SendAARMessageDetailBottomSheet";
-type SendAARMessageDetailBottomSheetComponentProps = {
+export type SendAARMessageDetailBottomSheetComponentProps = {
aarBottomSheetRef: RefObject<(() => void) | undefined>;
- iun: string;
+ sendUserType: SendUserType;
};
export const SendAARMessageDetailBottomSheetComponent = ({
aarBottomSheetRef,
- iun
+ sendUserType
}: SendAARMessageDetailBottomSheetComponentProps) => {
const navigation = useIONavigation();
const store = useIOStore();
- const isDelegate = useIOSelector(state =>
- isAarMessageDelegatedSelector(state, iun)
- );
const onSecondaryActionPress = () => {
+ trackSendAarNotificationClosureConfirm(sendUserType);
+
dismiss();
+
const state = store.getState();
// This selector returns undefined if service's preferences have
// not been requested and loaded yet. But here, we are looking at
@@ -37,7 +41,6 @@ export const SendAARMessageDetailBottomSheetComponent = ({
// retrieved. The undefined case is treated as a disabled service,
// showing the activation flow to the user.
const isSendServiceEnabled = isPnServiceEnabled(state) ?? false;
-
if (isSendServiceEnabled) {
navigation.popToTop();
return;
@@ -49,7 +52,7 @@ export const SendAARMessageDetailBottomSheetComponent = ({
screen: PN_ROUTES.ENGAGEMENT_SCREEN,
params: {
sendOpeningSource: "aar",
- sendUserType: isDelegate ? "mandatory" : "recipient"
+ sendUserType
}
}
});
@@ -59,9 +62,12 @@ export const SendAARMessageDetailBottomSheetComponent = ({
title: I18n.t("features.pn.aar.flow.closeNotification.title"),
component: (
dismiss()}
+ onPrimaryActionPress={() => {
+ trackSendAarNotificationClosureBack(sendUserType);
+ dismiss();
+ }}
onSecondaryActionPress={onSecondaryActionPress}
+ sendUserType={sendUserType}
/>
)
});
diff --git a/ts/features/pn/aar/components/SendAARTosComponent.tsx b/ts/features/pn/aar/components/SendAARTosComponent.tsx
index 8a9ea726f89..75c9ce4b056 100644
--- a/ts/features/pn/aar/components/SendAARTosComponent.tsx
+++ b/ts/features/pn/aar/components/SendAARTosComponent.tsx
@@ -5,11 +5,17 @@ import { useIOSelector } from "../../../../store/hooks";
import { pnPrivacyUrlsSelector } from "../../../../store/reducers/backendStatus/remoteConfig";
import { openWebUrl } from "../../../../utils/url";
import { useSendAarFlowManager } from "../hooks/useSendAarFlowManager";
+import { trackSendAARToSDismissed } from "../analytics";
export const SendAARTosComponent = () => {
const tosConfig = useIOSelector(pnPrivacyUrlsSelector);
const { goToNextState, terminateFlow } = useSendAarFlowManager();
+ const onSecondaryAction = () => {
+ trackSendAARToSDismissed();
+ terminateFlow();
+ };
+
const bodyPropsArray: Array = [
{
text: i18n.t("features.pn.aar.flow.aarTos.body.firstPart")
@@ -53,7 +59,7 @@ export const SendAARTosComponent = () => {
}}
secondaryAction={{
label: i18n.t("features.pn.aar.flow.aarTos.secondaryAction"),
- onPress: terminateFlow,
+ onPress: onSecondaryAction,
testID: "secondary_button"
}}
/>
diff --git a/ts/features/pn/aar/components/__mocks__/SendAARMessageDetailBottomSheet.tsx b/ts/features/pn/aar/components/__mocks__/SendAARMessageDetailBottomSheet.tsx
new file mode 100644
index 00000000000..1eb8f6cad19
--- /dev/null
+++ b/ts/features/pn/aar/components/__mocks__/SendAARMessageDetailBottomSheet.tsx
@@ -0,0 +1,23 @@
+import { Pressable, View } from "react-native";
+import { SendAARMessageDetailBottomSheetProps } from "../SendAARMessageDetailBottomSheet";
+
+export const SendAARMessageDetailBottomSheet = ({
+ onPrimaryActionPress,
+ onSecondaryActionPress,
+ sendUserType
+}: SendAARMessageDetailBottomSheetProps) => (
+
+ {`Mock SendAARMessageDetailBottomSheet`}
+ {`Send user type: ${sendUserType}`}
+ {`Mock Primary Action`}
+ {`Mock Secondary Action`}
+
+);
diff --git a/ts/features/pn/aar/components/__mocks__/SendAARMessageDetailBottomSheetComponent.tsx b/ts/features/pn/aar/components/__mocks__/SendAARMessageDetailBottomSheetComponent.tsx
new file mode 100644
index 00000000000..4b90f6f6bad
--- /dev/null
+++ b/ts/features/pn/aar/components/__mocks__/SendAARMessageDetailBottomSheetComponent.tsx
@@ -0,0 +1,17 @@
+import { View } from "react-native";
+import { SendAARMessageDetailBottomSheetComponentProps } from "../SendAARMessageDetailBottomSheetComponent";
+
+export const SendAARMessageDetailBottomSheetComponent = ({
+ aarBottomSheetRef,
+ sendUserType
+}: SendAARMessageDetailBottomSheetComponentProps) => {
+ // eslint-disable-next-line functional/immutable-data
+ aarBottomSheetRef.current = jest.fn();
+ return (
+
+ {`Mock SendAARMessageDetailBottomSheetComponent`}
+ {`Ref container: set to jest.fn() internally`}
+ {`User type: ${sendUserType}`}
+
+ );
+};
diff --git a/ts/features/pn/aar/components/__tests__/SendAARMessageDetailBottomSheet.test.tsx b/ts/features/pn/aar/components/__tests__/SendAARMessageDetailBottomSheet.test.tsx
index aa1707d16b0..9b691369296 100644
--- a/ts/features/pn/aar/components/__tests__/SendAARMessageDetailBottomSheet.test.tsx
+++ b/ts/features/pn/aar/components/__tests__/SendAARMessageDetailBottomSheet.test.tsx
@@ -1,20 +1,21 @@
import { fireEvent } from "@testing-library/react-native";
import { createStore } from "redux";
import { applicationChangeState } from "../../../../../store/actions/application";
-import * as HOOKS from "../../../../../store/hooks";
import { appReducer } from "../../../../../store/reducers";
-import { sendVisitTheWebsiteUrlSelector } from "../../../../../store/reducers/backendStatus/remoteConfig";
import { GlobalState } from "../../../../../store/reducers/types";
import { renderScreenWithNavigationStoreContext } from "../../../../../utils/testWrapper";
-import * as URL_UTILS from "../../../../../utils/url";
import PN_ROUTES from "../../../navigation/routes";
-import { currentAARFlowData } from "../../store/selectors";
import { AARFlowState, sendAARFlowStates } from "../../utils/stateUtils";
import { sendAarMockStateFactory } from "../../utils/testUtils";
import {
SendAARMessageDetailBottomSheet,
SendAARMessageDetailBottomSheetProps
} from "../SendAARMessageDetailBottomSheet";
+import { SendUserType } from "../../../../pushNotifications/analytics";
+import * as ANALYTICS from "../../analytics";
+import * as REMOTE_CONFIG_SELECTORS from "../../../../../store/reducers/backendStatus/remoteConfig";
+import * as SELECTORS from "../../store/selectors";
+import * as URL_UTILS from "../../../../../utils/url";
type DisplayingNotificationDataState = Extract<
AARFlowState,
@@ -26,50 +27,71 @@ describe("BottomSheetContent", () => {
const mockOnSecondaryActionPress = jest.fn();
const defaultProps: SendAARMessageDetailBottomSheetProps = {
- isDelegate: false,
onPrimaryActionPress: mockOnPrimaryActionPress,
- onSecondaryActionPress: mockOnSecondaryActionPress
+ onSecondaryActionPress: mockOnSecondaryActionPress,
+ sendUserType: "recipient"
};
const stateWithMandateId =
sendAarMockStateFactory.displayingNotificationData() as DisplayingNotificationDataState;
- const stateWithoutMandateId = {
- ...stateWithMandateId,
- mandateId: undefined
- } as DisplayingNotificationDataState;
-
beforeEach(() => {
jest.clearAllMocks();
+ jest.restoreAllMocks();
});
- it("calls openWebUrl when link is pressed", () => {
- const openWebUrlSpy = jest
- .spyOn(URL_UTILS, "openWebUrl")
- .mockImplementation(jest.fn());
-
- const mockUrl = "https://example.com/test-url";
-
- jest.spyOn(HOOKS, "useIOSelector").mockImplementation(selector => {
- if (selector === currentAARFlowData) {
- return stateWithMandateId;
- }
- if (selector === sendVisitTheWebsiteUrlSelector) {
- return mockUrl;
- }
- return undefined;
- });
+ const sendUserTypes: ReadonlyArray = [
+ "mandatory",
+ "not_set",
+ "recipient"
+ ];
- const { getByTestId } = renderComponent(defaultProps);
- const linkComponent = getByTestId("link");
- expect(openWebUrlSpy).toHaveBeenCalledTimes(0);
- fireEvent.press(linkComponent);
- expect(openWebUrlSpy).toHaveBeenCalledWith(mockUrl);
- expect(openWebUrlSpy).toHaveBeenCalledTimes(1);
+ const mockUrl = "https://example.com/test-url";
+
+ sendUserTypes.forEach(sendUserType => {
+ it(`calls openWebUrl when link is pressed and trackSendAarNotificationClosureExit with proper parameters (user type ${sendUserType})`, () => {
+ const openWebUrlSpy = jest
+ .spyOn(URL_UTILS, "openWebUrl")
+ .mockImplementation(jest.fn());
+
+ jest
+ .spyOn(SELECTORS, "currentAARFlowData")
+ .mockImplementation(() => stateWithMandateId);
+ jest
+ .spyOn(REMOTE_CONFIG_SELECTORS, "sendVisitTheWebsiteUrlSelector")
+ .mockImplementation(() => mockUrl);
+ const spiedOnMockedTrackSendAarNotificationClosureExit = jest
+ .spyOn(ANALYTICS, "trackSendAarNotificationClosureExit")
+ .mockImplementation();
+
+ const { getByTestId } = renderComponent({
+ ...defaultProps,
+ sendUserType
+ });
+
+ const linkComponent = getByTestId("link");
+ expect(openWebUrlSpy).toHaveBeenCalledTimes(0);
+ fireEvent.press(linkComponent);
+
+ expect(openWebUrlSpy).toHaveBeenCalledWith(mockUrl);
+ expect(openWebUrlSpy).toHaveBeenCalledTimes(1);
+
+ expect(
+ spiedOnMockedTrackSendAarNotificationClosureExit.mock.calls.length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackSendAarNotificationClosureExit.mock.calls[0].length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackSendAarNotificationClosureExit.mock.calls[0][0]
+ ).toBe(sendUserType);
+ });
});
it("calls onPrimaryActionPress when primary button is pressed", () => {
- jest.spyOn(HOOKS, "useIOSelector").mockReturnValue(stateWithMandateId);
+ jest
+ .spyOn(SELECTORS, "currentAARFlowData")
+ .mockImplementation(() => stateWithMandateId);
const { getByTestId } = renderComponent(defaultProps);
expect(mockOnPrimaryActionPress).toHaveBeenCalledTimes(0);
@@ -79,7 +101,9 @@ describe("BottomSheetContent", () => {
});
it("calls onSecondaryActionPress when secondary button is pressed", () => {
- jest.spyOn(HOOKS, "useIOSelector").mockReturnValue(stateWithMandateId);
+ jest
+ .spyOn(SELECTORS, "currentAARFlowData")
+ .mockImplementation(() => stateWithMandateId);
const { getByTestId } = renderComponent(defaultProps);
const buttonComponent = getByTestId("secondary_button");
@@ -87,19 +111,6 @@ describe("BottomSheetContent", () => {
fireEvent.press(buttonComponent);
expect(mockOnSecondaryActionPress).toHaveBeenCalledTimes(1);
});
-
- [false, true].forEach(isDelegate =>
- it(`should match snapshot when isDelegate='${isDelegate}'`, () => {
- jest
- .spyOn(HOOKS, "useIOSelector")
- .mockReturnValue(
- isDelegate ? stateWithMandateId : stateWithoutMandateId
- );
-
- const { toJSON } = renderComponent({ ...defaultProps, isDelegate });
- expect(toJSON()).toMatchSnapshot();
- })
- );
});
const renderComponent = (props: SendAARMessageDetailBottomSheetProps) => {
diff --git a/ts/features/pn/aar/components/__tests__/SendAARMessageDetailBottomSheetComponent.test.tsx b/ts/features/pn/aar/components/__tests__/SendAARMessageDetailBottomSheetComponent.test.tsx
index 4c534118618..fe6256b1669 100644
--- a/ts/features/pn/aar/components/__tests__/SendAARMessageDetailBottomSheetComponent.test.tsx
+++ b/ts/features/pn/aar/components/__tests__/SendAARMessageDetailBottomSheetComponent.test.tsx
@@ -1,116 +1,166 @@
-import { act } from "@testing-library/react-native";
+import { fireEvent } from "@testing-library/react-native";
import { RefObject } from "react";
import { createStore } from "redux";
-import * as BACK_BUTTON from "../../../../../hooks/useHardwareBackButton";
-import * as NAVIGATION from "../../../../../navigation/params/AppParamsList";
import { applicationChangeState } from "../../../../../store/actions/application";
-import * as STORE_HOOKS from "../../../../../store/hooks";
import { appReducer } from "../../../../../store/reducers";
import { GlobalState } from "../../../../../store/reducers/types";
-import * as BOTTOM_SHEET from "../../../../../utils/hooks/bottomSheet";
import { renderScreenWithNavigationStoreContext } from "../../../../../utils/testWrapper";
+import { SendAARMessageDetailBottomSheetComponent } from "../SendAARMessageDetailBottomSheetComponent";
import { MESSAGES_ROUTES } from "../../../../messages/navigation/routes";
import PN_ROUTES from "../../../navigation/routes";
+import * as ANALYTICS from "../../analytics";
import * as BANNER from "../../../reminderBanner/reducer/bannerDismiss";
-import { SendAARMessageDetailBottomSheetComponent } from "../SendAARMessageDetailBottomSheetComponent";
-import * as SELECTORS from "../../store/selectors";
+import * as BOTTOM_SHEET from "../../../../../utils/hooks/bottomSheet";
+import * as IO_NAVIGATION from "../../../../../navigation/params/AppParamsList";
+import { SendUserType } from "../../../../pushNotifications/analytics";
-describe("SendAARMessageDetailBottomSheetComponent", () => {
- const presentMock = jest.fn();
- const dismissMock = jest.fn();
- const replaceMock = jest.fn();
- const popToTopMock = jest.fn();
- const getStateMock = jest.fn();
+jest.mock("../SendAARMessageDetailBottomSheet");
+
+const sendUserTypes: ReadonlyArray = [
+ "mandatory",
+ "not_set",
+ "recipient"
+];
+describe("SendAARMessageDetailBottomSheetComponent", () => {
beforeEach(() => {
jest.clearAllMocks();
+ jest.restoreAllMocks();
+ });
- jest.spyOn(BOTTOM_SHEET, "useIOBottomSheetModal").mockReturnValue({
- bottomSheet: <>>,
- present: presentMock,
- dismiss: dismissMock
- });
+ it("should match snapshot", () => {
+ const { toJSON } = renderComponent("not_set");
+ expect(toJSON()).toMatchSnapshot();
+ });
- jest.spyOn(STORE_HOOKS, "useIOStore").mockReturnValue({
- getState: getStateMock
- } as any);
+ it("should assign 'present' to aarBottomSheetRef on mount", () => {
+ const mockPresent = jest.fn();
+ const refUseIOBottomSheetModal = BOTTOM_SHEET.useIOBottomSheetModal;
+ jest
+ .spyOn(BOTTOM_SHEET, "useIOBottomSheetModal")
+ .mockImplementation(props => {
+ const { bottomSheet } = refUseIOBottomSheetModal(props);
+ return {
+ bottomSheet,
+ dismiss: jest.fn(),
+ present: mockPresent
+ };
+ });
+ const { aarBottomSheetRef } = renderComponent("not_set");
+ expect(aarBottomSheetRef.current).toBe(mockPresent);
+ });
- jest.spyOn(BACK_BUTTON, "useHardwareBackButton").mockImplementation();
+ sendUserTypes.forEach(sendUserType => {
+ it(`should call trackSendAarNotificationClosureBack with proper parameters when the primary action is triggered (user type ${sendUserType})`, () => {
+ jest.restoreAllMocks();
- jest.spyOn(NAVIGATION, "useIONavigation").mockReturnValue({
- replace: replaceMock,
- popToTop: popToTopMock
- } as any);
+ const spiedOnMockedTrackSendAarNotificationClosureBack = jest
+ .spyOn(ANALYTICS, "trackSendAarNotificationClosureBack")
+ .mockImplementation();
- jest.spyOn(BANNER, "isPnServiceEnabled").mockReturnValue(false);
- });
+ const component = renderComponent(sendUserType);
- it("should assign 'present' to aarBottomSheetRef on mount", () => {
- const { aarBottomSheetRef } = renderComponent();
- expect(aarBottomSheetRef.current).toBe(presentMock);
- });
+ const primaryButton = component.getByTestId("primary_button");
+ fireEvent.press(primaryButton);
+
+ expect(
+ spiedOnMockedTrackSendAarNotificationClosureBack.mock.calls.length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackSendAarNotificationClosureBack.mock.calls[0].length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackSendAarNotificationClosureBack.mock.calls[0][0]
+ ).toBe(sendUserType);
+ });
- describe("onSecondaryActionPress navigation behavior", () => {
- [false, true].forEach(isDelegate =>
- test.each([
- [false, "replace"],
- [true, "popToTop"]
- ])(
- `when isPnServiceEnabled is %s and user is ${
- isDelegate ? "delegate" : "recipient"
- } it calls navigation.%s`,
- async (isEnabled, navigationMethod) => {
- getStateMock.mockReturnValue({});
- (BANNER.isPnServiceEnabled as jest.Mock).mockReturnValue(isEnabled);
-
- jest
- .spyOn(SELECTORS, "isAarMessageDelegatedSelector")
- .mockImplementation((_state, _iun) => isDelegate);
-
- renderComponent();
-
- await act(async () => {
- (
- BOTTOM_SHEET.useIOBottomSheetModal as jest.Mock
- ).mock.calls[0][0].component.props.onSecondaryActionPress();
+ [undefined, false, true].forEach(sendServiceEnabled => {
+ it(`should call trackSendAarNotificationClosureConfirm, dismiss and ${
+ sendServiceEnabled ? "popToTop" : "navigate to engagement screen"
+ } (user type ${sendUserType}, sendServiceEnabled ${sendServiceEnabled})`, () => {
+ const mockPopToTop = jest.fn();
+ const mockReplace = jest.fn();
+ jest.spyOn(IO_NAVIGATION, "useIONavigation").mockImplementation(
+ () =>
+ ({
+ popToTop: mockPopToTop,
+ replace: mockReplace
+ } as unknown as IO_NAVIGATION.IOStackNavigationProp<
+ IO_NAVIGATION.AppParamsList,
+ keyof IO_NAVIGATION.AppParamsList
+ >)
+ );
+
+ const mockDismiss = jest.fn();
+ const refUseIOBottomSheetModal = BOTTOM_SHEET.useIOBottomSheetModal;
+ jest
+ .spyOn(BOTTOM_SHEET, "useIOBottomSheetModal")
+ .mockImplementation(props => {
+ const { bottomSheet } = refUseIOBottomSheetModal(props);
+ return {
+ bottomSheet,
+ dismiss: mockDismiss,
+ present: jest.fn()
+ };
});
- expect(dismissMock).toHaveBeenCalledTimes(1);
- expect(dismissMock).toHaveBeenCalled();
-
- if (navigationMethod === "replace") {
- expect(popToTopMock.mock.calls.length).toEqual(0);
- expect(replaceMock).toHaveBeenCalledTimes(1);
- expect(replaceMock).toHaveBeenCalledWith(
- MESSAGES_ROUTES.MESSAGES_NAVIGATOR,
- {
- screen: PN_ROUTES.MAIN,
- params: {
- screen: PN_ROUTES.ENGAGEMENT_SCREEN,
- params: {
- sendOpeningSource: "aar",
- sendUserType: isDelegate ? "mandatory" : "recipient"
- }
- }
+ jest
+ .spyOn(BANNER, "isPnServiceEnabled")
+ .mockImplementation(() => sendServiceEnabled);
+
+ const spiedOnMockedTrackSendAarNotificationClosureConfirm = jest
+ .spyOn(ANALYTICS, "trackSendAarNotificationClosureConfirm")
+ .mockImplementation();
+
+ const component = renderComponent(sendUserType);
+
+ const secondaryButton = component.getByTestId("secondary_button");
+ fireEvent.press(secondaryButton);
+
+ expect(
+ spiedOnMockedTrackSendAarNotificationClosureConfirm.mock.calls.length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackSendAarNotificationClosureConfirm.mock.calls[0]
+ .length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackSendAarNotificationClosureConfirm.mock.calls[0][0]
+ ).toBe(sendUserType);
+
+ expect(mockDismiss.mock.calls.length).toBe(1);
+ expect(mockDismiss.mock.calls[0].length).toBe(0);
+
+ if (sendServiceEnabled) {
+ expect(mockPopToTop.mock.calls.length).toBe(1);
+ expect(mockPopToTop.mock.calls[0].length).toBe(0);
+
+ expect(mockReplace.mock.calls.length).toBe(0);
+ } else {
+ expect(mockPopToTop.mock.calls.length).toBe(0);
+
+ expect(mockReplace.mock.calls.length).toBe(1);
+ expect(mockReplace.mock.calls[0].length).toBe(2);
+ expect(mockReplace.mock.calls[0][0]).toBe(
+ MESSAGES_ROUTES.MESSAGES_NAVIGATOR
+ );
+ expect(mockReplace.mock.calls[0][1]).toEqual({
+ screen: PN_ROUTES.MAIN,
+ params: {
+ screen: PN_ROUTES.ENGAGEMENT_SCREEN,
+ params: {
+ sendOpeningSource: "aar",
+ sendUserType
}
- );
- } else {
- expect(popToTopMock.mock.calls.length).toEqual(1);
- expect(popToTopMock.mock.calls[0].length).toEqual(0);
- expect(replaceMock).toHaveBeenCalledTimes(0);
- }
+ }
+ });
}
- )
- );
- });
-
- it("should match snapshot", () => {
- const { toJSON } = renderComponent();
- expect(toJSON()).toMatchSnapshot();
+ });
+ });
});
});
-const renderComponent = () => {
+const renderComponent = (sendUserType: SendUserType) => {
const globalState = appReducer(undefined, applicationChangeState("active"));
const aarBottomSheetRef: RefObject<(() => void) | undefined> = {
current: undefined
@@ -120,7 +170,7 @@ const renderComponent = () => {
() => (
),
PN_ROUTES.MESSAGE_DETAILS,
diff --git a/ts/features/pn/aar/components/__tests__/SendAARTosComponent.test.tsx b/ts/features/pn/aar/components/__tests__/SendAARTosComponent.test.tsx
index 8da1772791d..8039f4885c7 100644
--- a/ts/features/pn/aar/components/__tests__/SendAARTosComponent.test.tsx
+++ b/ts/features/pn/aar/components/__tests__/SendAARTosComponent.test.tsx
@@ -12,6 +12,7 @@ import * as FLOW_MANAGER from "../../hooks/useSendAarFlowManager";
import * as SELECTORS from "../../store/selectors";
import { sendAARFlowStates } from "../../utils/stateUtils";
import { SendAARTosComponent } from "../SendAARTosComponent";
+import * as ANALYTICS from "../../analytics";
const qrCodeMock = "TEST";
const mockPrivacyUrls = {
@@ -51,13 +52,19 @@ describe("SendAARTosComponent", () => {
fireEvent.press(button);
expect(mockGoNextState).toHaveBeenCalledTimes(1);
});
- it("quits out of the flow on secondary button press", () => {
+ it("quits out of the flow on secondary button press and call 'trackSendAARToSDismissed' ", () => {
+ const spiedOnMockedTrackSendAARToSDismissed = jest
+ .spyOn(ANALYTICS, "trackSendAARToSDismissed")
+ .mockImplementation();
+
const { getByTestId } = renderComponent(qrCodeMock);
const button = getByTestId("secondary_button");
expect(mockTerminateFlow).toHaveBeenCalledTimes(0);
fireEvent.press(button);
expect(mockTerminateFlow).toHaveBeenCalledTimes(1);
+ expect(spiedOnMockedTrackSendAARToSDismissed.mock.calls.length).toBe(1);
+ expect(spiedOnMockedTrackSendAARToSDismissed.mock.calls[0].length).toBe(0);
});
it("should match snapshot", () => {
const { toJSON } = renderComponent(qrCodeMock);
diff --git a/ts/features/pn/aar/components/__tests__/__snapshots__/SendAARMessageDetailBottomSheet.test.tsx.snap b/ts/features/pn/aar/components/__tests__/__snapshots__/SendAARMessageDetailBottomSheet.test.tsx.snap
deleted file mode 100644
index 62d070a048a..00000000000
--- a/ts/features/pn/aar/components/__tests__/__snapshots__/SendAARMessageDetailBottomSheet.test.tsx.snap
+++ /dev/null
@@ -1,2059 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`BottomSheetContent should match snapshot when isDelegate='false' 1`] = `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PN_ROUTES_MESSAGE_DETAILS
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Conserva il codice QR, ti servirà per rileggere la notifica in app
-
-
-
-
-
-
-
-
-
-
-
-
- Puoi inquadrarlo oppure caricare una sua foto su IO
-
-
-
-
-
-
-
-
-
-
-
-
- Tutte le tue notifiche sono disponibili sul sito di SEND - Notifiche Digitali
-
-
-
- Vai sul sito di SEND
-
-
-
-
-
-
-
-
-
- Torna alla notifica
-
-
-
-
-
-
-
-
-
-
- Chiudi la notifica
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`;
-
-exports[`BottomSheetContent should match snapshot when isDelegate='true' 1`] = `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PN_ROUTES_MESSAGE_DETAILS
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Conserva il codice QR, ti servirà per rileggere la notifica in app
-
-
-
-
-
-
-
-
-
-
-
-
- Puoi inquadrarlo oppure caricare una sua foto su IO
-
-
-
-
-
-
-
-
-
-
-
-
- Tutte le tue notifiche e quelle per cui hai una delega sono disponibili sul sito di SEND - Notifiche Digitali
-
-
-
- Vai sul sito di SEND
-
-
-
-
-
-
-
-
-
- Torna alla notifica
-
-
-
-
-
-
-
-
-
-
- Chiudi la notifica
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`;
diff --git a/ts/features/pn/aar/components/__tests__/__snapshots__/SendAARMessageDetailBottomSheetComponent.test.tsx.snap b/ts/features/pn/aar/components/__tests__/__snapshots__/SendAARMessageDetailBottomSheetComponent.test.tsx.snap
index e25542e4192..59e0005d6c2 100644
--- a/ts/features/pn/aar/components/__tests__/__snapshots__/SendAARMessageDetailBottomSheetComponent.test.tsx.snap
+++ b/ts/features/pn/aar/components/__tests__/__snapshots__/SendAARMessageDetailBottomSheetComponent.test.tsx.snap
@@ -365,7 +365,131 @@ exports[`SendAARMessageDetailBottomSheetComponent should match snapshot 1`] = `
"flex": 1,
}
}
- />
+ >
+
+
+
+
+
+ Mock SendAARMessageDetailBottomSheet
+
+
+ Send user type: not_set
+
+
+ Mock Primary Action
+
+
+ Mock Secondary Action
+
+
+
+
+
+
+
diff --git a/ts/features/pn/aar/components/errors/SendAARErrorComponent.tsx b/ts/features/pn/aar/components/errors/SendAARErrorComponent.tsx
index 6bc251b9896..7c045791a60 100644
--- a/ts/features/pn/aar/components/errors/SendAARErrorComponent.tsx
+++ b/ts/features/pn/aar/components/errors/SendAARErrorComponent.tsx
@@ -29,6 +29,12 @@ import {
currentAARFlowStateErrorDebugInfoSelector
} from "../../store/selectors";
import { useDebugInfo } from "../../../../../hooks/useDebugInfo";
+import {
+ trackSendAarErrorScreenClosure,
+ trackSendAarErrorScreenDetails,
+ trackSendAarErrorScreenDetailsCode,
+ trackSendAarErrorScreenDetailsHelp
+} from "../../analytics";
const bottomComponent = (
onAssistancePress: () => void,
@@ -65,7 +71,10 @@ const bottomComponent = (
icon="ladybug"
value={assistanceErrorCode}
numberOfLines={2}
- onPress={() => clipboardSetStringWithFeedback(assistanceErrorCode)}
+ onPress={() => {
+ trackSendAarErrorScreenDetailsCode();
+ clipboardSetStringWithFeedback(assistanceErrorCode);
+ }}
testID="error_code_value"
/>
@@ -82,6 +91,8 @@ export const SendAARErrorComponent = () => {
);
const zendeskAssistanceLogAndStart = () => {
+ trackSendAarErrorScreenDetailsHelp();
+
dismiss();
resetCustomFields();
resetLog();
@@ -124,12 +135,18 @@ export const SendAARErrorComponent = () => {
subtitle={I18n.t("features.pn.aar.flow.ko.GENERIC.body")}
action={{
label: I18n.t("features.pn.aar.flow.ko.GENERIC.primaryAction"),
- onPress: terminateFlow,
+ onPress: () => {
+ trackSendAarErrorScreenClosure();
+ terminateFlow();
+ },
testID: "primary_button"
}}
secondaryAction={{
label: I18n.t("features.pn.aar.flow.ko.GENERIC.secondaryAction"),
- onPress: present,
+ onPress: () => {
+ trackSendAarErrorScreenDetails();
+ present();
+ },
testID: "secondary_button"
}}
/>
diff --git a/ts/features/pn/aar/components/errors/SendAARNotAddresseeComponent.tsx b/ts/features/pn/aar/components/errors/SendAARNotAddresseeComponent.tsx
index b8369ecc8f9..71b179b32d3 100644
--- a/ts/features/pn/aar/components/errors/SendAARNotAddresseeComponent.tsx
+++ b/ts/features/pn/aar/components/errors/SendAARNotAddresseeComponent.tsx
@@ -4,14 +4,23 @@ import { useIOSelector } from "../../../../../store/hooks";
import { sendAARDelegateUrlSelector } from "../../../../../store/reducers/backendStatus/remoteConfig";
import { openWebUrl } from "../../../../../utils/url";
import { useSendAarFlowManager } from "../../hooks/useSendAarFlowManager";
+import {
+ trackSendAARAccessDeniedDelegateInfo,
+ trackSendAARAccessDeniedDismissed
+} from "../../analytics";
export const SendAARNotAddresseeComponent = () => {
const { terminateFlow } = useSendAarFlowManager();
const delegateUrl = useIOSelector(sendAARDelegateUrlSelector);
const handlePrimaryButton = () => {
+ trackSendAARAccessDeniedDelegateInfo();
openWebUrl(delegateUrl);
};
+ const handleSecondaryAction = () => {
+ trackSendAARAccessDeniedDismissed();
+ terminateFlow();
+ };
return (
{
label: I18n.t(
"features.pn.aar.flow.ko.notAddresseeFinal.secondaryAction"
),
- onPress: terminateFlow,
+ onPress: handleSecondaryAction,
testID: "secondary_button"
}}
/>
diff --git a/ts/features/pn/aar/components/errors/__tests__/SendAARErrorComponent.test.tsx b/ts/features/pn/aar/components/errors/__tests__/SendAARErrorComponent.test.tsx
index 05ffeff85bf..3a8f1da9fc5 100644
--- a/ts/features/pn/aar/components/errors/__tests__/SendAARErrorComponent.test.tsx
+++ b/ts/features/pn/aar/components/errors/__tests__/SendAARErrorComponent.test.tsx
@@ -21,6 +21,7 @@ import {
testable
} from "../../errors/SendAARErrorComponent";
import * as debugHooks from "../../../../../../hooks/useDebugInfo";
+import * as ANALYTICS from "../../../analytics";
const { bottomComponent } = testable!;
@@ -50,14 +51,27 @@ describe("SendAARErrorComponent - Full Test Suite", () => {
jest.restoreAllMocks();
});
- it("quits out of the flow on primary button press", () => {
+ it("quits out of the flow on primary button press and calls trackSendAarErrorScreenClosure", () => {
+ const spiedOnMockedTrackSendAarErrorScreenClosure = jest
+ .spyOn(ANALYTICS, "trackSendAarErrorScreenClosure")
+ .mockImplementation();
+
const { getByTestId } = renderComponent();
+
const button = getByTestId("primary_button");
fireEvent.press(button);
+
expect(mockTerminateFlow).toHaveBeenCalledTimes(1);
+
+ expect(spiedOnMockedTrackSendAarErrorScreenClosure.mock.calls.length).toBe(
+ 1
+ );
+ expect(
+ spiedOnMockedTrackSendAarErrorScreenClosure.mock.calls[0].length
+ ).toBe(0);
});
- it("calls present() on secondary button press", () => {
+ it("calls present() and trackSendAarErrorScreenDetails on secondary button press", () => {
const presentMock = jest.fn();
const dismissMock = jest.fn();
jest.spyOn(BOTTOM_SHEET, "useIOBottomSheetModal").mockReturnValue({
@@ -65,14 +79,26 @@ describe("SendAARErrorComponent - Full Test Suite", () => {
present: presentMock,
dismiss: dismissMock
});
+ const spiedOnMockedTrackSendAarErrorScreenDetails = jest
+ .spyOn(ANALYTICS, "trackSendAarErrorScreenDetails")
+ .mockImplementation();
const { getByTestId } = renderComponent();
+
const button = getByTestId("secondary_button");
fireEvent.press(button);
+
expect(presentMock).toHaveBeenCalledTimes(1);
+
+ expect(spiedOnMockedTrackSendAarErrorScreenDetails.mock.calls.length).toBe(
+ 1
+ );
+ expect(
+ spiedOnMockedTrackSendAarErrorScreenDetails.mock.calls[0].length
+ ).toBe(0);
});
- it("calls present() on assistance button press", () => {
+ it("calls the primary callback on assistance button press", () => {
const renderedBottomComponent = bottomComponent(
mockAssistance,
assistanceErrorCode
@@ -87,8 +113,10 @@ describe("SendAARErrorComponent - Full Test Suite", () => {
});
const { getByTestId } = renderComponent();
+
const button = getByTestId("button_assistance");
fireEvent.press(button);
+
expect(mockAssistance).toHaveBeenCalledTimes(1);
});
@@ -97,11 +125,14 @@ describe("SendAARErrorComponent - Full Test Suite", () => {
expect(getByText(assistanceErrorCode)).toBeTruthy();
});
- it("copies error codes to clipboard on press", async () => {
+ it("copies error codes to clipboard on press and calls trackSendAarErrorScreenDetailsCode", async () => {
const clipboardSpy = jest.spyOn(
CLIPBOARD,
"clipboardSetStringWithFeedback"
);
+ const spiedOnMockedTrackSendAarErrorScreenDetailsCode = jest
+ .spyOn(ANALYTICS, "trackSendAarErrorScreenDetailsCode")
+ .mockImplementation();
const { getByText } = renderComponent();
const copyButton = getByText(assistanceErrorCode);
@@ -109,6 +140,12 @@ describe("SendAARErrorComponent - Full Test Suite", () => {
fireEvent.press(copyButton);
expect(clipboardSpy).toHaveBeenCalledWith(assistanceErrorCode);
+ expect(
+ spiedOnMockedTrackSendAarErrorScreenDetailsCode.mock.calls.length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackSendAarErrorScreenDetailsCode.mock.calls[0].length
+ ).toBe(0);
});
it("does not render error code section when assistanceErrorCode is empty", async () => {
@@ -158,6 +195,10 @@ describe("SendAARErrorComponent - Full Test Suite", () => {
return { present, bottomSheet, dismiss: dismissMock };
});
+ const spiedOnMockedTrackSendAarErrorScreenDetailsHelp = jest
+ .spyOn(ANALYTICS, "trackSendAarErrorScreenDetailsHelp")
+ .mockImplementation();
+
const resetCustomFields = jest.spyOn(
SUPPORT_ASSISTANCE,
"resetCustomFields"
@@ -173,6 +214,13 @@ describe("SendAARErrorComponent - Full Test Suite", () => {
const buttonAssistance = getByTestId("button_assistance");
fireEvent.press(buttonAssistance);
+ expect(
+ spiedOnMockedTrackSendAarErrorScreenDetailsHelp.mock.calls.length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackSendAarErrorScreenDetailsHelp.mock.calls[0].length
+ ).toBe(0);
+
expect(dismissMock).toHaveBeenCalledTimes(1);
expect(resetCustomFields).toHaveBeenCalledTimes(1);
diff --git a/ts/features/pn/aar/components/errors/__tests__/SendAARNotAddresseeComponent.test.tsx b/ts/features/pn/aar/components/errors/__tests__/SendAARNotAddresseeComponent.test.tsx
index ddd7e65383a..10792455d65 100644
--- a/ts/features/pn/aar/components/errors/__tests__/SendAARNotAddresseeComponent.test.tsx
+++ b/ts/features/pn/aar/components/errors/__tests__/SendAARNotAddresseeComponent.test.tsx
@@ -1,7 +1,6 @@
import { fireEvent } from "@testing-library/react-native";
import { createStore } from "redux";
import { applicationChangeState } from "../../../../../../store/actions/application";
-import * as HOOKS from "../../../../../../store/hooks";
import { appReducer } from "../../../../../../store/reducers";
import { GlobalState } from "../../../../../../store/reducers/types";
import { renderScreenWithNavigationStoreContext } from "../../../../../../utils/testWrapper";
@@ -9,16 +8,13 @@ import * as URL_UTILS from "../../../../../../utils/url";
import PN_ROUTES from "../../../../navigation/routes";
import * as FLOW_MANAGER from "../../../hooks/useSendAarFlowManager";
import { SendAARNotAddresseeComponent } from "../SendAARNotAddresseeComponent";
+import * as SELECTORS from "../../../../../../store/reducers/backendStatus/remoteConfig";
+import * as ANALYTICS from "../../../analytics";
const managerSpy = jest.spyOn(FLOW_MANAGER, "useSendAarFlowManager");
const mockOpenWebUrl = jest.spyOn(URL_UTILS, "openWebUrl").mockImplementation();
const mockDelegateUrl = "https://www.test.io";
-jest.mock("../../../../../../store/hooks", () => ({
- ...jest.requireActual("../../../../../../store/hooks"),
- useIOSelector: jest.fn()
-}));
-
describe("SendAARTosComponent", () => {
const mockGoNextState = jest.fn();
const mockTerminateFlow = jest.fn();
@@ -35,21 +31,48 @@ describe("SendAARTosComponent", () => {
jest.clearAllMocks();
});
- it("goes to open url when the button is pressed", () => {
- (HOOKS.useIOSelector as jest.Mock).mockReturnValue(mockDelegateUrl);
+ it("goes to open url when the button is pressed and calls trackSendAARAccessDeniedDelegateInfo", () => {
+ jest
+ .spyOn(SELECTORS, "sendAARDelegateUrlSelector")
+ .mockImplementation(_state => mockDelegateUrl);
+ const spiedOnMockedTrackSendAARAccessDeniedDelegateInfo = jest
+ .spyOn(ANALYTICS, "trackSendAARAccessDeniedDelegateInfo")
+ .mockImplementation();
+
const { getByTestId } = renderComponent();
+
const button = getByTestId("primary_button");
expect(mockOpenWebUrl).toHaveBeenCalledTimes(0);
fireEvent.press(button);
+
expect(mockOpenWebUrl).toHaveBeenCalledTimes(1);
expect(mockOpenWebUrl).toHaveBeenCalledWith(mockDelegateUrl);
+
+ expect(
+ spiedOnMockedTrackSendAARAccessDeniedDelegateInfo.mock.calls.length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackSendAARAccessDeniedDelegateInfo.mock.calls[0].length
+ ).toBe(0);
});
- it("quits out of the flow on secondary button press", () => {
+ it("quits out of the flow on secondary button press and calls trackSendAARAccessDeniedDismissed", () => {
+ const spiedOnMockedTrackSendAARAccessDeniedDismissed = jest
+ .spyOn(ANALYTICS, "trackSendAARAccessDeniedDismissed")
+ .mockImplementation();
+
const { getByTestId } = renderComponent();
+
const button = getByTestId("secondary_button");
expect(mockTerminateFlow).toHaveBeenCalledTimes(0);
fireEvent.press(button);
expect(mockTerminateFlow).toHaveBeenCalledTimes(1);
+
+ expect(
+ spiedOnMockedTrackSendAARAccessDeniedDismissed.mock.calls.length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackSendAARAccessDeniedDismissed.mock.calls[0].length
+ ).toBe(0);
});
it("should match snapshot", () => {
const { toJSON } = renderComponent();
diff --git a/ts/features/pn/aar/hooks/__tests__/useSendAarFlowManager.test.tsx b/ts/features/pn/aar/hooks/__tests__/useSendAarFlowManager.test.tsx
index 78144becc4d..c429acb59a0 100644
--- a/ts/features/pn/aar/hooks/__tests__/useSendAarFlowManager.test.tsx
+++ b/ts/features/pn/aar/hooks/__tests__/useSendAarFlowManager.test.tsx
@@ -9,6 +9,7 @@ import {
import { testable, useSendAarFlowManager } from "../useSendAarFlowManager";
import { sendAarMockStates } from "../../utils/testUtils";
import { ServiceId } from "../../../../../../definitions/backend/ServiceId";
+import * as ANALYTICS from "../../analytics";
const mockPopToTop = jest.fn();
const mockReset = jest.fn();
@@ -48,7 +49,12 @@ describe("useSendAarFlowManager", () => {
);
});
Object.values(sendAARFlowStates).forEach(stateKind => {
- it(`should navigate to a valid state when calling "goToNextState" when the state type is ${stateKind}`, () => {
+ it(`should navigate to a valid state when calling "goToNextState" when the state type is ${stateKind} and ${
+ stateKind === sendAARFlowStates.displayingAARToS ? "" : "not "
+ }call trackSendAARToSAccepted`, () => {
+ const spiedOnMockedTrackSendAARToSAccepted = jest
+ .spyOn(ANALYTICS, "trackSendAARToSAccepted")
+ .mockImplementation();
mockSelector.mockImplementation(
() =>
({
@@ -66,10 +72,19 @@ describe("useSendAarFlowManager", () => {
stateKind,
mockDispatch.mock.calls[0][0].payload.type as AARFlowStateName
);
+ expect(spiedOnMockedTrackSendAARToSAccepted.mock.calls.length).toBe(
+ 1
+ );
+ expect(
+ spiedOnMockedTrackSendAARToSAccepted.mock.calls[0].length
+ ).toBe(0);
expect(mockDispatch).toHaveBeenCalledTimes(1);
expect(isValid).toBe(true);
break;
default:
+ expect(spiedOnMockedTrackSendAARToSAccepted.mock.calls.length).toBe(
+ 0
+ );
expect(mockDispatch).not.toHaveBeenCalled();
break;
}
diff --git a/ts/features/pn/aar/hooks/useSendAarFlowManager.tsx b/ts/features/pn/aar/hooks/useSendAarFlowManager.tsx
index ceb108518b5..4b87c987d4e 100644
--- a/ts/features/pn/aar/hooks/useSendAarFlowManager.tsx
+++ b/ts/features/pn/aar/hooks/useSendAarFlowManager.tsx
@@ -5,6 +5,7 @@ import { setAarFlowState, terminateAarFlow } from "../store/actions";
import { currentAARFlowData } from "../store/selectors";
import { AARFlowState, sendAARFlowStates } from "../utils/stateUtils";
import { isTestEnv } from "../../../../utils/environment";
+import { trackSendAARToSAccepted } from "../analytics";
type SendAarFlowManager = {
terminateFlow: () => void;
@@ -41,6 +42,7 @@ export const useSendAarFlowManager = (): SendAarFlowManager => {
const goToNextState = () => {
switch (currentFlowData.type) {
case sendAARFlowStates.displayingAARToS:
+ trackSendAARToSAccepted();
dispatch(
setAarFlowState({
type: sendAARFlowStates.fetchingQRData,
diff --git a/ts/features/pn/aar/saga/__tests__/fetchNotificationDataSaga.test.ts b/ts/features/pn/aar/saga/__tests__/fetchNotificationDataSaga.test.ts
index 87e6a52f00e..179fbbe7c97 100644
--- a/ts/features/pn/aar/saga/__tests__/fetchNotificationDataSaga.test.ts
+++ b/ts/features/pn/aar/saga/__tests__/fetchNotificationDataSaga.test.ts
@@ -1,18 +1,13 @@
-import { NonEmptyString } from "@pagopa/ts-commons/lib/strings";
import * as E from "fp-ts/lib/Either";
import _ from "lodash";
import { testSaga } from "redux-saga-test-plan";
-import { call } from "typed-redux-saga";
-import { ThirdPartyMessage as PnThirdPartyMessage } from "../../../../../../definitions/pn/ThirdPartyMessage";
import { AARProblemJson } from "../../../../../../definitions/pn/aar/AARProblemJson";
-import { ThirdPartyMessage as AarThirdPartyMessage } from "../../../../../../definitions/pn/aar/ThirdPartyMessage";
+import { ThirdPartyMessage } from "../../../../../../definitions/pn/aar/ThirdPartyMessage";
import { pnMessagingServiceIdSelector } from "../../../../../store/reducers/backendStatus/remoteConfig";
import { isPnTestEnabledSelector } from "../../../../../store/reducers/persistedPreferences";
import { SessionToken } from "../../../../../types/SessionToken";
import { withRefreshApiCall } from "../../../../authentication/fastLogin/saga/utils";
-import * as serviceDetailsSaga from "../../../../services/common/saga/getServiceDetails";
import { profileFiscalCodeSelector } from "../../../../settings/common/store/selectors";
-import { thirdPartyMessage } from "../../../__mocks__/pnMessage";
import { trackSendAARFailure } from "../../analytics";
import { SendAARClient } from "../../api/client";
import {
@@ -27,6 +22,8 @@ import {
sendAarMockStates
} from "../../utils/testUtils";
import { fetchAarDataSaga, testable } from "../fetchNotificationDataSaga";
+import { trackPNNotificationLoadSuccess } from "../../../analytics";
+import { getServiceDetails } from "../../../../services/common/saga/getServiceDetails";
const mockCurrentState = {
type: sendAARFlowStates.fetchingNotificationData,
@@ -45,13 +42,41 @@ const fetchingNotificationDataRequestAction = setAarFlowState(
const { aarMessageDataPayloadFromResponse } = testable!;
const mockSessionToken = "token" as SessionToken;
const mockSessionTokenWithBearer = `Bearer ${mockSessionToken}` as SessionToken;
-const mockNotification = { foo: "bar" };
+const mockIUn = "01K83208Z4CPBJXPFH7X9GDDMK";
+const mockSubject = "Message subject";
+const mockFiscalCode = "NMUVCN66S01F138R";
+const mockSendMessage = {
+ attachments: [{ id: "1", url: "https://an.url/path" }],
+ details: {
+ subject: mockSubject,
+ iun: mockIUn,
+ recipients: [
+ {
+ recipientType: "",
+ taxId: mockFiscalCode,
+ denomination: "A denomination",
+ payment: {
+ noticeCode: "111122223333444400",
+ creditorTaxId: "01234567890"
+ }
+ }
+ ],
+ notificationStatusHistory: [
+ {
+ status: "ACCEPTED",
+ activeFrom: new Date(),
+ relatedTimelineElements: [
+ "xo4h59s49o95a215uhd3o35453u32o435uqhwod84s6d4"
+ ]
+ }
+ ]
+ }
+} as unknown as ThirdPartyMessage;
const mockResolvedCall = (resolved: any) =>
new Promise((res, _reject) => res(resolved)) as unknown as ReturnType<
SendAARClient["getAARNotification"]
>;
-
describe("fetchAarDataSaga", () => {
describe("error paths", () => {
it("should early return if state is not fetchingNotificationData", () => {
@@ -72,7 +97,6 @@ describe("fetchAarDataSaga", () => {
.next()
.isDone();
});
-
it("should handle left result and set KO state", () => {
const mockFailure = E.left([]);
const fetchData = jest
@@ -118,7 +142,6 @@ describe("fetchAarDataSaga", () => {
isTest: true
});
});
-
it("should handle status !== 200 and set KO state", () => {
const mockResolved = {
status: 400,
@@ -263,8 +286,8 @@ describe("fetchAarDataSaga", () => {
});
});
describe("200 status path", () => {
- it("should handle a non-parsable success payload and return", () => {
- const mockValue = E.right({ status: 200, value: mockNotification });
+ it("should handle a successfull notification retrieval but failing when aggregating extra data", () => {
+ const mockValue = E.right({ status: 200, value: mockSendMessage });
const fetchData = jest.fn().mockReturnValue(mockResolvedCall(mockValue));
testSaga(
fetchAarDataSaga,
@@ -285,7 +308,7 @@ describe("fetchAarDataSaga", () => {
.next(mockValue)
.call(
aarMessageDataPayloadFromResponse,
- mockNotification,
+ mockSendMessage,
mockCurrentState.mandateId
)
.next(E.left("Unable to retrieve user fiscal code"))
@@ -319,7 +342,7 @@ describe("fetchAarDataSaga", () => {
});
it("should handle a parsable success payload and dispatch the correct actions", () => {
const mockPayload = mockEphemeralAarMessageDataActionPayload;
- const mockValue = E.right({ status: 200, value: mockNotification });
+ const mockValue = E.right({ status: 200, value: mockSendMessage });
const fetchData = jest.fn().mockReturnValue(mockResolvedCall(mockValue));
testSaga(
fetchAarDataSaga,
@@ -340,7 +363,7 @@ describe("fetchAarDataSaga", () => {
.next(mockValue)
.call(
aarMessageDataPayloadFromResponse,
- mockNotification,
+ mockSendMessage,
mockCurrentState.mandateId
)
.next(E.right(mockPayload))
@@ -349,7 +372,7 @@ describe("fetchAarDataSaga", () => {
.put(
setAarFlowState({
type: sendAARFlowStates.displayingNotificationData,
- notification: mockNotification,
+ notification: mockSendMessage,
recipientInfo: mockCurrentState.recipientInfo,
mandateId: mockPayload.mandateId,
iun: mockPayload.iun,
@@ -371,136 +394,102 @@ describe("fetchAarDataSaga", () => {
});
describe("aarMessageDataPayloadFromResponse", () => {
- it("should return left etiher if no pnServiceId can be found in the store", () => {
- testSaga(
- aarMessageDataPayloadFromResponse,
- mockNotification,
- mockCurrentState.mandateId
- )
- .next()
- .select(profileFiscalCodeSelector)
- .next("CF")
- .select(pnMessagingServiceIdSelector)
- .next(undefined)
- .returns(E.left("Unable to retrieve sendServiceId"));
- });
- it("should return left either if no fiscalCode can be found in the store", () => {
- testSaga(
- aarMessageDataPayloadFromResponse,
- mockNotification,
- mockCurrentState.mandateId
- )
- .next()
- .select(profileFiscalCodeSelector)
- .next(undefined)
- .returns(E.left(`Unable to retrieve user fiscal code`));
- });
- it("should return left either if an invalid message has been passed as parameter", () => {
- testSaga(
- aarMessageDataPayloadFromResponse,
- {
- details: { notificationStatusHistory: "WRONG_DATA_KIND" }
- } as unknown as AarThirdPartyMessage,
- mockCurrentState.iun
- )
- .next()
- .select(profileFiscalCodeSelector)
- .next("CF")
- .select(pnMessagingServiceIdSelector)
- .next("SID")
- // function fails to decode the message
- .returns(
- E.left(
- `Unable to decode AAR notification into SEND ThirdPartyMessage (value undefined at root.details.subject is not a valid [string]\nvalue undefined at root.details.iun is not a valid [string]\nvalue undefined at root.details.recipients is not a valid [array of NotificationRecipient]\nvalue "WRONG_DATA_KIND" at root.details.notificationStatusHistory is not a valid [array of NotificationStatusHistoryElement])`
+ [undefined, mockCurrentState.mandateId].forEach(mandateId => {
+ it(`should return a left either if the 'details' field in the message data is missing (mandateId ${mandateId})`, () => {
+ const { details, ...rest } = mockSendMessage;
+ testSaga(aarMessageDataPayloadFromResponse, rest, mandateId)
+ .next()
+ .returns(E.left(`Field 'details' in the AAR Notification is missing`));
+ });
+ it(`should return a left either if no pnServiceId can be found in the store (mandateId ${mandateId})`, () => {
+ testSaga(aarMessageDataPayloadFromResponse, mockSendMessage, mandateId)
+ .next()
+ .call(
+ trackPNNotificationLoadSuccess,
+ true,
+ "ACCEPTED",
+ "aar",
+ mandateId != null ? "mandatory" : "recipient"
)
- );
- });
- it("should return left either if SEND service preferences cannot be retrieved", () => {
- const mockFn = jest.fn();
- const getDetails = function* (_sid: NonEmptyString) {
- yield* call(mockFn);
- return undefined;
- };
- jest
- .spyOn(serviceDetailsSaga, "getServiceDetails")
- .mockImplementation(getDetails);
-
- testSaga(
- aarMessageDataPayloadFromResponse,
- mockNotification,
- mockCurrentState.mandateId
- )
- .next()
- .select(profileFiscalCodeSelector)
- .next("CF")
- .select(pnMessagingServiceIdSelector)
- .next("SID")
- .call(mockFn)
- .next(undefined)
- .returns(E.left(`Unable to retrieve SEND service details`));
- });
- it("should return left either if a message without a valid `details` key has been passed as parameter", () => {
- const message = _.omit(
- thirdPartyMessage.third_party_message as PnThirdPartyMessage,
- "details"
- );
- const mockFn = jest.fn();
- const getDetails = function* (_sid: NonEmptyString) {
- yield* call(mockFn);
- return { id: "SID" } as any;
- } as typeof serviceDetailsSaga.getServiceDetails;
- jest
- .spyOn(serviceDetailsSaga, "getServiceDetails")
- .mockImplementation(getDetails);
-
- testSaga(
- aarMessageDataPayloadFromResponse,
- message as AarThirdPartyMessage,
- mockCurrentState.mandateId
- )
- .next()
- .select(profileFiscalCodeSelector)
- .next("CF")
- .select(pnMessagingServiceIdSelector)
- .next("SID")
- .call(mockFn)
- .next({ id: "SID" } as any)
- .returns(E.left(`Field 'details' in the AAR Notification is missing`));
- });
- it("should return a right either with mapped object if a message with the required keys has been passed as parameter", () => {
- const message =
- thirdPartyMessage.third_party_message as PnThirdPartyMessage;
- const mockFn = jest.fn();
- const getDetails = function* (_sid: NonEmptyString) {
- yield* call(mockFn);
- return { id: "SID" } as any;
- } as typeof serviceDetailsSaga.getServiceDetails;
- jest
- .spyOn(serviceDetailsSaga, "getServiceDetails")
- .mockImplementation(getDetails);
-
- testSaga(
- aarMessageDataPayloadFromResponse,
- message as AarThirdPartyMessage,
- mockCurrentState.mandateId
- )
- .next()
- .select(profileFiscalCodeSelector)
- .next("CF")
- .select(pnMessagingServiceIdSelector)
- .next("SID")
- .call(mockFn)
- .next({ id: "SID" } as any)
- .returns(
- E.right({
- iun: message.details?.iun,
- thirdPartyMessage: message,
- fiscalCode: message.details?.recipients?.[0]?.taxId ?? "CF",
- pnServiceID: "SID",
- markdown: "*".repeat(81) as NonEmptyString,
- subject: message.details?.subject,
- mandateId: mockCurrentState.mandateId
- })
- );
+ .next()
+ .select(pnMessagingServiceIdSelector)
+ .next(undefined)
+ .returns(E.left(`Unable to retrieve sendServiceId`));
+ });
+ it(`should return a left either if pnServiceDetails cannot be found or fetched (mandateId ${mandateId})`, () => {
+ testSaga(aarMessageDataPayloadFromResponse, mockSendMessage, mandateId)
+ .next()
+ .call(
+ trackPNNotificationLoadSuccess,
+ true,
+ "ACCEPTED",
+ "aar",
+ mandateId != null ? "mandatory" : "recipient"
+ )
+ .next()
+ .select(pnMessagingServiceIdSelector)
+ .next(mockEphemeralAarMessageDataActionPayload.pnServiceID)
+ .call(
+ getServiceDetails,
+ mockEphemeralAarMessageDataActionPayload.pnServiceID
+ )
+ .next(undefined)
+ .returns(E.left(`Unable to retrieve SEND service details`));
+ });
+ it(`should return a left either if no fiscal code can be found in the store (mandateId ${mandateId})`, () => {
+ testSaga(aarMessageDataPayloadFromResponse, mockSendMessage, mandateId)
+ .next()
+ .call(
+ trackPNNotificationLoadSuccess,
+ true,
+ "ACCEPTED",
+ "aar",
+ mandateId != null ? "mandatory" : "recipient"
+ )
+ .next()
+ .select(pnMessagingServiceIdSelector)
+ .next(mockEphemeralAarMessageDataActionPayload.pnServiceID)
+ .call(
+ getServiceDetails,
+ mockEphemeralAarMessageDataActionPayload.pnServiceID
+ )
+ .next({})
+ .select(profileFiscalCodeSelector)
+ .next(undefined)
+ .returns(E.left(`Unable to retrieve user fiscal code`));
+ });
+ it(`should return a right either if a message with the required keys has been passed as parameter (mandateId ${mandateId})`, () => {
+ testSaga(aarMessageDataPayloadFromResponse, mockSendMessage, mandateId)
+ .next()
+ .call(
+ trackPNNotificationLoadSuccess,
+ true,
+ "ACCEPTED",
+ "aar",
+ mandateId != null ? "mandatory" : "recipient"
+ )
+ .next()
+ .select(pnMessagingServiceIdSelector)
+ .next(mockEphemeralAarMessageDataActionPayload.pnServiceID)
+ .call(
+ getServiceDetails,
+ mockEphemeralAarMessageDataActionPayload.pnServiceID
+ )
+ .next({})
+ .select(profileFiscalCodeSelector)
+ .next(mockFiscalCode)
+ .returns(
+ E.right({
+ iun: mockIUn,
+ thirdPartyMessage: mockSendMessage,
+ fiscalCode: mockFiscalCode,
+ pnServiceID: mockEphemeralAarMessageDataActionPayload.pnServiceID,
+ markdown:
+ "*********************************************************************************",
+ subject: mockSubject,
+ mandateId
+ })
+ );
+ });
});
});
diff --git a/ts/features/pn/aar/saga/fetchNotificationDataSaga.ts b/ts/features/pn/aar/saga/fetchNotificationDataSaga.ts
index 716c590f930..5377e7178ac 100644
--- a/ts/features/pn/aar/saga/fetchNotificationDataSaga.ts
+++ b/ts/features/pn/aar/saga/fetchNotificationDataSaga.ts
@@ -4,8 +4,6 @@ import { readableReportSimplified } from "@pagopa/ts-commons/lib/reporters";
import { call, put, select } from "typed-redux-saga/macro";
import { MessageBodyMarkdown } from "../../../../../definitions/backend/MessageBodyMarkdown";
import { MessageSubject } from "../../../../../definitions/backend/MessageSubject";
-import { ThirdPartyMessage as PnThirdPartyMessage } from "../../../../../definitions/pn/ThirdPartyMessage";
-import { ThirdPartyMessage as AarThirdPartyMessage } from "../../../../../definitions/pn/aar/ThirdPartyMessage";
import { pnMessagingServiceIdSelector } from "../../../../store/reducers/backendStatus/remoteConfig";
import { isPnTestEnabledSelector } from "../../../../store/reducers/persistedPreferences";
import { SessionToken } from "../../../../types/SessionToken";
@@ -22,6 +20,9 @@ import {
} from "../store/actions";
import { currentAARFlowData } from "../store/selectors";
import { SendAARFailurePhase, sendAARFlowStates } from "../utils/stateUtils";
+import { trackPNNotificationLoadSuccess } from "../../analytics";
+import { SendUserType } from "../../../pushNotifications/analytics";
+import { ThirdPartyMessage } from "../../../../../definitions/pn/aar/ThirdPartyMessage";
import {
aarProblemJsonAnalyticsReport,
trackSendAARFailure
@@ -44,14 +45,14 @@ export function* fetchAarDataSaga(
);
return;
}
- const isTest = yield* select(isPnTestEnabledSelector);
+ const isSendUATEnvironment = yield* select(isPnTestEnabledSelector);
try {
const fetchAarRequest = fetchData({
Bearer: `Bearer ${sessionToken}`,
iun: currentState.iun,
mandateId: currentState.mandateId,
"x-pagopa-pn-io-src": "QRCODE",
- isTest
+ isTest: isSendUATEnvironment
});
const result = (yield* call(
withRefreshApiCall,
@@ -144,51 +145,57 @@ export function* fetchAarDataSaga(
}
function* aarMessageDataPayloadFromResponse(
- value: AarThirdPartyMessage,
+ sendMessage: ThirdPartyMessage,
mandateId: string | undefined
): Generator<
ReduxSagaEffect,
E.Either
> {
- const fiscalCode = yield* select(profileFiscalCodeSelector);
- if (fiscalCode === undefined) {
- return E.left(`Unable to retrieve user fiscal code`);
- }
+ const sendUserType: SendUserType =
+ mandateId != null ? "mandatory" : "recipient";
- const pnServiceID = yield* select(pnMessagingServiceIdSelector);
- if (pnServiceID === undefined) {
- return E.left(`Unable to retrieve sendServiceId`);
+ const details = sendMessage.details;
+ if (details == null) {
+ return E.left(`Field 'details' in the AAR Notification is missing`);
}
- const sendMessageEither = PnThirdPartyMessage.decode(value);
- if (E.isLeft(sendMessageEither)) {
- return E.left(
- `Unable to decode AAR notification into SEND ThirdPartyMessage (${readableReportSimplified(
- sendMessageEither.left
- )})`
- );
+ // Notification data has been properly retrieved
+ const hasAttachments =
+ sendMessage.attachments != null && sendMessage.attachments.length > 0;
+ const timelineOrUndefined = sendMessage.details?.notificationStatusHistory;
+ const lastTimelineStatus =
+ timelineOrUndefined != null && timelineOrUndefined.length > 0
+ ? timelineOrUndefined[timelineOrUndefined.length - 1].status
+ : undefined;
+ yield* call(
+ trackPNNotificationLoadSuccess,
+ hasAttachments,
+ lastTimelineStatus,
+ "aar",
+ sendUserType
+ );
+
+ // Service details (will be displayed in the SEND notification screen)
+ const sendServiceID = yield* select(pnMessagingServiceIdSelector);
+ if (sendServiceID === undefined) {
+ return E.left(`Unable to retrieve sendServiceId`);
}
- // Make sure that the SEND service details are loaded. They are
- // not needed here but in the SEND notification screen in order
- // to display service details
- const sendServiceDetails = yield* getServiceDetails(pnServiceID);
+ const sendServiceDetails = yield* call(getServiceDetails, sendServiceID);
if (sendServiceDetails === undefined) {
return E.left(`Unable to retrieve SEND service details`);
}
- const sendMessage = sendMessageEither.right;
- const details = sendMessage.details;
- if (details == null) {
- return E.left(`Field 'details' in the AAR Notification is missing`);
+ const fiscalCode = yield* select(profileFiscalCodeSelector);
+ if (fiscalCode === undefined) {
+ return E.left(`Unable to retrieve user fiscal code`);
}
- const recipients = details?.recipients;
const aarFlowState: EphemeralAarMessageDataActionPayload = {
iun: details.iun as NonEmptyString,
thirdPartyMessage: sendMessage,
- fiscalCode: recipients?.[0]?.taxId ?? fiscalCode,
- pnServiceID,
+ fiscalCode,
+ pnServiceID: sendServiceID,
markdown: "*".repeat(81) as MessageBodyMarkdown,
subject: details.subject as MessageSubject,
mandateId
diff --git a/ts/features/pn/aar/screen/SendAARErrorScreen.tsx b/ts/features/pn/aar/screen/SendAARErrorScreen.tsx
index d44faa1cbff..eb6154eeae4 100644
--- a/ts/features/pn/aar/screen/SendAARErrorScreen.tsx
+++ b/ts/features/pn/aar/screen/SendAARErrorScreen.tsx
@@ -1,12 +1,20 @@
+import { useEffect } from "react";
import { useIOSelector } from "../../../../store/hooks";
import { SendAARErrorComponent } from "../components/errors/SendAARErrorComponent";
import { SendAARNotAddresseeComponent } from "../components/errors/SendAARNotAddresseeComponent";
import { currentAARFlowStateType } from "../store/selectors";
import { sendAARFlowStates } from "../utils/stateUtils";
+import { trackSendAARAccessDeniedScreenView } from "../analytics";
export const SendAARErrorScreen = () => {
const flowType = useIOSelector(currentAARFlowStateType);
+ useEffect(() => {
+ if (flowType === sendAARFlowStates.notAddresseeFinal) {
+ trackSendAARAccessDeniedScreenView();
+ }
+ }, [flowType]);
+
if (flowType === sendAARFlowStates.notAddresseeFinal) {
return ;
} else {
diff --git a/ts/features/pn/aar/screen/SendAARInitialFlowScreen.tsx b/ts/features/pn/aar/screen/SendAARInitialFlowScreen.tsx
index 8e93feedf9b..7de3cb65e12 100644
--- a/ts/features/pn/aar/screen/SendAARInitialFlowScreen.tsx
+++ b/ts/features/pn/aar/screen/SendAARInitialFlowScreen.tsx
@@ -9,6 +9,7 @@ import { SendAARTosComponent } from "../components/SendAARTosComponent";
import { setAarFlowState } from "../store/actions";
import { currentAARFlowData } from "../store/selectors";
import { sendAARFlowStates } from "../utils/stateUtils";
+import { trackSendAARToS } from "../analytics";
type SendAarInitialFlowScreenT = {
qrCode: string;
@@ -56,7 +57,7 @@ export const SendAARInitialFlowScreen = ({
screen: PN_ROUTES.MESSAGE_DETAILS,
params: {
messageId: flowData.iun,
- firstTimeOpening: true,
+ firstTimeOpening: undefined,
serviceId: flowData.pnServiceId,
isAarMessage: true
}
@@ -64,6 +65,10 @@ export const SendAARInitialFlowScreen = ({
});
break;
}
+ case sendAARFlowStates.displayingAARToS: {
+ trackSendAARToS();
+ break;
+ }
}
}, [navigation, flowStateType, flowData]);
diff --git a/ts/features/pn/aar/screen/SendEngagementScreen.tsx b/ts/features/pn/aar/screen/SendEngagementScreen.tsx
index 15846595999..3d0a470737f 100644
--- a/ts/features/pn/aar/screen/SendEngagementScreen.tsx
+++ b/ts/features/pn/aar/screen/SendEngagementScreen.tsx
@@ -21,8 +21,8 @@ import { PnParamsList } from "../../navigation/params";
import PN_ROUTES from "../../navigation/routes";
import {
trackSendActivationModalDialog,
- trackSendActivationModalDialogActivationStart,
- trackSendActivationModalDialogActivationDismissed
+ trackSendActivationModalDialogActivationDismissed,
+ trackSendActivationModalDialogActivationStart
} from "../../analytics/send";
const flow: NotificationModalFlow = "send_notification_opening";
@@ -39,6 +39,7 @@ type SendEngagementScreenProps = IOStackNavigationRouteProps<
export const SendEngagementScreen = ({ route }: SendEngagementScreenProps) => {
const { sendOpeningSource, sendUserType } = route.params;
+
const [screenStatus, setScreenStatus] = useState<
"Waiting" | "Activating" | "Failed"
>("Waiting");
@@ -76,7 +77,11 @@ export const SendEngagementScreen = ({ route }: SendEngagementScreenProps) => {
const onActivateService = useCallback(
(isRetry: boolean = false) => {
- trackSendActivationModalDialogActivationStart(flow, sendUserType);
+ trackSendActivationModalDialogActivationStart(
+ flow,
+ sendOpeningSource,
+ sendUserType
+ );
if (isRetry) {
navigation.setOptions({
headerShown: true
@@ -94,29 +99,34 @@ export const SendEngagementScreen = ({ route }: SendEngagementScreenProps) => {
[
dispatch,
navigation,
- sendUserType,
onSENDActivationFailed,
- onSENDActivationSucceeded
+ onSENDActivationSucceeded,
+ sendOpeningSource,
+ sendUserType
]
);
const onClose = useCallback(() => {
if (screenStatus !== "Activating") {
- trackSendActivationModalDialogActivationDismissed(flow, sendUserType);
+ trackSendActivationModalDialogActivationDismissed(
+ flow,
+ sendOpeningSource,
+ sendUserType
+ );
navigation.popToTop();
}
- }, [navigation, screenStatus, sendUserType]);
+ }, [navigation, screenStatus, sendOpeningSource, sendUserType]);
useEffect(() => {
if (screenStatus === "Waiting") {
// Make sure that nothing sets screenStatus to Waiting,
// otherwise there will be a double event tracking
- trackSendActivationModalDialog(flow, sendUserType);
+ trackSendActivationModalDialog(flow, sendOpeningSource, sendUserType);
} else if (screenStatus === "Failed") {
// Here multiple tracking is fine, since we want
// to track it every time that the user retries it
sendBannerMixpanelEvents.bannerKO("aar");
}
- }, [screenStatus, sendUserType]);
+ }, [screenStatus, sendOpeningSource, sendUserType]);
if (screenStatus === "Failed") {
return (
diff --git a/ts/features/pn/aar/screen/__tests__/SendAARErrorScreen.test.tsx b/ts/features/pn/aar/screen/__tests__/SendAARErrorScreen.test.tsx
index 81ea6492657..31c4b4828c6 100644
--- a/ts/features/pn/aar/screen/__tests__/SendAARErrorScreen.test.tsx
+++ b/ts/features/pn/aar/screen/__tests__/SendAARErrorScreen.test.tsx
@@ -1,6 +1,5 @@
import { createStore } from "redux";
import { applicationChangeState } from "../../../../../store/actions/application";
-import * as HOOKS from "../../../../../store/hooks";
import { appReducer } from "../../../../../store/reducers";
import { GlobalState } from "../../../../../store/reducers/types";
import { renderScreenWithNavigationStoreContext } from "../../../../../utils/testWrapper";
@@ -9,13 +8,12 @@ import * as ERROR_COMPONENT from "../../components/errors/SendAARErrorComponent"
import * as NOT_ADDRESSEE_COMPONENT from "../../components/errors/SendAARNotAddresseeComponent";
import { sendAARFlowStates } from "../../utils/stateUtils";
import { SendAARErrorScreen } from "../SendAARErrorScreen";
+import { sendAarMockStates } from "../../utils/testUtils";
+import * as SELECTORS from "../../store/selectors";
+import * as ANALYTICS from "../../analytics";
jest.mock("../../components/errors/SendAARNotAddresseeComponent.tsx");
jest.mock("../../components/errors/SendAARErrorComponent.tsx");
-jest.mock("../../../../../store/hooks", () => ({
- ...jest.requireActual("../../../../../store/hooks"),
- useIOSelector: jest.fn()
-}));
describe("SendAARErrorScreen", () => {
const componentMock = jest.fn();
@@ -31,19 +29,52 @@ describe("SendAARErrorScreen", () => {
});
it("should render the SendAARErrorComponent if flowType==='notAddresseeFinal'", () => {
- (HOOKS.useIOSelector as jest.Mock).mockReturnValue(
- sendAARFlowStates.notAddresseeFinal
- );
+ jest
+ .spyOn(SELECTORS, "currentAARFlowStateType")
+ .mockImplementation(_state => sendAARFlowStates.notAddresseeFinal);
expect(notAddresseeComponentSpy).not.toHaveBeenCalled();
renderScreen();
expect(notAddresseeComponentSpy).toHaveBeenCalled();
});
+
it("should render the SendAARErrorComponent if flowType!=='notAddresseeFinal'", () => {
- (HOOKS.useIOSelector as jest.Mock).mockReturnValue(sendAARFlowStates.ko);
+ jest
+ .spyOn(SELECTORS, "currentAARFlowStateType")
+ .mockImplementation(_state => sendAARFlowStates.ko);
expect(errorComponentSpy).not.toHaveBeenCalled();
renderScreen();
expect(errorComponentSpy).toHaveBeenCalled();
});
+
+ sendAarMockStates.forEach(mockState => {
+ it(`should ${
+ mockState.type === sendAARFlowStates.notAddresseeFinal ? "" : "not "
+ }call trackSendAARAccessDeniedScreenView when state is ${
+ mockState.type
+ }`, () => {
+ jest
+ .spyOn(SELECTORS, "currentAARFlowStateType")
+ .mockImplementation(_state => mockState.type);
+ const spiedOnMockedTrackSendAARAccessDeniedScreenView = jest
+ .spyOn(ANALYTICS, "trackSendAARAccessDeniedScreenView")
+ .mockImplementation();
+
+ renderScreen();
+
+ if (mockState.type === sendAARFlowStates.notAddresseeFinal) {
+ expect(
+ spiedOnMockedTrackSendAARAccessDeniedScreenView.mock.calls.length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackSendAARAccessDeniedScreenView.mock.calls[0].length
+ ).toBe(0);
+ } else {
+ expect(
+ spiedOnMockedTrackSendAARAccessDeniedScreenView.mock.calls.length
+ ).toBe(0);
+ }
+ });
+ });
});
const renderScreen = () => {
diff --git a/ts/features/pn/aar/screen/__tests__/SendAARInitialFlowScreen.test.tsx b/ts/features/pn/aar/screen/__tests__/SendAARInitialFlowScreen.test.tsx
index 1dbf3752e10..84cb65efdfd 100644
--- a/ts/features/pn/aar/screen/__tests__/SendAARInitialFlowScreen.test.tsx
+++ b/ts/features/pn/aar/screen/__tests__/SendAARInitialFlowScreen.test.tsx
@@ -12,6 +12,8 @@ import { setAarFlowState } from "../../store/actions";
import { AARFlowState, sendAARFlowStates } from "../../utils/stateUtils";
import { SendAARInitialFlowScreen } from "../SendAARInitialFlowScreen";
import * as SELECTORS from "../../store/selectors";
+import { sendAarMockStates } from "../../utils/testUtils";
+import * as ANALYTICS from "../../analytics";
const mockReplace = jest.fn();
const mockSetOptions = jest.fn();
@@ -59,6 +61,26 @@ describe("SendAARInitialFlowScreen", () => {
});
});
+ sendAarMockStates.forEach(state => {
+ it(`should ${
+ state.type === sendAARFlowStates.displayingAARToS ? "" : "not "
+ }call 'trackSendAARToS' when state is ${state.type}`, () => {
+ const spiedOnMockedTrackSendAARToS = jest
+ .spyOn(ANALYTICS, "trackSendAARToS")
+ .mockImplementation();
+ flowStateSelectorSpy.mockReturnValue(state);
+
+ renderComponent();
+
+ if (state.type === sendAARFlowStates.displayingAARToS) {
+ expect(spiedOnMockedTrackSendAARToS.mock.calls.length).toBe(1);
+ expect(spiedOnMockedTrackSendAARToS.mock.calls[0].length).toBe(0);
+ } else {
+ expect(spiedOnMockedTrackSendAARToS.mock.calls.length).toBe(0);
+ }
+ });
+ });
+
it('should initialize the aar flow state if it is "none"', () => {
flowStateSelectorSpy.mockReturnValue({ type: sendAARFlowStates.none });
dispatchSpy.mockReturnValue(mockDispatch);
@@ -142,7 +164,7 @@ describe("SendAARInitialFlowScreen", () => {
screen: PN_ROUTES.MESSAGE_DETAILS,
params: {
messageId: "TEST_IUN",
- firstTimeOpening: true,
+ firstTimeOpening: undefined,
serviceId: "SERVICE_ID",
isAarMessage: true
}
diff --git a/ts/features/pn/aar/screen/__tests__/SendEngagementScreen.test.tsx b/ts/features/pn/aar/screen/__tests__/SendEngagementScreen.test.tsx
index 16cd78b4508..602b740ed80 100644
--- a/ts/features/pn/aar/screen/__tests__/SendEngagementScreen.test.tsx
+++ b/ts/features/pn/aar/screen/__tests__/SendEngagementScreen.test.tsx
@@ -71,13 +71,17 @@ describe("SendEngagementScreen", () => {
);
expect(
spiedOnMockedTrackSendActivationModalDialog.mock.calls[0].length
- ).toBe(2);
+ ).toBe(3);
expect(spiedOnMockedTrackSendActivationModalDialog.mock.calls[0][0]).toBe(
expectedFlow
);
expect(spiedOnMockedTrackSendActivationModalDialog.mock.calls[0][1]).toBe(
+ DEFAULT_OPENING_SOURCE
+ );
+ expect(spiedOnMockedTrackSendActivationModalDialog.mock.calls[0][2]).toBe(
DEFAULT_USER_TYPE
);
+
expect(
spiedOnMockedTrackSendActivationModalDialogActivationDismissed.mock.calls
.length
@@ -106,13 +110,14 @@ describe("SendEngagementScreen", () => {
);
expect(
spiedOnMockedTrackSendActivationModalDialog.mock.calls[0].length
- ).toBe(2);
+ ).toBe(3);
expect(spiedOnMockedTrackSendActivationModalDialog.mock.calls[0][0]).toBe(
expectedFlow
);
expect(spiedOnMockedTrackSendActivationModalDialog.mock.calls[0][1]).toBe(
DEFAULT_USER_TYPE
);
+
expect(
spiedOnMockedTrackSendActivationModalDialogActivationDismissed.mock.calls
.length
@@ -120,7 +125,7 @@ describe("SendEngagementScreen", () => {
expect(
spiedOnMockedTrackSendActivationModalDialogActivationDismissed.mock
.calls[0].length
- ).toBe(2);
+ ).toBe(3);
expect(
spiedOnMockedTrackSendActivationModalDialogActivationDismissed.mock
.calls[0][0]
@@ -128,7 +133,12 @@ describe("SendEngagementScreen", () => {
expect(
spiedOnMockedTrackSendActivationModalDialogActivationDismissed.mock
.calls[0][1]
+ ).toBe(DEFAULT_OPENING_SOURCE);
+ expect(
+ spiedOnMockedTrackSendActivationModalDialogActivationDismissed.mock
+ .calls[0][2]
).toBe(DEFAULT_USER_TYPE);
+
expect(
spiedOnMockedTrackSendActivationModalDialogActivationStart.mock.calls
.length
@@ -138,7 +148,7 @@ describe("SendEngagementScreen", () => {
[false, true].forEach(systemNotificationsEnabled =>
(["aar", "message", "not_set"] as const).forEach(sendOpeningSource =>
(["recipient", "mandatory", "not_set"] as const).forEach(sendUserType =>
- it(`should dispatch a 'pnActivationUpsert.request' and track proper analytics when pressing the primary action, with proper flow for success and failure actions (systemNotificationsEnabled: ${systemNotificationsEnabled})`, () => {
+ it(`should dispatch a 'pnActivationUpsert.request' and track proper analytics when pressing the primary action, with proper flow for success and failure actions (systemNotificationsEnabled: ${systemNotificationsEnabled} openingSource: ${sendOpeningSource} userType: ${sendUserType})`, () => {
const mockPopToTop = jest.fn();
const mockReplace = jest.fn();
const mockSetOptions = jest.fn();
@@ -168,17 +178,22 @@ describe("SendEngagementScreen", () => {
).toBe(1);
expect(
spiedOnMockedTrackSendActivationModalDialog.mock.calls[0].length
- ).toBe(2);
+ ).toBe(3);
expect(
spiedOnMockedTrackSendActivationModalDialog.mock.calls[0][0]
).toBe(expectedFlow);
expect(
spiedOnMockedTrackSendActivationModalDialog.mock.calls[0][1]
+ ).toBe(sendOpeningSource);
+ expect(
+ spiedOnMockedTrackSendActivationModalDialog.mock.calls[0][2]
).toBe(sendUserType);
+
expect(
spiedOnMockedTrackSendActivationModalDialogActivationDismissed.mock
.calls.length
).toBe(0);
+
expect(
spiedOnMockedTrackSendActivationModalDialogActivationStart.mock
.calls.length
@@ -186,7 +201,7 @@ describe("SendEngagementScreen", () => {
expect(
spiedOnMockedTrackSendActivationModalDialogActivationStart.mock
.calls[0].length
- ).toBe(2);
+ ).toBe(3);
expect(
spiedOnMockedTrackSendActivationModalDialogActivationStart.mock
.calls[0][0]
@@ -194,6 +209,10 @@ describe("SendEngagementScreen", () => {
expect(
spiedOnMockedTrackSendActivationModalDialogActivationStart.mock
.calls[0][1]
+ ).toBe(sendOpeningSource);
+ expect(
+ spiedOnMockedTrackSendActivationModalDialogActivationStart.mock
+ .calls[0][2]
).toBe(sendUserType);
const expectedAction = pnActivationUpsert.request({
diff --git a/ts/features/pn/aar/store/actions/__tests__/index.test.ts b/ts/features/pn/aar/store/actions/__tests__/index.test.ts
index 5dbbcd6e2ac..45be55b907e 100644
--- a/ts/features/pn/aar/store/actions/__tests__/index.test.ts
+++ b/ts/features/pn/aar/store/actions/__tests__/index.test.ts
@@ -1,5 +1,6 @@
import { FiscalCode, NonEmptyString } from "@pagopa/ts-commons/lib/strings";
import {
+ EphemeralAarMessageDataActionPayload,
populateStoresWithEphemeralAarMessageData,
setAarFlowState,
terminateAarFlow
@@ -40,7 +41,7 @@ describe("AARFlowStateActions", () => {
markdown: {} as MessageBodyMarkdown,
subject: "" as MessageSubject,
mandateId: ""
- };
+ } as unknown as EphemeralAarMessageDataActionPayload;
const action = populateStoresWithEphemeralAarMessageData(params);
expect(action).toMatchSnapshot();
});
diff --git a/ts/features/pn/aar/store/actions/index.ts b/ts/features/pn/aar/store/actions/index.ts
index 91b02c41b41..4372c21ea0f 100644
--- a/ts/features/pn/aar/store/actions/index.ts
+++ b/ts/features/pn/aar/store/actions/index.ts
@@ -2,7 +2,7 @@ import { NonEmptyString } from "@pagopa/ts-commons/lib/strings";
import { ActionType, createStandardAction } from "typesafe-actions";
import { MessageBodyMarkdown } from "../../../../../../definitions/backend/MessageBodyMarkdown";
import { MessageSubject } from "../../../../../../definitions/backend/MessageSubject";
-import { ThirdPartyMessage } from "../../../../../../definitions/pn/ThirdPartyMessage";
+import { ThirdPartyMessage } from "../../../../../../definitions/pn/aar/ThirdPartyMessage";
import { AARFlowState } from "../../utils/stateUtils";
export type EphemeralAarMessageDataActionPayload = {
diff --git a/ts/features/pn/aar/utils/testUtils.ts b/ts/features/pn/aar/utils/testUtils.ts
index a506b6c6777..ad62c629047 100644
--- a/ts/features/pn/aar/utils/testUtils.ts
+++ b/ts/features/pn/aar/utils/testUtils.ts
@@ -1,8 +1,8 @@
import { FiscalCode, NonEmptyString } from "@pagopa/ts-commons/lib/strings";
import { MessageBodyMarkdown } from "../../../../../definitions/backend/MessageBodyMarkdown";
import { MessageSubject } from "../../../../../definitions/backend/MessageSubject";
-import { ThirdPartyMessage as PnThirdPartyMessage } from "../../../../../definitions/pn/ThirdPartyMessage";
import { EphemeralAarMessageDataActionPayload } from "../store/actions";
+import { ThirdPartyMessage } from "../../../../../definitions/pn/aar/ThirdPartyMessage";
import { AARFlowState, sendAARFlowStates } from "./stateUtils";
export const sendAarMockStateFactory: Record<
@@ -63,7 +63,7 @@ export const sendAarMockStates = sendAarStateNames.map(t =>
export const mockEphemeralAarMessageDataActionPayload: EphemeralAarMessageDataActionPayload =
{
iun: "IUN123" as NonEmptyString,
- thirdPartyMessage: { foo: "bar" } as PnThirdPartyMessage,
+ thirdPartyMessage: {} as unknown as ThirdPartyMessage,
fiscalCode: "TAXCODE123" as FiscalCode,
pnServiceID: "SERVICEID123" as NonEmptyString,
markdown: "*".repeat(81) as MessageBodyMarkdown,
diff --git a/ts/features/pn/analytics/__test__/index.test.ts b/ts/features/pn/analytics/__test__/index.test.ts
index e2be6ca1ea6..fd165eb21b5 100644
--- a/ts/features/pn/analytics/__test__/index.test.ts
+++ b/ts/features/pn/analytics/__test__/index.test.ts
@@ -1,6 +1,38 @@
-import { booleanOrUndefinedToPNServiceStatus } from "..";
+import {
+ booleanOrUndefinedToPNServiceStatus,
+ trackPNAttachmentOpening,
+ trackPNNotificationLoadSuccess,
+ trackPNPaymentStart,
+ trackPNPaymentStatus,
+ trackPNShowF24,
+ trackPNShowTimeline,
+ trackPNTimelineExternal,
+ trackPNUxSuccess
+} from "..";
+import * as MIXPANEL from "../../../../mixpanel";
+import { PaymentStatistics } from "../../../messages/store/reducers/payments";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../../pushNotifications/analytics";
+
+const sendOpeningSources: ReadonlyArray = [
+ "aar",
+ "message",
+ "not_set"
+];
+const sendUserTypes: ReadonlyArray = [
+ "mandatory",
+ "not_set",
+ "recipient"
+];
describe("index", () => {
+ afterEach(() => {
+ jest.clearAllMocks();
+ jest.restoreAllMocks();
+ });
+
describe("booleanOrUndefinedToPNServiceStatus", () => {
(
[
@@ -15,4 +47,272 @@ describe("index", () => {
});
});
});
+
+ // eslint-disable-next-line sonarjs/cognitive-complexity
+ describe("trackPNUxSuccess", () => {
+ [0, 1, 2].forEach(paymentCount =>
+ [undefined, false, true].forEach(firstTimeOpening =>
+ [false, true].forEach(isCancelled =>
+ [false, true].forEach(containsF24 =>
+ sendOpeningSources.forEach(openingSource =>
+ sendUserTypes.forEach(userType => {
+ it(`should call 'mixpanelTrack' with proper event name and parameters (paymentCount ${paymentCount} firstTimeOpening ${firstTimeOpening} isCancelled ${isCancelled} containsF24 ${containsF24} openingSource ${openingSource} userType ${userType})`, () => {
+ const spiedOnMockedMixpanelTrack = jest
+ .spyOn(MIXPANEL, "mixpanelTrack")
+ .mockImplementation();
+
+ trackPNUxSuccess(
+ paymentCount,
+ firstTimeOpening,
+ isCancelled,
+ containsF24,
+ openingSource,
+ userType
+ );
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(
+ 2
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "PN_UX_SUCCESS"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "UX",
+ event_type: "screen_view",
+ contains_payment: paymentCount > 0 ? "yes" : "no",
+ first_time_opening:
+ firstTimeOpening === true
+ ? "yes"
+ : firstTimeOpening === false
+ ? "no"
+ : "not_set",
+ notification_status: isCancelled ? "cancelled" : "active",
+ contains_multipayment: paymentCount > 1 ? "yes" : "no",
+ count_payment: paymentCount,
+ contains_f24: containsF24,
+ opening_source: openingSource,
+ send_user: userType
+ });
+ });
+ })
+ )
+ )
+ )
+ )
+ );
+ });
+
+ describe("trackPNNotificationLoadSuccess", () => {
+ [false, true].forEach(hasAttachments =>
+ [undefined, "CANCELLED"].forEach(status =>
+ sendOpeningSources.forEach(openingSource =>
+ sendUserTypes.forEach(userType =>
+ it(`should call 'mixpanelTrack' with proper event name and properties (hasAttachments ${hasAttachments} status ${status} openingSource ${openingSource} userType ${userType})`, () => {
+ const spiedOnMockedMixpanelTrack = jest
+ .spyOn(MIXPANEL, "mixpanelTrack")
+ .mockImplementation();
+
+ trackPNNotificationLoadSuccess(
+ hasAttachments,
+ status,
+ openingSource,
+ userType
+ );
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "PN_NOTIFICATION_LOAD_SUCCESS"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "TECH",
+ event_type: undefined,
+ NOTIFICATION_LAST_STATUS: status ?? "not_set",
+ HAS_ATTACHMENTS: hasAttachments,
+ opening_source: openingSource,
+ send_user: userType
+ });
+ })
+ )
+ )
+ )
+ );
+ });
+
+ describe("trackPNPaymentStatus", () => {
+ sendOpeningSources.forEach(source => {
+ sendUserTypes.forEach(userType => {
+ it(`should call 'mixpanelTrack' with proper event name and parameters (source ${source} userType ${userType})`, () => {
+ const spiedOnMockedMixpanelTrack = jest
+ .spyOn(MIXPANEL, "mixpanelTrack")
+ .mockImplementation();
+
+ const paymentStatistics: PaymentStatistics = {
+ errorCount: 1,
+ expiredCount: 2,
+ ongoingCount: 3,
+ paidCount: 4,
+ paymentCount: 5,
+ revokedCount: 6,
+ unpaidCount: 7
+ };
+
+ trackPNPaymentStatus(paymentStatistics, source, userType);
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "PN_PAYMENT_STATUS"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "TECH",
+ event_type: undefined,
+ count_payment: paymentStatistics.paymentCount,
+ count_unpaid: paymentStatistics.unpaidCount,
+ count_paid: paymentStatistics.paidCount,
+ count_error: paymentStatistics.errorCount,
+ count_expired: paymentStatistics.expiredCount,
+ count_revoked: paymentStatistics.revokedCount,
+ count_inprogress: paymentStatistics.ongoingCount,
+ opening_source: source,
+ send_user: userType
+ });
+ });
+ });
+ });
+ });
+
+ describe("trackPNAttachmentOpening", () => {
+ sendOpeningSources.forEach(source => {
+ sendUserTypes.forEach(userType => {
+ [undefined, "F24"].forEach(category => {
+ it(`should call 'mixpanelTrack' with proper event name and parameters (source ${source} userType ${userType} category ${category})`, () => {
+ const spiedOnMockedMixpanelTrack = jest
+ .spyOn(MIXPANEL, "mixpanelTrack")
+ .mockImplementation();
+
+ trackPNAttachmentOpening(source, userType, category);
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "PN_ATTACHMENT_OPENING"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "UX",
+ event_type: "action",
+ category,
+ opening_source: source,
+ send_user: userType
+ });
+ });
+ });
+ });
+ });
+ });
+
+ describe("trackPNPaymentStart", () => {
+ sendOpeningSources.forEach(source => {
+ sendUserTypes.forEach(userType => {
+ it(`should call 'mixpanelTrack' with proper event name and parameters (source ${source} userType ${userType})`, () => {
+ const spiedOnMockedMixpanelTrack = jest
+ .spyOn(MIXPANEL, "mixpanelTrack")
+ .mockImplementation();
+
+ trackPNPaymentStart(source, userType);
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "PN_PAYMENT_START"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "UX",
+ event_type: "action",
+ opening_source: source,
+ send_user: userType
+ });
+ });
+ });
+ });
+ });
+
+ describe("trackPNShowTimeline", () => {
+ sendOpeningSources.forEach(source => {
+ sendUserTypes.forEach(userType => {
+ it(`should call 'mixpanelTrack' with proper event name and parameters (source ${source} userType ${userType})`, () => {
+ const spiedOnMockedMixpanelTrack = jest
+ .spyOn(MIXPANEL, "mixpanelTrack")
+ .mockImplementation();
+
+ trackPNShowTimeline(source, userType);
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "PN_SHOW_TIMELINE"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "UX",
+ event_type: "action",
+ opening_source: source,
+ send_user: userType
+ });
+ });
+ });
+ });
+ });
+
+ describe("trackPNShowF24", () => {
+ sendOpeningSources.forEach(source => {
+ sendUserTypes.forEach(userType => {
+ it(`should call 'mixpanelTrack' with proper event name and parameters (source ${source} userType ${userType})`, () => {
+ const spiedOnMockedMixpanelTrack = jest
+ .spyOn(MIXPANEL, "mixpanelTrack")
+ .mockImplementation();
+
+ trackPNShowF24(source, userType);
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "PN_SHOW_F24"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "UX",
+ event_type: "action",
+ opening_source: source,
+ send_user: userType
+ });
+ });
+ });
+ });
+ });
+
+ describe("trackPNTimelineExternal", () => {
+ sendOpeningSources.forEach(source => {
+ sendUserTypes.forEach(userType => {
+ it(`should call 'mixpanelTrack' with proper event name and parameters (source ${source} userType ${userType})`, () => {
+ const spiedOnMockedMixpanelTrack = jest
+ .spyOn(MIXPANEL, "mixpanelTrack")
+ .mockImplementation();
+
+ trackPNTimelineExternal(source, userType);
+
+ expect(spiedOnMockedMixpanelTrack.mock.calls.length).toBe(1);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][0]).toBe(
+ "PN_TIMELINE_EXTERNAL"
+ );
+ expect(spiedOnMockedMixpanelTrack.mock.calls[0][1]).toEqual({
+ event_category: "UX",
+ event_type: "exit",
+ opening_source: source,
+ send_user: userType
+ });
+ });
+ });
+ });
+ });
});
diff --git a/ts/features/pn/analytics/__test__/send.test.ts b/ts/features/pn/analytics/__test__/send.test.ts
index 2ee3d5cabfa..3c078b61b27 100644
--- a/ts/features/pn/analytics/__test__/send.test.ts
+++ b/ts/features/pn/analytics/__test__/send.test.ts
@@ -4,6 +4,7 @@ import { mixpanelTrack } from "../../../../mixpanel";
import { buildEventProperties } from "../../../../utils/analytics";
import {
NotificationModalFlow,
+ SendOpeningSource,
SendUserType
} from "../../../pushNotifications/analytics";
@@ -12,6 +13,11 @@ const notificationModalFlowList: Array = [
"send_notification_opening",
"access"
];
+const sendOpeningSources: Array = [
+ "aar",
+ "message",
+ "not_set"
+];
const sendUserList: Array = ["mandatory", "recipient", "not_set"];
const sendActivationSourceList: Array = [
"tos_bottomsheet",
@@ -23,49 +29,69 @@ jest.mock("../../../../mixpanel", () => ({
}));
notificationModalFlowList.forEach(flow =>
- sendUserList.forEach(send_user => {
- describe(`SEND events when flow is "${flow}" and send_user is "${send_user}"`, () => {
- beforeEach(jest.clearAllMocks);
-
- it(`should track "SEND_ACTIVATION_MODAL_DIALOG" event with the properties => flow = "${flow}" and send_user = "${send_user}"`, () => {
- sendEvents.trackSendActivationModalDialog(flow, send_user);
+ sendOpeningSources.forEach(sendOpeningSource =>
+ sendUserList.forEach(send_user => {
+ describe(`SEND events when flow is "${flow}" send_user is "${send_user}" and opening source is "${sendOpeningSource}"`, () => {
+ beforeEach(jest.clearAllMocks);
- expect(mixpanelTrack).toHaveBeenCalledWith(
- "SEND_ACTIVATION_MODAL_DIALOG",
- buildEventProperties("UX", "screen_view", {
+ it(`should track "SEND_ACTIVATION_MODAL_DIALOG" event with the properties => flow = "${flow}" send_user = "${send_user}" opening source = "${sendOpeningSource}"`, () => {
+ sendEvents.trackSendActivationModalDialog(
flow,
+ sendOpeningSource,
send_user
- })
- );
- });
- it(`should track "SEND_ACTIVATION_MODAL_DIALOG_ACTIVATION_START" event with the properties => flow = "${flow}" and send_user = "${send_user}"`, () => {
- sendEvents.trackSendActivationModalDialogActivationStart(
- flow,
- send_user
- );
+ );
- expect(mixpanelTrack).toHaveBeenCalledWith(
- "SEND_ACTIVATION_MODAL_DIALOG_ACTIVATION_START",
- buildEventProperties("UX", "action", {
+ expect(mixpanelTrack).toHaveBeenCalledWith(
+ "SEND_ACTIVATION_MODAL_DIALOG",
+ buildEventProperties("UX", "screen_view", {
+ flow,
+ opening_source: sendOpeningSource,
+ send_user
+ })
+ );
+ });
+ it(`should track "SEND_ACTIVATION_MODAL_DIALOG_ACTIVATION_START" event with the properties => flow = "${flow}" send_user = "${send_user}" opening source = "${sendOpeningSource}"`, () => {
+ sendEvents.trackSendActivationModalDialogActivationStart(
flow,
+ sendOpeningSource,
send_user
- })
- );
- });
- it(`should track "SEND_ACTIVATION_MODAL_DIALOG_DISMISSED" event with the properties => flow = "${flow}" and send_user = "${send_user}"`, () => {
- sendEvents.trackSendActivationModalDialogActivationDismissed(
- flow,
- send_user
- );
+ );
- expect(mixpanelTrack).toHaveBeenCalledWith(
- "SEND_ACTIVATION_MODAL_DIALOG_DISMISSED",
- buildEventProperties("UX", "action", {
+ expect(mixpanelTrack).toHaveBeenCalledWith(
+ "SEND_ACTIVATION_MODAL_DIALOG_ACTIVATION_START",
+ buildEventProperties("UX", "action", {
+ flow,
+ opening_source: sendOpeningSource,
+ send_user
+ })
+ );
+ });
+ it(`should track "SEND_ACTIVATION_MODAL_DIALOG_DISMISSED" event with the properties => flow = "${flow}" send_user = "${send_user}" opening source = "${sendOpeningSource}"`, () => {
+ sendEvents.trackSendActivationModalDialogActivationDismissed(
flow,
+ sendOpeningSource,
send_user
- })
- );
+ );
+
+ expect(mixpanelTrack).toHaveBeenCalledWith(
+ "SEND_ACTIVATION_MODAL_DIALOG_DISMISSED",
+ buildEventProperties("UX", "action", {
+ flow,
+ opening_source: sendOpeningSource,
+ send_user
+ })
+ );
+ });
});
+ })
+ )
+);
+
+notificationModalFlowList.forEach(flow =>
+ sendUserList.forEach(send_user => {
+ describe(`SEND events when flow is "${flow}" and send_user is "${send_user}"`, () => {
+ beforeEach(jest.clearAllMocks);
+
it(`should track "SEND_ACCEPTANCE_DIALOG" event with the properties => flow = "${flow}" and send_user = "${send_user}"`, () => {
sendEvents.trackSendAcceptanceDialog(flow, send_user);
diff --git a/ts/features/pn/analytics/index.ts b/ts/features/pn/analytics/index.ts
index f40cb896f79..63655c5c347 100644
--- a/ts/features/pn/analytics/index.ts
+++ b/ts/features/pn/analytics/index.ts
@@ -1,16 +1,15 @@
-import { pipe } from "fp-ts/lib/function";
-import * as A from "fp-ts/lib/Array";
-import * as O from "fp-ts/lib/Option";
import { mixpanelTrack } from "../../../mixpanel";
-import { PNMessage } from "../../pn/store/types/types";
-import { NotificationStatusHistoryElement } from "../../../../definitions/pn/NotificationStatusHistoryElement";
import {
booleanToYesNo,
buildEventProperties,
numberToYesNoOnThreshold
} from "../../../utils/analytics";
-import { ThirdPartyAttachment } from "../../../../definitions/backend/ThirdPartyAttachment";
import { PaymentStatistics } from "../../messages/store/reducers/payments";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../pushNotifications/analytics";
+import { NotificationStatus } from "../../../../definitions/pn/NotificationStatus";
export type PNServiceStatus = "active" | "not_active" | "unknown";
@@ -116,13 +115,18 @@ export function trackPNAttachmentSaveShare(category?: string) {
);
}
-export function trackPNAttachmentOpening(category?: string) {
- void mixpanelTrack(
- "PN_ATTACHMENT_OPENING",
- buildEventProperties("UX", "action", {
- category
- })
- );
+export function trackPNAttachmentOpening(
+ openingSource: SendOpeningSource,
+ userType: SendUserType,
+ category?: string
+) {
+ const eventName = "PN_ATTACHMENT_OPENING";
+ const props = buildEventProperties("UX", "action", {
+ category,
+ opening_source: openingSource,
+ send_user: userType
+ });
+ void mixpanelTrack(eventName, props);
}
export function trackPNAttachmentOpeningSuccess(
@@ -142,72 +146,88 @@ export function trackPNNotificationLoadError(errorCode?: string) {
void mixpanelTrack(
"PN_NOTIFICATION_LOAD_ERROR",
buildEventProperties("KO", undefined, {
- ERROR_CODE: errorCode,
- JSON_DECODE_FAILED: errorCode ? false : true
+ ERROR_CODE: errorCode
})
);
}
-export function trackPNNotificationLoadSuccess(pnMessage: PNMessage) {
- pipe(
- pnMessage.notificationStatusHistory as Array,
- A.last,
- O.map(lastNotification => lastNotification.status),
- O.fold(
- () => undefined,
- (status: string) =>
- void mixpanelTrack(
- "PN_NOTIFICATION_LOAD_SUCCESS",
- buildEventProperties("TECH", undefined, {
- NOTIFICATION_LAST_STATUS: status,
- HAS_ATTACHMENTS: pipe(
- pnMessage.attachments as Array,
- O.fromNullable,
- O.map(A.isNonEmpty),
- O.getOrElse(() => false)
- )
- })
- )
- )
- );
+export function trackPNNotificationLoadSuccess(
+ hasAttachmens: boolean,
+ status: NotificationStatus | undefined,
+ openingSource: SendOpeningSource,
+ userType: SendUserType
+) {
+ const eventName = "PN_NOTIFICATION_LOAD_SUCCESS";
+ const eventProperties = buildEventProperties("TECH", undefined, {
+ NOTIFICATION_LAST_STATUS: status ?? "not_set",
+ HAS_ATTACHMENTS: hasAttachmens,
+ opening_source: openingSource,
+ send_user: userType
+ });
+ void mixpanelTrack(eventName, eventProperties);
}
export function trackPNPushOpened() {
void mixpanelTrack("PN_PUSH_OPENED", buildEventProperties("UX", "action"));
}
-export function trackPNTimelineExternal() {
- void mixpanelTrack(
- "PN_TIMELINE_EXTERNAL",
- buildEventProperties("UX", "exit")
- );
+export function trackPNTimelineExternal(
+ openingSource: SendOpeningSource,
+ userType: SendUserType
+) {
+ const eventName = "PN_TIMELINE_EXTERNAL";
+ const eventProps = buildEventProperties("UX", "exit", {
+ opening_source: openingSource,
+ send_user: userType
+ });
+ void mixpanelTrack(eventName, eventProps);
}
-export function trackPNShowTimeline() {
- void mixpanelTrack("PN_SHOW_TIMELINE", buildEventProperties("UX", "action"));
+export function trackPNShowTimeline(
+ openingSource: SendOpeningSource,
+ userType: SendUserType
+) {
+ const eventName = "PN_SHOW_TIMELINE";
+ const eventProps = buildEventProperties("UX", "action", {
+ opening_source: openingSource,
+ send_user: userType
+ });
+ void mixpanelTrack(eventName, eventProps);
}
export function trackPNUxSuccess(
paymentCount: number,
- firstTimeOpening: boolean,
+ firstTimeOpening: boolean | undefined,
isCancelled: boolean,
- containsF24: boolean
+ containsF24: boolean,
+ openingSource: SendOpeningSource,
+ userType: SendUserType
) {
- void mixpanelTrack(
- "PN_UX_SUCCESS",
- buildEventProperties("UX", "screen_view", {
- contains_payment: numberToYesNoOnThreshold(paymentCount),
- first_time_opening: booleanToYesNo(firstTimeOpening),
- notification_status: isCancelled ? "cancelled" : "active",
- contains_multipayment: numberToYesNoOnThreshold(paymentCount, 1),
- count_payment: paymentCount,
- contains_f24: containsF24
- })
- );
+ const eventName = "PN_UX_SUCCESS";
+ const props = buildEventProperties("UX", "screen_view", {
+ contains_payment: numberToYesNoOnThreshold(paymentCount),
+ first_time_opening:
+ firstTimeOpening != null ? booleanToYesNo(firstTimeOpening) : "not_set",
+ notification_status: isCancelled ? "cancelled" : "active",
+ contains_multipayment: numberToYesNoOnThreshold(paymentCount, 1),
+ count_payment: paymentCount,
+ contains_f24: containsF24,
+ opening_source: openingSource,
+ send_user: userType
+ });
+ void mixpanelTrack(eventName, props);
}
-export function trackPNPaymentStart() {
- void mixpanelTrack("PN_PAYMENT_START", buildEventProperties("UX", "action"));
+export function trackPNPaymentStart(
+ openingSource: SendOpeningSource,
+ userType: SendUserType
+) {
+ const eventName = "PN_PAYMENT_START";
+ const eventProps = buildEventProperties("UX", "action", {
+ opening_source: openingSource,
+ send_user: userType
+ });
+ void mixpanelTrack(eventName, eventProps);
}
export function trackPNShowAllPayments() {
@@ -217,29 +237,42 @@ export function trackPNShowAllPayments() {
);
}
-export function trackPNPaymentStatus({
- paymentCount,
- unpaidCount,
- paidCount,
- errorCount,
- expiredCount,
- revokedCount,
- ongoingCount
-}: PaymentStatistics) {
- void mixpanelTrack(
- "PN_PAYMENT_STATUS",
- buildEventProperties("TECH", undefined, {
- count_payment: paymentCount,
- count_unpaid: unpaidCount,
- count_paid: paidCount,
- count_error: errorCount,
- count_expired: expiredCount,
- count_revoked: revokedCount,
- count_inprogress: ongoingCount
- })
- );
+export function trackPNPaymentStatus(
+ {
+ paymentCount,
+ unpaidCount,
+ paidCount,
+ errorCount,
+ expiredCount,
+ revokedCount,
+ ongoingCount
+ }: PaymentStatistics,
+ openingSource: SendOpeningSource,
+ userType: SendUserType
+) {
+ const eventName = "PN_PAYMENT_STATUS";
+ const props = buildEventProperties("TECH", undefined, {
+ count_payment: paymentCount,
+ count_unpaid: unpaidCount,
+ count_paid: paidCount,
+ count_error: errorCount,
+ count_expired: expiredCount,
+ count_revoked: revokedCount,
+ count_inprogress: ongoingCount,
+ opening_source: openingSource,
+ send_user: userType
+ });
+ void mixpanelTrack(eventName, props);
}
-export function trackPNShowF24() {
- void mixpanelTrack("PN_SHOW_F24", buildEventProperties("UX", "action"));
+export function trackPNShowF24(
+ openingSource: SendOpeningSource,
+ userType: SendUserType
+) {
+ const eventName = "PN_SHOW_F24";
+ const eventProps = buildEventProperties("UX", "action", {
+ opening_source: openingSource,
+ send_user: userType
+ });
+ void mixpanelTrack(eventName, eventProps);
}
diff --git a/ts/features/pn/analytics/send.ts b/ts/features/pn/analytics/send.ts
index 9cbacaf6f16..42f9277f3b6 100644
--- a/ts/features/pn/analytics/send.ts
+++ b/ts/features/pn/analytics/send.ts
@@ -2,6 +2,7 @@ import { mixpanelTrack } from "../../../mixpanel";
import { buildEventProperties } from "../../../utils/analytics";
import {
NotificationModalFlow,
+ SendOpeningSource,
SendUserType
} from "../../pushNotifications/analytics";
@@ -9,41 +10,46 @@ export type SendActivationSource = "tos_bottomsheet" | "nurturing_bottomsheet";
export const trackSendActivationModalDialog = (
flow: NotificationModalFlow,
- send_user: SendUserType = "not_set"
+ sendSource: SendOpeningSource = "not_set",
+ sendUser: SendUserType = "not_set"
) => {
- void mixpanelTrack(
- "SEND_ACTIVATION_MODAL_DIALOG",
- buildEventProperties("UX", "screen_view", {
- send_user,
- flow
- })
- );
+ const eventName = "SEND_ACTIVATION_MODAL_DIALOG";
+ const properties = buildEventProperties("UX", "screen_view", {
+ flow,
+ opening_source: sendSource,
+ send_user: sendUser
+ });
+ mixpanelTrack(eventName, properties);
};
export const trackSendActivationModalDialogActivationStart = (
flow: NotificationModalFlow,
- send_user: SendUserType = "not_set"
+ sendSource: SendOpeningSource = "not_set",
+ sendUser: SendUserType = "not_set"
) => {
- void mixpanelTrack(
- "SEND_ACTIVATION_MODAL_DIALOG_ACTIVATION_START",
- buildEventProperties("UX", "action", {
- send_user,
- flow
- })
- );
+ const eventName = "SEND_ACTIVATION_MODAL_DIALOG_ACTIVATION_START";
+ const properties = buildEventProperties("UX", "action", {
+ flow,
+ opening_source: sendSource,
+ send_user: sendUser
+ });
+ mixpanelTrack(eventName, properties);
};
+
export const trackSendActivationModalDialogActivationDismissed = (
flow: NotificationModalFlow,
- send_user: SendUserType = "not_set"
+ sendSource: SendOpeningSource = "not_set",
+ sendUser: SendUserType = "not_set"
) => {
- void mixpanelTrack(
- "SEND_ACTIVATION_MODAL_DIALOG_DISMISSED",
- buildEventProperties("UX", "action", {
- send_user,
- flow
- })
- );
+ const eventName = "SEND_ACTIVATION_MODAL_DIALOG_DISMISSED";
+ const properties = buildEventProperties("UX", "action", {
+ flow,
+ opening_source: sendSource,
+ send_user: sendUser
+ });
+ mixpanelTrack(eventName, properties);
};
+
export const trackSendAcceptanceDialog = (
flow: NotificationModalFlow,
send_user: SendUserType = "not_set"
diff --git a/ts/features/pn/components/F24ListBottomSheetLink.tsx b/ts/features/pn/components/F24ListBottomSheetLink.tsx
index cb63480621e..e339e74cab3 100644
--- a/ts/features/pn/components/F24ListBottomSheetLink.tsx
+++ b/ts/features/pn/components/F24ListBottomSheetLink.tsx
@@ -7,17 +7,25 @@ import { trackPNShowF24 } from "../analytics";
import { useIODispatch } from "../../../store/hooks";
import { cancelPreviousAttachmentDownload } from "../../messages/store/actions";
import { ServiceId } from "../../../../definitions/backend/ServiceId";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../pushNotifications/analytics";
-type F24ListBottomSheetLinkProps = {
+export type F24ListBottomSheetLinkProps = {
f24List: ReadonlyArray;
messageId: string;
serviceId: ServiceId;
+ sendOpeningSource: SendOpeningSource;
+ sendUserType: SendUserType;
};
export const F24ListBottomSheetLink = ({
f24List,
messageId,
- serviceId
+ serviceId,
+ sendOpeningSource,
+ sendUserType
}: F24ListBottomSheetLinkProps) => {
// The empty footer is needed in order for the internal scroll view to properly compute
// its bottom space when the bottom sheet opens filling the entire view. Without it, the
@@ -30,7 +38,8 @@ export const F24ListBottomSheetLink = ({
{
@@ -50,9 +59,10 @@ export const F24ListBottomSheetLink = ({
variant="link"
label={I18n.t("features.pn.details.f24Section.showAll")}
onPress={() => {
- trackPNShowF24();
+ trackPNShowF24(sendOpeningSource, sendUserType);
present();
}}
+ testID="f24_list_bottomsheet_link_button"
/>
{bottomSheet}
>
diff --git a/ts/features/pn/components/F24Section.tsx b/ts/features/pn/components/F24Section.tsx
index 7cd869e0183..c69863b4f88 100644
--- a/ts/features/pn/components/F24Section.tsx
+++ b/ts/features/pn/components/F24Section.tsx
@@ -5,18 +5,26 @@ import { thirdPartyMessageAttachments } from "../../messages/store/reducers/thir
import { ATTACHMENT_CATEGORY } from "../../messages/types/attachmentCategory";
import { MessageDetailsAttachmentItem } from "../../messages/components/MessageDetail/MessageDetailsAttachmentItem";
import { ServiceId } from "../../../../definitions/backend/ServiceId";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../pushNotifications/analytics";
import { F24ListBottomSheetLink } from "./F24ListBottomSheetLink";
-type F24SectionProps = {
+export type F24SectionProps = {
isCancelled?: boolean;
messageId: string;
serviceId: ServiceId;
+ sendOpeningSource: SendOpeningSource;
+ sendUserType: SendUserType;
};
export const F24Section = ({
isCancelled = false,
messageId,
- serviceId
+ serviceId,
+ sendOpeningSource,
+ sendUserType
}: F24SectionProps) => {
const attachments = useIOSelector(state =>
thirdPartyMessageAttachments(state, messageId)
@@ -42,7 +50,8 @@ export const F24Section = ({
attachment={f24s[0]}
messageId={messageId}
serviceId={serviceId}
- isPN
+ sendOpeningSource={sendOpeningSource}
+ sendUserType={sendUserType}
/>
)}
{f24Count > 1 && (
@@ -50,6 +59,8 @@ export const F24Section = ({
f24List={f24s}
messageId={messageId}
serviceId={serviceId}
+ sendOpeningSource={sendOpeningSource}
+ sendUserType={sendUserType}
/>
)}
diff --git a/ts/features/pn/components/MessageBottomMenu.tsx b/ts/features/pn/components/MessageBottomMenu.tsx
index cbc1eea8723..a3ece575a5d 100644
--- a/ts/features/pn/components/MessageBottomMenu.tsx
+++ b/ts/features/pn/components/MessageBottomMenu.tsx
@@ -13,6 +13,10 @@ import {
ShowMoreSection
} from "../../messages/components/MessageDetail/ShowMoreListItem";
import { formatPaymentNoticeNumber } from "../../payments/common/utils";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../pushNotifications/analytics";
import { TimelineListItem } from "./TimelineListItem";
import { NeedHelp } from "./NeedHelp";
@@ -32,6 +36,8 @@ export type MessageBottomMenuProps = {
messageId: string;
paidNoticeCodes?: ReadonlyArray;
payments?: ReadonlyArray;
+ sendOpeningSource: SendOpeningSource;
+ sendUserType: SendUserType;
};
const generateMessageSectionData = (
@@ -132,7 +138,9 @@ export const MessageBottomMenu = ({
iun,
messageId,
paidNoticeCodes,
- payments
+ payments,
+ sendOpeningSource,
+ sendUserType
}: MessageBottomMenuProps) => {
const theme = useIOTheme();
@@ -154,7 +162,11 @@ export const MessageBottomMenu = ({
{ backgroundColor: IOColors[theme["appBackground-secondary"]] }
]}
>
-
+
diff --git a/ts/features/pn/components/MessageCancelledContent.tsx b/ts/features/pn/components/MessageCancelledContent.tsx
index f612fc9e81d..a0794233abb 100644
--- a/ts/features/pn/components/MessageCancelledContent.tsx
+++ b/ts/features/pn/components/MessageCancelledContent.tsx
@@ -2,7 +2,7 @@ import { Alert, VSpacer } from "@pagopa/io-app-design-system";
import I18n from "i18next";
import { NotificationPaymentInfo } from "../../../../definitions/pn/NotificationPaymentInfo";
-type MessageCancelledContentProps = {
+export type MessageCancelledContentProps = {
isCancelled?: boolean;
paidNoticeCodes?: ReadonlyArray;
payments?: ReadonlyArray;
diff --git a/ts/features/pn/components/MessageDetails.tsx b/ts/features/pn/components/MessageDetails.tsx
index a8bc61d96a8..e01b7c0f267 100644
--- a/ts/features/pn/components/MessageDetails.tsx
+++ b/ts/features/pn/components/MessageDetails.tsx
@@ -24,6 +24,10 @@ import {
maxVisiblePaymentCount,
shouldUseBottomSheetForPayments
} from "../utils";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../pushNotifications/analytics";
import { BannerAttachments } from "./BannerAttachments";
import { F24Section } from "./F24Section";
import { MessageBottomMenu } from "./MessageBottomMenu";
@@ -38,7 +42,9 @@ export type MessageDetailsProps = {
messageId: string;
serviceId: ServiceId;
payments?: ReadonlyArray;
- isAARMessage?: boolean;
+ isAARMessage: boolean;
+ sendOpeningSource: SendOpeningSource;
+ sendUserType: SendUserType;
};
export const MessageDetails = ({
@@ -46,7 +52,9 @@ export const MessageDetails = ({
messageId,
payments,
serviceId,
- isAARMessage = false
+ isAARMessage,
+ sendOpeningSource,
+ sendUserType
}: MessageDetailsProps) => {
const presentPaymentsBottomSheetRef = useRef<() => void>(undefined);
const partitionedAttachments = pipe(
@@ -113,8 +121,9 @@ export const MessageDetails = ({
banner={}
disabled={message.isCancelled}
messageId={messageId}
- isPN
serviceId={serviceId}
+ sendOpeningSource={sendOpeningSource}
+ sendUserType={sendUserType}
/>
@@ -141,16 +154,19 @@ export const MessageDetails = ({
messageId={messageId}
paidNoticeCodes={completedPaymentNoticeCodes}
payments={payments}
+ sendOpeningSource={sendOpeningSource}
+ sendUserType={sendUserType}
/>
{shouldUseBottomSheetForPayments(isCancelled, payments) && (
)}
>
diff --git a/ts/features/pn/components/MessageDetailsContent.tsx b/ts/features/pn/components/MessageDetailsContent.tsx
index 4d78e62e7ac..76fdf0f2b30 100644
--- a/ts/features/pn/components/MessageDetailsContent.tsx
+++ b/ts/features/pn/components/MessageDetailsContent.tsx
@@ -9,7 +9,7 @@ import {
import { sendShowAbstractSelector } from "../../../store/reducers/backendStatus/remoteConfig";
import { isTestEnv } from "../../../utils/environment";
-type MessageDetailsContentProps = { message: PNMessage };
+export type MessageDetailsContentProps = { message: PNMessage };
export const MessageDetailsContent = ({
message
}: MessageDetailsContentProps) => (
diff --git a/ts/features/pn/components/MessageFooter.tsx b/ts/features/pn/components/MessageFooter.tsx
index 921644f0491..4513b5edc4c 100644
--- a/ts/features/pn/components/MessageFooter.tsx
+++ b/ts/features/pn/components/MessageFooter.tsx
@@ -14,16 +14,20 @@ import { trackPNPaymentStart, trackPNShowAllPayments } from "../analytics";
import { initializeAndNavigateToWalletForPayment } from "../../messages/utils";
import { paymentsButtonStateSelector } from "../store/reducers/payments";
import { shouldUseBottomSheetForPayments } from "../utils";
-import { ServiceId } from "../../../../definitions/backend/ServiceId";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../pushNotifications/analytics";
-type MessageFooterProps = {
+export type MessageFooterProps = {
messageId: string;
payments: ReadonlyArray | undefined;
maxVisiblePaymentCount: number;
isCancelled: boolean;
presentPaymentsBottomSheetRef: MutableRefObject<(() => void) | undefined>;
- serviceId: ServiceId;
onMeasure: (measurements: FooterActionsMeasurements) => void;
+ sendOpeningSource: SendOpeningSource;
+ sendUserType: SendUserType;
};
export const MessageFooter = ({
@@ -32,7 +36,9 @@ export const MessageFooter = ({
maxVisiblePaymentCount,
isCancelled,
presentPaymentsBottomSheetRef,
- onMeasure
+ onMeasure,
+ sendOpeningSource,
+ sendUserType
}: MessageFooterProps) => {
const dispatch = useDispatch();
const toast = useIOToast();
@@ -59,7 +65,7 @@ export const MessageFooter = ({
true,
canNavigateToPayment,
dispatch,
- () => trackPNPaymentStart(),
+ () => trackPNPaymentStart(sendOpeningSource, sendUserType),
() => toast.error(I18n.t("genericError"))
);
}
@@ -68,6 +74,8 @@ export const MessageFooter = ({
dispatch,
payments,
presentPaymentsBottomSheetRef,
+ sendOpeningSource,
+ sendUserType,
toast
]);
if (isCancelled || buttonState === "hidden") {
diff --git a/ts/features/pn/components/MessagePaymentBottomSheet.tsx b/ts/features/pn/components/MessagePaymentBottomSheet.tsx
index 2d7fd8ea8da..fd24ff7aba3 100644
--- a/ts/features/pn/components/MessagePaymentBottomSheet.tsx
+++ b/ts/features/pn/components/MessagePaymentBottomSheet.tsx
@@ -8,19 +8,27 @@ import { MessagePaymentItem } from "../../messages/components/MessageDetail/Mess
import { cancelQueuedPaymentUpdates } from "../../messages/store/actions";
import { getRptIdStringFromPayment } from "../utils/rptId";
import { ServiceId } from "../../../../definitions/backend/ServiceId";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../pushNotifications/analytics";
export type MessagePaymentBottomSheetProps = {
messageId: string;
payments: ReadonlyArray;
presentPaymentsBottomSheetRef: MutableRefObject<(() => void) | undefined>;
serviceId: ServiceId;
+ sendOpeningSource: SendOpeningSource;
+ sendUserType: SendUserType;
};
export const MessagePaymentBottomSheet = ({
messageId,
payments,
presentPaymentsBottomSheetRef,
- serviceId
+ serviceId,
+ sendOpeningSource,
+ sendUserType
}: MessagePaymentBottomSheetProps) => {
const dispatch = useIODispatch();
const windowHeight = Dimensions.get("window").height;
@@ -42,6 +50,8 @@ export const MessagePaymentBottomSheet = ({
noSpaceOnTop={index === 0}
serviceId={serviceId}
willNavigateToPayment={() => dismiss()}
+ sendOpeningSource={sendOpeningSource}
+ sendUserType={sendUserType}
/>
);
})}
diff --git a/ts/features/pn/components/MessagePayments.tsx b/ts/features/pn/components/MessagePayments.tsx
index 3b1dda5032f..e63ebb9277e 100644
--- a/ts/features/pn/components/MessagePayments.tsx
+++ b/ts/features/pn/components/MessagePayments.tsx
@@ -24,6 +24,10 @@ import PN_ROUTES from "../navigation/routes";
import { paymentsButtonStateSelector } from "../store/reducers/payments";
import { canShowMorePaymentsLink } from "../utils";
import { getRptIdStringFromPayment } from "../utils/rptId";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../pushNotifications/analytics";
const styles = StyleSheet.create({
morePaymentsSkeletonContainer: {
@@ -35,7 +39,7 @@ const styles = StyleSheet.create({
}
});
-type MessagePaymentsProps = {
+export type MessagePaymentsProps = {
messageId: string;
isCancelled: boolean;
payments: ReadonlyArray | undefined;
@@ -43,6 +47,8 @@ type MessagePaymentsProps = {
maxVisiblePaymentCount: number;
presentPaymentsBottomSheetRef: MutableRefObject<(() => void) | undefined>;
serviceId: ServiceId;
+ sendOpeningSource: SendOpeningSource;
+ sendUserType: SendUserType;
};
const readonlyArrayHasNoData = (maybeArray: ReadonlyArray | undefined) =>
@@ -98,7 +104,9 @@ export const MessagePayments = ({
completedPaymentNoticeCodes,
maxVisiblePaymentCount,
presentPaymentsBottomSheetRef,
- serviceId
+ serviceId,
+ sendOpeningSource,
+ sendUserType
}: MessagePaymentsProps) => {
const navigation = useNavigation();
const theme = useIOTheme();
@@ -185,6 +193,8 @@ export const MessagePayments = ({
rptId={rptId}
noticeNumber={payment.noticeCode}
serviceId={serviceId}
+ sendOpeningSource={sendOpeningSource}
+ sendUserType={sendUserType}
/>
);
})}
diff --git a/ts/features/pn/components/TimelineListItem.tsx b/ts/features/pn/components/TimelineListItem.tsx
index 16391ed462f..5364ec29be4 100644
--- a/ts/features/pn/components/TimelineListItem.tsx
+++ b/ts/features/pn/components/TimelineListItem.tsx
@@ -17,6 +17,10 @@ import { trackPNShowTimeline, trackPNTimelineExternal } from "../analytics";
import { handleItemOnPress } from "../../../utils/url";
import { useIOSelector } from "../../../store/hooks";
import { pnFrontendUrlSelector } from "../../../store/reducers/backendStatus/remoteConfig";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../pushNotifications/analytics";
import { Timeline, TimelineItemProps } from "./Timeline";
const topBottomSheetMargin = 122;
@@ -25,6 +29,8 @@ const timelineItemHeight = 70;
export type TimelineListItemProps = {
history: NotificationStatusHistory;
+ sendOpeningSource: SendOpeningSource;
+ sendUserType: SendUserType;
};
const generateTimelineData = (
@@ -41,7 +47,11 @@ const generateTimelineData = (
status: notificationStatusToTimelineStatus(historyItem.status)
}));
-export const TimelineListItem = ({ history }: TimelineListItemProps) => {
+export const TimelineListItem = ({
+ history,
+ sendOpeningSource,
+ sendUserType
+}: TimelineListItemProps) => {
const [footerHeight, setFooterHeight] = useState(181);
const windowHeight = Dimensions.get("window").height;
const snapPoint = Math.min(
@@ -70,10 +80,11 @@ export const TimelineListItem = ({ history }: TimelineListItemProps) => {
}
onPress={() => {
if (sendExternalUrl) {
- trackPNTimelineExternal();
+ trackPNTimelineExternal(sendOpeningSource, sendUserType);
handleItemOnPress(sendExternalUrl)();
}
}}
+ testID="timeline_listitem_bottom_menu_alert"
/>
),
@@ -87,10 +98,11 @@ export const TimelineListItem = ({ history }: TimelineListItemProps) => {
icon="history"
label={I18n.t("features.pn.details.timeline.menuTitle")}
onPress={() => {
- trackPNShowTimeline();
+ trackPNShowTimeline(sendOpeningSource, sendUserType);
present();
}}
variant="primary"
+ testID="timeline_listitem_bottom_menu"
/>
{bottomSheet}
>
diff --git a/ts/features/pn/components/__mocks__/F24ListBottomSheetLink.tsx b/ts/features/pn/components/__mocks__/F24ListBottomSheetLink.tsx
new file mode 100644
index 00000000000..dc7bf3288ff
--- /dev/null
+++ b/ts/features/pn/components/__mocks__/F24ListBottomSheetLink.tsx
@@ -0,0 +1,19 @@
+import { View } from "react-native";
+import { F24ListBottomSheetLinkProps } from "../F24ListBottomSheetLink";
+
+export const F24ListBottomSheetLink = ({
+ f24List,
+ messageId,
+ serviceId,
+ sendOpeningSource,
+ sendUserType
+}: F24ListBottomSheetLinkProps) => (
+
+ {"Mock F24ListBottomSheetLink"}
+ {`Item count: ${f24List.length}`}
+ {`Message Id: ${messageId}`}
+ {`Service Id: ${serviceId}`}
+ {`Opening Source: ${sendOpeningSource}`}
+ {`User Type: ${sendUserType}`}
+
+);
diff --git a/ts/features/pn/components/__mocks__/F24Section.tsx b/ts/features/pn/components/__mocks__/F24Section.tsx
new file mode 100644
index 00000000000..0d49188f3f2
--- /dev/null
+++ b/ts/features/pn/components/__mocks__/F24Section.tsx
@@ -0,0 +1,19 @@
+import { View } from "react-native";
+import { F24SectionProps } from "../F24Section";
+
+export const F24Section = ({
+ isCancelled,
+ messageId,
+ serviceId,
+ sendOpeningSource,
+ sendUserType
+}: F24SectionProps) => (
+
+ {`Mock F24Section`}
+ {`Message Id: ${messageId}`}
+ {`Service Id: ${serviceId}`}
+ {`Cancelled: ${isCancelled}`}
+ {`Opening Source: ${sendOpeningSource}`}
+ {`User Type: ${sendUserType}`}
+
+);
diff --git a/ts/features/pn/components/__mocks__/MessageBottomMenu.tsx b/ts/features/pn/components/__mocks__/MessageBottomMenu.tsx
index 027ee5b9f81..dcb4a85f0a1 100644
--- a/ts/features/pn/components/__mocks__/MessageBottomMenu.tsx
+++ b/ts/features/pn/components/__mocks__/MessageBottomMenu.tsx
@@ -7,7 +7,9 @@ export const MessageBottomMenu = ({
iun,
messageId,
paidNoticeCodes,
- payments
+ payments,
+ sendOpeningSource,
+ sendUserType
}: MessageBottomMenuProps) => (
<>
Mock MessageBottomMenu
@@ -39,5 +41,7 @@ export const MessageBottomMenu = ({
{payment.noticeCode}
))}
+ {`Opening Source: ${sendOpeningSource}`}
+ {`User Type: ${sendUserType}`}
>
);
diff --git a/ts/features/pn/components/__mocks__/MessageCancelledContent.tsx b/ts/features/pn/components/__mocks__/MessageCancelledContent.tsx
new file mode 100644
index 00000000000..d762449c8eb
--- /dev/null
+++ b/ts/features/pn/components/__mocks__/MessageCancelledContent.tsx
@@ -0,0 +1,17 @@
+import { View } from "react-native";
+import { MessageCancelledContentProps } from "../MessageCancelledContent";
+
+export const MessageCancelledContent = ({
+ isCancelled,
+ paidNoticeCodes,
+ payments
+}: MessageCancelledContentProps) => (
+
+ {`Mock MessageCancelledContent`}
+ {`Is cancelled: ${isCancelled}`}
+ {`Paid notice codes count: ${
+ paidNoticeCodes?.length ?? "undefined"
+ }`}
+ {`Payments count: ${payments?.length ?? "undefined"}`}
+
+);
diff --git a/ts/features/pn/components/__mocks__/MessageDetails.tsx b/ts/features/pn/components/__mocks__/MessageDetails.tsx
index 04a342980ad..926c34b29a8 100644
--- a/ts/features/pn/components/__mocks__/MessageDetails.tsx
+++ b/ts/features/pn/components/__mocks__/MessageDetails.tsx
@@ -5,7 +5,10 @@ export const MessageDetails = ({
message,
messageId,
serviceId,
- payments
+ payments,
+ isAARMessage,
+ sendOpeningSource,
+ sendUserType
}: MessageDetailsProps) => (
Mock MessageDetails
@@ -67,5 +70,8 @@ export const MessageDetails = ({
{payment.noticeCode}
))}
+ {`Is AAR: ${isAARMessage}`}
+ {`Opening Source: ${sendOpeningSource}`}
+ {`User Type: ${sendUserType}`}
);
diff --git a/ts/features/pn/components/__mocks__/MessageDetailsContent.tsx b/ts/features/pn/components/__mocks__/MessageDetailsContent.tsx
new file mode 100644
index 00000000000..c35328c4337
--- /dev/null
+++ b/ts/features/pn/components/__mocks__/MessageDetailsContent.tsx
@@ -0,0 +1,13 @@
+import { View } from "react-native";
+import { MessageDetailsContentProps } from "../MessageDetailsContent";
+
+export const MessageDetailsContent = ({
+ message
+}: MessageDetailsContentProps) => (
+
+ {`Mock MessageDetailsContent`}
+ ${`Abstract: ${message.abstract}`}
+ ${`IUN: ${message.iun}`}
+ ${`Sender Denomination: ${message.senderDenomination}`}
+
+);
diff --git a/ts/features/pn/components/__mocks__/MessageFooter.tsx b/ts/features/pn/components/__mocks__/MessageFooter.tsx
new file mode 100644
index 00000000000..03bd28bc704
--- /dev/null
+++ b/ts/features/pn/components/__mocks__/MessageFooter.tsx
@@ -0,0 +1,27 @@
+import { View } from "react-native";
+import { MessageFooterProps } from "../MessageFooter";
+
+export const MessageFooter = ({
+ isCancelled,
+ maxVisiblePaymentCount,
+ messageId,
+ onMeasure,
+ payments,
+ presentPaymentsBottomSheetRef,
+ sendOpeningSource,
+ sendUserType
+}: MessageFooterProps) => (
+
+ {`Mock MessageFooterProps`}
+ {`Is cancelled: ${isCancelled}`}
+ {`Max Payments: ${maxVisiblePaymentCount}`}
+ {`Message Id: ${messageId}`}
+ {`On measure: ${onMeasure}`}
+ {`Payment Count: ${payments?.length ?? "none"}`}
+ {`Bottom Sheet: ${
+ presentPaymentsBottomSheetRef ? "defined" : "undefined"
+ }`}
+ {`Open Source: ${sendOpeningSource}`}
+ {`User Type: ${sendUserType}`}
+
+);
diff --git a/ts/features/pn/components/__mocks__/MessagePaymentBottomSheet.tsx b/ts/features/pn/components/__mocks__/MessagePaymentBottomSheet.tsx
new file mode 100644
index 00000000000..8b02e55c52e
--- /dev/null
+++ b/ts/features/pn/components/__mocks__/MessagePaymentBottomSheet.tsx
@@ -0,0 +1,23 @@
+import { View } from "react-native";
+import { MessagePaymentBottomSheetProps } from "../MessagePaymentBottomSheet";
+
+export const MessagePaymentBottomSheet = ({
+ messageId,
+ payments,
+ presentPaymentsBottomSheetRef,
+ serviceId,
+ sendOpeningSource,
+ sendUserType
+}: MessagePaymentBottomSheetProps) => (
+
+ {`Mock MessagePaymentBottomSheet`}
+ {`Message Id: ${messageId}`}
+ {`Payment Count: ${payments.length}`}
+ {`Bottom Sheet Ref: ${
+ presentPaymentsBottomSheetRef ? "defined" : "undefined"
+ }`}
+ {`Service Id: ${serviceId}`}
+ {`Opening Source: ${sendOpeningSource}`}
+ {`User Type: ${sendUserType}`}
+
+);
diff --git a/ts/features/pn/components/__mocks__/MessagePayments.tsx b/ts/features/pn/components/__mocks__/MessagePayments.tsx
new file mode 100644
index 00000000000..fd26cf01e0b
--- /dev/null
+++ b/ts/features/pn/components/__mocks__/MessagePayments.tsx
@@ -0,0 +1,31 @@
+import { View } from "react-native";
+import { MessagePaymentsProps } from "../MessagePayments";
+
+export const MessagePayments = ({
+ completedPaymentNoticeCodes,
+ isCancelled,
+ maxVisiblePaymentCount,
+ messageId,
+ payments,
+ presentPaymentsBottomSheetRef,
+ serviceId,
+ sendOpeningSource,
+ sendUserType
+}: MessagePaymentsProps) => (
+
+ {`Mock MessagePayments`}
+ {`Completed payments: ${
+ completedPaymentNoticeCodes?.length ?? "none"
+ }`}
+ {`Cancelled: ${isCancelled}`}
+ {`Max Payment Count: ${maxVisiblePaymentCount}`}
+ {`Message Id: ${messageId}`}
+ {`Payments: ${payments?.length ?? "none"}`}
+ {`Bottom Sheet ref: ${
+ presentPaymentsBottomSheetRef ? "defined" : "undefined"
+ }`}
+ {`Service Id: ${serviceId}`}
+ {`Opening Source: ${sendOpeningSource}`}
+ {`User Type: ${sendUserType}`}
+
+);
diff --git a/ts/features/pn/components/__mocks__/TimelineListItem.tsx b/ts/features/pn/components/__mocks__/TimelineListItem.tsx
index ce318cc6ae2..d31e9fe0545 100644
--- a/ts/features/pn/components/__mocks__/TimelineListItem.tsx
+++ b/ts/features/pn/components/__mocks__/TimelineListItem.tsx
@@ -1,7 +1,11 @@
import { View } from "react-native";
import { TimelineListItemProps } from "../TimelineListItem";
-export const TimelineListItem = ({ history }: TimelineListItemProps) => (
+export const TimelineListItem = ({
+ history,
+ sendOpeningSource,
+ sendUserType
+}: TimelineListItemProps) => (
<>
{history.map((pieceOfHistory, index) => (
@@ -17,5 +21,7 @@ export const TimelineListItem = ({ history }: TimelineListItemProps) => (
{pieceOfHistory.status}
))}
+ {`Opening Source: ${sendOpeningSource}`}
+ {`User Type: ${sendUserType}`}
>
);
diff --git a/ts/features/pn/components/__test__/F24ListBottomSheetLink.test.tsx b/ts/features/pn/components/__test__/F24ListBottomSheetLink.test.tsx
index 6f7e1197bbc..1c2bde7f8ea 100644
--- a/ts/features/pn/components/__test__/F24ListBottomSheetLink.test.tsx
+++ b/ts/features/pn/components/__test__/F24ListBottomSheetLink.test.tsx
@@ -1,10 +1,18 @@
import { createStore } from "redux";
+import { fireEvent } from "@testing-library/react-native";
import { applicationChangeState } from "../../../../store/actions/application";
import { appReducer } from "../../../../store/reducers";
import { renderScreenWithNavigationStoreContext } from "../../../../utils/testWrapper";
import { F24ListBottomSheetLink } from "../F24ListBottomSheetLink";
import { ThirdPartyAttachment } from "../../../../../definitions/backend/ThirdPartyAttachment";
import { ServiceId } from "../../../../../definitions/backend/ServiceId";
+import PN_ROUTES from "../../navigation/routes";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../../pushNotifications/analytics";
+import * as ANALYTICS from "../../analytics";
+import * as IO_BOTTOM_SHEET from "../../../../utils/hooks/bottomSheet";
const numberToThirdPartyAttachment = (index: number) =>
({
@@ -12,25 +20,84 @@ const numberToThirdPartyAttachment = (index: number) =>
url: `https://domain.url/doc${index}.pdf`
} as ThirdPartyAttachment);
+const f24Lists: ReadonlyArray> = [
+ [],
+ [{ ...numberToThirdPartyAttachment(1) }],
+ [
+ { ...numberToThirdPartyAttachment(1) },
+ { ...numberToThirdPartyAttachment(2) }
+ ]
+];
+const sendOpeningSources: ReadonlyArray = [
+ "aar",
+ "message",
+ "not_set"
+];
+const sendUserTypes: ReadonlyArray = [
+ "mandatory",
+ "not_set",
+ "recipient"
+];
+
describe("F24ListBottomSheetLink", () => {
- it("should be snapshot for an 0 items F24 list", () => {
- const zeroF24List = [] as ReadonlyArray;
- const component = renderComponent(zeroF24List);
- expect(component.toJSON()).toMatchSnapshot();
- });
- it("should be snapshot for an 1 item F24 list", () => {
- const oneF24List = [...Array(1).keys()].map(numberToThirdPartyAttachment);
- const component = renderComponent(oneF24List);
- expect(component.toJSON()).toMatchSnapshot();
- });
- it("should be snapshot for a 10 items F24 list", () => {
- const oneF24List = [...Array(10).keys()].map(numberToThirdPartyAttachment);
- const component = renderComponent(oneF24List);
- expect(component.toJSON()).toMatchSnapshot();
+ afterEach(() => {
+ jest.resetAllMocks();
+ jest.restoreAllMocks();
});
+ f24Lists.forEach(f24List =>
+ sendOpeningSources.forEach(sendOpeningSource =>
+ sendUserTypes.forEach(sendUserType => {
+ it(`should match snapshot (${f24List.length} items, opening source ${sendOpeningSource}, user type ${sendUserType})`, () => {
+ const component = renderComponent(
+ f24List,
+ sendOpeningSource,
+ sendUserType
+ );
+ expect(component.toJSON()).toMatchSnapshot();
+ });
+ })
+ )
+ );
+ sendOpeningSources.forEach(sendOpeningSource =>
+ sendUserTypes.forEach(sendUserType => {
+ it(`should call trackPNShowF24 with proper parameters (opening source ${sendOpeningSource}, user type ${sendUserType})`, () => {
+ const spiedOnMockedTrackPNShowF24 = jest
+ .spyOn(ANALYTICS, "trackPNShowF24")
+ .mockImplementation();
+ const refUseIOBottomSheetModal = IO_BOTTOM_SHEET.useIOBottomSheetModal;
+ jest
+ .spyOn(IO_BOTTOM_SHEET, "useIOBottomSheetModal")
+ .mockImplementation(props => {
+ const { bottomSheet } = refUseIOBottomSheetModal(props);
+ return {
+ bottomSheet,
+ dismiss: jest.fn(),
+ present: jest.fn()
+ };
+ });
+ const component = renderComponent([], sendOpeningSource, sendUserType);
+
+ const button = component.getByTestId(
+ "f24_list_bottomsheet_link_button"
+ );
+ fireEvent.press(button);
+
+ expect(spiedOnMockedTrackPNShowF24.mock.calls.length).toBe(1);
+ expect(spiedOnMockedTrackPNShowF24.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedTrackPNShowF24.mock.calls[0][0]).toBe(
+ sendOpeningSource
+ );
+ expect(spiedOnMockedTrackPNShowF24.mock.calls[0][1]).toBe(sendUserType);
+ });
+ })
+ );
});
-const renderComponent = (f24List: ReadonlyArray) => {
+const renderComponent = (
+ f24List: ReadonlyArray,
+ openingSource: SendOpeningSource,
+ userType: SendUserType
+) => {
const initialState = appReducer(undefined, applicationChangeState("active"));
const store = createStore(appReducer, initialState as any);
@@ -40,9 +107,11 @@ const renderComponent = (f24List: ReadonlyArray) => {
f24List={f24List}
messageId={"01HS94671EXDWDESDJB3NCBYPM"}
serviceId={"01JKAGWVQRFE1P8QAHZS743M90" as ServiceId}
+ sendOpeningSource={openingSource}
+ sendUserType={userType}
/>
),
- "DUMMY",
+ PN_ROUTES.MESSAGE_DETAILS,
{},
store
);
diff --git a/ts/features/pn/components/__test__/F24Section.test.tsx b/ts/features/pn/components/__test__/F24Section.test.tsx
index 82a7f597dfa..19c42fe6cd5 100644
--- a/ts/features/pn/components/__test__/F24Section.test.tsx
+++ b/ts/features/pn/components/__test__/F24Section.test.tsx
@@ -7,109 +7,128 @@ import { ServiceId } from "../../../../../definitions/backend/ServiceId";
import * as thirdPartyById from "../../../messages/store/reducers/thirdPartyById";
import { ThirdPartyAttachment } from "../../../../../definitions/backend/ThirdPartyAttachment";
import { ATTACHMENT_CATEGORY } from "../../../messages/types/attachmentCategory";
-import { mockAccessibilityInfo } from "../../../../utils/testAccessibility";
+import PN_ROUTES from "../../navigation/routes";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../../pushNotifications/analytics";
-const generateOneAttachmentArray = () => [
- {
- id: "1",
- url: "https://no.url/doc.pdf"
- } as ThirdPartyAttachment
+jest.mock(
+ "../../../messages/components/MessageDetail/MessageDetailsAttachmentItem"
+);
+jest.mock("../F24ListBottomSheetLink");
+
+const thirdPartyAttachmentLists: ReadonlyArray<
+ ReadonlyArray
+> = [
+ [],
+ [
+ {
+ id: "1",
+ url: "https://no.url/doc.pdf"
+ } as ThirdPartyAttachment
+ ],
+ [
+ {
+ id: "1",
+ url: "https://no.url/docF24.pdf",
+ category: ATTACHMENT_CATEGORY.F24
+ } as ThirdPartyAttachment
+ ],
+ [
+ {
+ id: "1",
+ url: "https://no.url/doc.pdf"
+ } as ThirdPartyAttachment,
+ {
+ id: "2",
+ url: "https://no.url/docF24.pdf",
+ category: ATTACHMENT_CATEGORY.F24
+ } as ThirdPartyAttachment
+ ],
+ [
+ {
+ id: "1",
+ url: "https://no.url/docF24_1.pdf",
+ category: ATTACHMENT_CATEGORY.F24
+ } as ThirdPartyAttachment,
+ {
+ id: "2",
+ url: "https://no.url/docF24_2.pdf",
+ category: ATTACHMENT_CATEGORY.F24
+ } as ThirdPartyAttachment
+ ],
+ [
+ {
+ id: "1",
+ url: "https://no.url/docF24_1.pdf",
+ category: ATTACHMENT_CATEGORY.F24
+ } as ThirdPartyAttachment,
+ {
+ id: "2",
+ url: "https://no.url/doc.pdf"
+ } as ThirdPartyAttachment,
+ {
+ id: "3",
+ url: "https://no.url/docF24_3.pdf",
+ category: ATTACHMENT_CATEGORY.F24
+ } as ThirdPartyAttachment
+ ]
];
-const generateThreeAttachmentArray = () => [
- {
- id: "1",
- url: "https://no.url/doc.pdf"
- } as ThirdPartyAttachment,
- {
- id: "2",
- url: "https://no.url/docF24.pdf",
- category: ATTACHMENT_CATEGORY.F24
- } as ThirdPartyAttachment,
- {
- id: "3",
- url: "https://no.url/cod.pdf"
- } as ThirdPartyAttachment
+
+const sendOpeningSources: ReadonlyArray = [
+ "aar",
+ "message",
+ "not_set"
];
-const generateFourAttachmentArray = () => [
- {
- id: "1",
- url: "https://no.url/doc.pdf"
- } as ThirdPartyAttachment,
- {
- id: "2",
- url: "https://no.url/docF24.pdf",
- category: ATTACHMENT_CATEGORY.F24
- } as ThirdPartyAttachment,
- {
- id: "3",
- url: "https://no.url/cod.pdf"
- } as ThirdPartyAttachment,
- {
- id: "4",
- url: "https://no.url/f24Doc.pdf",
- category: ATTACHMENT_CATEGORY.F24
- } as ThirdPartyAttachment
+const sendUserTypes: ReadonlyArray = [
+ "mandatory",
+ "not_set",
+ "recipient"
];
+// Vuoto, un documento, un f24, un f24+doc, due f24, duef24+doc
+
describe("F24Section", () => {
beforeEach(() => {
jest.resetAllMocks();
jest.restoreAllMocks();
- mockAccessibilityInfo(false);
- });
- it("should match snapshot when there are no F24", () => {
- jest
- .spyOn(thirdPartyById, "thirdPartyMessageAttachments")
- .mockImplementation((_state, _messageId) => generateOneAttachmentArray());
- const component = renderComponent();
- expect(component.toJSON()).toMatchSnapshot();
- });
- it("should match snapshot when there are no F24 and the message is cancelled", () => {
- jest
- .spyOn(thirdPartyById, "thirdPartyMessageAttachments")
- .mockImplementation((_state, _messageId) => generateOneAttachmentArray());
- const component = renderComponent(true);
- expect(component.toJSON()).toMatchSnapshot();
- });
- it("should match snapshot when there is a single F24", () => {
- jest
- .spyOn(thirdPartyById, "thirdPartyMessageAttachments")
- .mockImplementation((_state, _messageId) =>
- generateThreeAttachmentArray()
- );
- const component = renderComponent();
- expect(component.toJSON()).toMatchSnapshot();
- });
- it("should match snapshot when there is a single F24 and the message is cancelled", () => {
- jest
- .spyOn(thirdPartyById, "thirdPartyMessageAttachments")
- .mockImplementation((_state, _messageId) =>
- generateThreeAttachmentArray()
- );
- const component = renderComponent(true);
- expect(component.toJSON()).toMatchSnapshot();
- });
- it("should match snapshot when there are more than one F24", () => {
- jest
- .spyOn(thirdPartyById, "thirdPartyMessageAttachments")
- .mockImplementation((_state, _messageId) =>
- generateFourAttachmentArray()
- );
- const component = renderComponent();
- expect(component.toJSON()).toMatchSnapshot();
- });
- it("should match snapshot when there are more than one F24 and the message is cancelled", () => {
- jest
- .spyOn(thirdPartyById, "thirdPartyMessageAttachments")
- .mockImplementation((_state, _messageId) =>
- generateFourAttachmentArray()
- );
- const component = renderComponent(true);
- expect(component.toJSON()).toMatchSnapshot();
});
+ thirdPartyAttachmentLists.forEach(thirdPartyAttachmentList =>
+ [undefined, false, true].forEach(isCancelled =>
+ sendOpeningSources.forEach(sendOpeningSource =>
+ sendUserTypes.forEach(sendUserType => {
+ it(`should match snapshot (list: [${thirdPartyAttachmentList
+ .map(
+ thirdPartyAttachment =>
+ thirdPartyAttachment.category ?? "undefined"
+ )
+ .join(
+ " "
+ )}], cancelled ${isCancelled}, opening source ${sendOpeningSource}, user type ${sendUserType})`, () => {
+ jest
+ .spyOn(thirdPartyById, "thirdPartyMessageAttachments")
+ .mockImplementation(
+ (_state, _messageId) => thirdPartyAttachmentList
+ );
+ const component = renderComponent(
+ isCancelled,
+ sendOpeningSource,
+ sendUserType
+ );
+ expect(component.toJSON()).toMatchSnapshot();
+ });
+ })
+ )
+ )
+ );
});
-const renderComponent = (isCancelled: boolean = false) => {
+const renderComponent = (
+ isCancelled: boolean | undefined,
+ openingSource: SendOpeningSource,
+ userType: SendUserType
+) => {
const initialState = appReducer(undefined, applicationChangeState("active"));
const store = createStore(appReducer, initialState as any);
@@ -119,9 +138,11 @@ const renderComponent = (isCancelled: boolean = false) => {
messageId={"01HS1ANR1SDPN3BP51X3G74T64"}
serviceId={"01HS1ANWT4N83QGATCXYMXDP8M" as ServiceId}
isCancelled={isCancelled}
+ sendOpeningSource={openingSource}
+ sendUserType={userType}
/>
),
- "DUMMY",
+ PN_ROUTES.MESSAGE_DETAILS,
{},
store
);
diff --git a/ts/features/pn/components/__test__/MessageBottomMenu.test.tsx b/ts/features/pn/components/__test__/MessageBottomMenu.test.tsx
index b9adc6a9c51..55c6ec4c632 100644
--- a/ts/features/pn/components/__test__/MessageBottomMenu.test.tsx
+++ b/ts/features/pn/components/__test__/MessageBottomMenu.test.tsx
@@ -795,6 +795,8 @@ const renderComponent = (
messageId={"01HVPB9XYZMWNEPTDKZJ8ZJV28"}
paidNoticeCodes={paidNoticeCodes}
payments={payments}
+ sendOpeningSource={"not_set"}
+ sendUserType={"not_set"}
/>
),
PN_ROUTES.MESSAGE_DETAILS,
diff --git a/ts/features/pn/components/__test__/MessageDetails.test.tsx b/ts/features/pn/components/__test__/MessageDetails.test.tsx
index 756ae3d1da4..f49e48a2a80 100644
--- a/ts/features/pn/components/__test__/MessageDetails.test.tsx
+++ b/ts/features/pn/components/__test__/MessageDetails.test.tsx
@@ -1,116 +1,149 @@
import * as O from "fp-ts/lib/Option";
import { pipe } from "fp-ts/lib/function";
-import I18n from "i18next";
import { ComponentProps } from "react";
import configureMockStore from "redux-mock-store";
import { applicationChangeState } from "../../../../store/actions/application";
import { appReducer } from "../../../../store/reducers";
import { GlobalState } from "../../../../store/reducers/types";
import { renderScreenWithNavigationStoreContext } from "../../../../utils/testWrapper";
-import { serviceId_1 } from "../../../messages/__mocks__/messages";
import * as MSG_DETAILS_HEADER from "../../../messages/components/MessageDetail/MessageDetailsHeader";
import { thirdPartyMessage } from "../../__mocks__/pnMessage";
import { toPNMessage } from "../../store/types/transformers";
import { PNMessage } from "../../store/types/types";
import { MessageDetails } from "../MessageDetails";
+import PN_ROUTES from "../../navigation/routes";
+import { ServiceId } from "../../../../../definitions/services/ServiceId";
+import { NotificationPaymentInfo } from "../../../../../definitions/pn/NotificationPaymentInfo";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../../pushNotifications/analytics";
+jest.mock("../MessageCancelledContent");
+jest.mock("../MessageDetailsContent");
jest.mock(
"../../../messages/components/MessageDetail/MessageDetailsAttachments"
);
+jest.mock("../MessagePayments");
+jest.mock("../F24Section");
jest.mock("../MessageBottomMenu");
+jest.mock("../MessageFooter");
+jest.mock("../MessagePaymentBottomSheet");
-const pnMessage = pipe(thirdPartyMessage, toPNMessage, O.toUndefined)!;
+const mockMessageId = "messageId1";
+const mockServiceId = "serviceId" as ServiceId;
-describe("MessageDetails component", () => {
- it("should match the snapshot with default props", () => {
- const { component } = renderComponent(
- generateComponentProperties(pnMessage)
- );
- expect(component).toMatchSnapshot();
- });
+const sendOpeningSources: ReadonlyArray = [
+ "aar",
+ "message",
+ "not_set"
+];
+const sendUserTypes: ReadonlyArray = [
+ "mandatory",
+ "not_set",
+ "recipient"
+];
- it("should display the legalMessage tag", () => {
- const { component } = renderComponent(
- generateComponentProperties(pnMessage)
- );
- expect(
- component.queryByText(I18n.t("features.pn.details.badge.legalValue"))
- ).not.toBeNull();
- });
-
- it("should display the attachment tag if there are attachments", () => {
- const { component } = renderComponent(
- generateComponentProperties(pnMessage)
- );
- expect(component.queryByTestId("attachment-tag")).not.toBeNull();
- });
-
- it("should NOT display the attachment tag if there are no attachments", () => {
- const { component } = renderComponent(
- generateComponentProperties({
- ...pnMessage,
- attachments: []
- })
- );
- expect(component.queryByTestId("attachment-tag")).toBeNull();
+describe("MessageDetails component", () => {
+ afterEach(() => {
+ jest.clearAllMocks();
+ jest.restoreAllMocks();
});
+ // eslint-disable-next-line sonarjs/cognitive-complexity
describe("isAARMessage logic", () => {
beforeEach(() => {
jest.clearAllMocks();
});
- [true, false].forEach(isAARMessage => {
- it(`should ${
- isAARMessage ? "" : "NOT"
- } display the message date when isAARMessage is ${isAARMessage}`, () => {
- const headerSpy = jest.spyOn(
- MSG_DETAILS_HEADER,
- "MessageDetailsHeader"
- );
- renderComponent({
- ...generateComponentProperties(pnMessage),
- isAARMessage
- });
- const mockCalls = headerSpy.mock.calls[0][0];
- expect(mockCalls).toBeDefined();
- const passedDate = mockCalls.createdAt;
+ [true, false].forEach(isAARMessage =>
+ sendOpeningSources.forEach(sendOpeningSource =>
+ sendUserTypes.forEach(sendUserType => {
+ it(`should ${
+ isAARMessage ? "" : "NOT"
+ } display the message date when isAARMessage is ${isAARMessage}, opening source ${sendOpeningSource}, user type ${sendUserType}`, () => {
+ const pnMessage = pipe(
+ thirdPartyMessage,
+ toPNMessage,
+ O.toUndefined
+ )!;
+ const headerSpy = jest.spyOn(
+ MSG_DETAILS_HEADER,
+ "MessageDetailsHeader"
+ );
+ const messageId = isAARMessage ? pnMessage.iun : mockMessageId;
+ const props = generateComponentProperties(
+ messageId,
+ pnMessage,
+ mockServiceId,
+ isAARMessage,
+ sendOpeningSource,
+ sendUserType
+ );
+ renderComponent(props);
+ const mockCalls = headerSpy.mock.calls[0][0];
+ expect(mockCalls).toBeDefined();
+ const passedDate = mockCalls.createdAt;
- if (isAARMessage) {
- expect(passedDate).toBeUndefined();
- } else {
- expect(passedDate).toEqual(pnMessage.created_at);
- }
- });
+ if (isAARMessage) {
+ expect(passedDate).toBeUndefined();
+ } else {
+ expect(passedDate).toEqual(pnMessage.created_at);
+ }
+ });
- it(`should ${
- isAARMessage ? "NOT " : ""
- }allow navigation to service details when isAARMessage is ${isAARMessage}`, () => {
- const headerSpy = jest.spyOn(
- MSG_DETAILS_HEADER,
- "MessageDetailsHeader"
- );
- renderComponent({
- ...generateComponentProperties(pnMessage),
- isAARMessage
- });
- const mockCalls = headerSpy.mock.calls[0][0];
- expect(mockCalls).toBeDefined();
- const canNavigateToServiceDetails =
- mockCalls.canNavigateToServiceDetails;
- if (isAARMessage) {
- expect(canNavigateToServiceDetails).toBe(false);
- } else {
- expect(canNavigateToServiceDetails).toBe(true);
- }
- });
- });
+ it(`should ${
+ isAARMessage ? "NOT " : ""
+ }allow navigation to service details when isAARMessage is ${isAARMessage}, opening source ${sendOpeningSource}, user type ${sendUserType}`, () => {
+ const pnMessage = pipe(
+ thirdPartyMessage,
+ toPNMessage,
+ O.toUndefined
+ )!;
+ const headerSpy = jest.spyOn(
+ MSG_DETAILS_HEADER,
+ "MessageDetailsHeader"
+ );
+ const messageId = isAARMessage ? pnMessage.iun : mockMessageId;
+ const props = generateComponentProperties(
+ messageId,
+ pnMessage,
+ mockServiceId,
+ isAARMessage,
+ sendOpeningSource,
+ sendUserType
+ );
+ renderComponent(props);
+ const mockCalls = headerSpy.mock.calls[0][0];
+ expect(mockCalls).toBeDefined();
+ const canNavigateToServiceDetails =
+ mockCalls.canNavigateToServiceDetails;
+ if (isAARMessage) {
+ expect(canNavigateToServiceDetails).toBe(false);
+ } else {
+ expect(canNavigateToServiceDetails).toBe(true);
+ }
+ });
+ })
+ )
+ );
});
});
-const generateComponentProperties = (message: PNMessage) => ({
- messageId: "01HRYR6C761DGH3S84HBBXMMKT",
+const generateComponentProperties = (
+ messageId: string,
+ message: PNMessage,
+ serviceId: ServiceId,
+ isAARMessage: boolean,
+ sendOpeningSource: SendOpeningSource,
+ sendUserType: SendUserType,
+ payments?: ReadonlyArray
+): ComponentProps => ({
+ messageId,
message,
- payments: undefined,
- serviceId: serviceId_1
+ payments,
+ serviceId,
+ isAARMessage,
+ sendOpeningSource,
+ sendUserType
});
const renderComponent = (props: ComponentProps) => {
@@ -121,7 +154,7 @@ const renderComponent = (props: ComponentProps) => {
return {
component: renderScreenWithNavigationStoreContext(
() => ,
- "DUMMY_ROUTE",
+ PN_ROUTES.MESSAGE_DETAILS,
{},
store
),
diff --git a/ts/features/pn/components/__test__/MessageFooter.test.tsx b/ts/features/pn/components/__test__/MessageFooter.test.tsx
index 289f4eadd53..931329d1a1e 100644
--- a/ts/features/pn/components/__test__/MessageFooter.test.tsx
+++ b/ts/features/pn/components/__test__/MessageFooter.test.tsx
@@ -5,7 +5,6 @@ import { renderScreenWithNavigationStoreContext } from "../../../../utils/testWr
import { MessageFooter } from "../MessageFooter";
import * as standardPayments from "../../../messages/store/reducers/payments";
import * as payments from "../../store/reducers/payments";
-import { ServiceId } from "../../../../../definitions/backend/ServiceId";
import { mockAccessibilityInfo } from "../../../../utils/testAccessibility";
describe("MessageFooter", () => {
@@ -62,12 +61,13 @@ const renderScreen = (
() => (
void 0}
+ sendOpeningSource={"aar"}
+ sendUserType={"recipient"}
/>
),
"DUMMY",
diff --git a/ts/features/pn/components/__test__/MessagePaymentBottomSheet.test.tsx b/ts/features/pn/components/__test__/MessagePaymentBottomSheet.test.tsx
index 8a9c980b94e..a6fdbca7435 100644
--- a/ts/features/pn/components/__test__/MessagePaymentBottomSheet.test.tsx
+++ b/ts/features/pn/components/__test__/MessagePaymentBottomSheet.test.tsx
@@ -103,6 +103,8 @@ const renderComponent = (
payments={payments}
presentPaymentsBottomSheetRef={mockPresentPaymentsBottomSheetRef}
serviceId={"01J5X3CYV736B41KSZS8DYR75Q" as ServiceId}
+ sendOpeningSource={"message"}
+ sendUserType={"recipient"}
/>
),
PN_ROUTES.MESSAGE_DETAILS,
diff --git a/ts/features/pn/components/__test__/MessagePayments.test.tsx b/ts/features/pn/components/__test__/MessagePayments.test.tsx
index 0c4f473d905..47a2237a83e 100644
--- a/ts/features/pn/components/__test__/MessagePayments.test.tsx
+++ b/ts/features/pn/components/__test__/MessagePayments.test.tsx
@@ -527,6 +527,8 @@ const renderComponent = (
payments={payments}
presentPaymentsBottomSheetRef={mockPresentPaymentsBottomSheetRef}
serviceId={"01J5X3DFDZJ9AJ6CW89WY8QS4N" as ServiceId}
+ sendOpeningSource={"message"}
+ sendUserType={"recipient"}
/>
),
PN_ROUTES.MESSAGE_DETAILS,
diff --git a/ts/features/pn/components/__test__/TimelineListItem.test.tsx b/ts/features/pn/components/__test__/TimelineListItem.test.tsx
index f27747c1645..49ffa5292fd 100644
--- a/ts/features/pn/components/__test__/TimelineListItem.test.tsx
+++ b/ts/features/pn/components/__test__/TimelineListItem.test.tsx
@@ -1,5 +1,6 @@
import * as O from "fp-ts/lib/Option";
import { createStore } from "redux";
+import { fireEvent, render } from "@testing-library/react-native";
import { appReducer } from "../../../../store/reducers";
import { applicationChangeState } from "../../../../store/actions/application";
import { renderScreenWithNavigationStoreContext } from "../../../../utils/testWrapper";
@@ -8,26 +9,151 @@ import PN_ROUTES from "../../navigation/routes";
import { NotificationStatusHistory } from "../../../../../definitions/pn/NotificationStatusHistory";
import { GlobalState } from "../../../../store/reducers/types";
import { BackendStatus } from "../../../../../definitions/content/BackendStatus";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../../pushNotifications/analytics";
+import * as ANALYTICS from "../../analytics";
+import * as BOTTOM_SHEET from "../../../../utils/hooks/bottomSheet";
+import * as URL_UTILS from "../../../../utils/url";
jest.mock("../Timeline");
+const mockFrontendUrl = "https://www.domain.com/sendUrl";
+
+const sendOpeningSources: ReadonlyArray = [
+ "aar",
+ "message",
+ "not_set"
+];
+const sendUserTypes: ReadonlyArray = [
+ "mandatory",
+ "not_set",
+ "recipient"
+];
+
describe("TimelineListItem", () => {
+ afterEach(() => {
+ jest.clearAllMocks();
+ jest.restoreAllMocks();
+ });
it("Should match snapshot, no history, no link", () => {
- const component = renderComponent([], false);
+ const component = renderComponent([], false, "not_set", "not_set");
expect(component.toJSON()).toMatchSnapshot();
});
it("Should match snapshot, no history, with link", () => {
- const component = renderComponent([]);
+ const component = renderComponent([], true, "not_set", "not_set");
expect(component.toJSON()).toMatchSnapshot();
});
it("Should match snapshot, all handled-status items history, no link", () => {
- const component = renderComponent(fullHistory(), false);
+ const component = renderComponent(
+ fullHistory(),
+ false,
+ "not_set",
+ "not_set"
+ );
expect(component.toJSON()).toMatchSnapshot();
});
it("Should match snapshot, all handled-status items history, with link", () => {
- const component = renderComponent(fullHistory(), true);
+ const component = renderComponent(
+ fullHistory(),
+ true,
+ "not_set",
+ "not_set"
+ );
expect(component.toJSON()).toMatchSnapshot();
});
+ sendOpeningSources.forEach(openingSource =>
+ sendUserTypes.forEach(userType => {
+ it(`Should call 'trackPNShowTimeline' upon press (source ${openingSource} user ${userType})`, () => {
+ const refUseIOBottomSheetModal = BOTTOM_SHEET.useIOBottomSheetModal;
+ jest
+ .spyOn(BOTTOM_SHEET, "useIOBottomSheetModal")
+ .mockImplementation(props => {
+ const { bottomSheet } = refUseIOBottomSheetModal(props);
+ return { present: jest.fn(), bottomSheet, dismiss: jest.fn() };
+ });
+
+ const spiedOnMockedTrackPNShowTimeline = jest
+ .spyOn(ANALYTICS, "trackPNShowTimeline")
+ .mockImplementation();
+
+ const component = renderComponent(
+ fullHistory(),
+ true,
+ openingSource,
+ userType
+ );
+
+ const pressable = component.getByTestId(
+ "timeline_listitem_bottom_menu"
+ );
+ fireEvent.press(pressable);
+
+ expect(spiedOnMockedTrackPNShowTimeline.mock.calls.length).toBe(1);
+ expect(spiedOnMockedTrackPNShowTimeline.mock.calls[0].length).toBe(2);
+ expect(spiedOnMockedTrackPNShowTimeline.mock.calls[0][0]).toBe(
+ openingSource
+ );
+ expect(spiedOnMockedTrackPNShowTimeline.mock.calls[0][1]).toBe(
+ userType
+ );
+ });
+ })
+ );
+ sendOpeningSources.forEach(openingSource =>
+ sendUserTypes.forEach(userType => {
+ it(`Should call 'trackPNTimelineExternal' when tapping the internal bottom sheet CTA (source ${openingSource} user ${userType})`, () => {
+ const refUseIOBottomSheetModal = BOTTOM_SHEET.useIOBottomSheetModal;
+ const spiedOnMockedUseIOBottomSheetModal = jest
+ .spyOn(BOTTOM_SHEET, "useIOBottomSheetModal")
+ .mockImplementation(props => {
+ const { bottomSheet } = refUseIOBottomSheetModal(props);
+ return { present: jest.fn(), bottomSheet, dismiss: jest.fn() };
+ });
+ const spiedOnMockedHandleItemOnPress = jest
+ .spyOn(URL_UTILS, "handleItemOnPress")
+ .mockImplementation(_input => () => undefined);
+
+ const spiedOnMockedTrackPNTimelineExternal = jest
+ .spyOn(ANALYTICS, "trackPNTimelineExternal")
+ .mockImplementation();
+
+ renderComponent(fullHistory(), true, openingSource, userType);
+
+ // Unfortunately, bottom sheet's footer is not rendered since we have a mock
+ // in the jest.setup file that replaces the main view with a modal (that does
+ // not have the footer property). In order to render the footer, we have to
+ // extract the original property and render it indipendently
+ const bottomSheetProps =
+ spiedOnMockedUseIOBottomSheetModal.mock.calls[0][0];
+ const bottomSheetFooter = bottomSheetProps.footer;
+ const renderedBottomSheetFooter = render(<>{bottomSheetFooter}>);
+
+ const pressable = renderedBottomSheetFooter.getByTestId(
+ "timeline_listitem_bottom_menu_alert"
+ );
+ fireEvent.press(pressable);
+
+ expect(spiedOnMockedTrackPNTimelineExternal.mock.calls.length).toBe(1);
+ expect(spiedOnMockedTrackPNTimelineExternal.mock.calls[0].length).toBe(
+ 2
+ );
+ expect(spiedOnMockedTrackPNTimelineExternal.mock.calls[0][0]).toBe(
+ openingSource
+ );
+ expect(spiedOnMockedTrackPNTimelineExternal.mock.calls[0][1]).toBe(
+ userType
+ );
+
+ expect(spiedOnMockedHandleItemOnPress.mock.calls.length).toBe(1);
+ expect(spiedOnMockedHandleItemOnPress.mock.calls[0].length).toBe(1);
+ expect(spiedOnMockedHandleItemOnPress.mock.calls[0][0]).toBe(
+ mockFrontendUrl
+ );
+ });
+ })
+ );
});
const fullHistory = (): NotificationStatusHistory => [
@@ -85,7 +211,9 @@ const fullHistory = (): NotificationStatusHistory => [
const renderComponent = (
history: NotificationStatusHistory,
- frontendUrlDefined: boolean = true
+ frontendUrlDefined: boolean,
+ sendOpeningSource: SendOpeningSource,
+ sendUserType: SendUserType
) => {
const initialState = appReducer(undefined, applicationChangeState("active"));
const finalState: GlobalState = {
@@ -106,7 +234,7 @@ const renderComponent = (
enabled: false
},
pn: {
- frontend_url: "https://www.domain.com/sendUrl"
+ frontend_url: mockFrontendUrl
},
itw: {
enabled: true,
@@ -120,7 +248,13 @@ const renderComponent = (
};
const store = createStore(appReducer, finalState as any);
return renderScreenWithNavigationStoreContext(
- () => ,
+ () => (
+
+ ),
PN_ROUTES.MESSAGE_DETAILS,
{},
store
diff --git a/ts/features/pn/components/__test__/__snapshots__/F24ListBottomSheetLink.test.tsx.snap b/ts/features/pn/components/__test__/__snapshots__/F24ListBottomSheetLink.test.tsx.snap
index 19de329abd0..7bbfee08db7 100644
--- a/ts/features/pn/components/__test__/__snapshots__/F24ListBottomSheetLink.test.tsx.snap
+++ b/ts/features/pn/components/__test__/__snapshots__/F24ListBottomSheetLink.test.tsx.snap
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`F24ListBottomSheetLink should be snapshot for a 10 items F24 list 1`] = `
+exports[`F24ListBottomSheetLink should match snapshot (0 items, opening source aar, user type mandatory) 1`] = `
- DUMMY
+ PN_ROUTES_MESSAGE_DETAILS
-
-
-
-
-
- 0
-
-
-
- PDF
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (0 items, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (0 items, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (0 items, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (0 items, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (0 items, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (0 items, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (0 items, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (0 items, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (1 items, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (1 items, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (1 items, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (1 items, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (1 items, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (1 items, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (1 items, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (1 items, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (1 items, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (2 items, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (2 items, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (2 items, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (2 items, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vedi modelli F24
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (2 items, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
- 3
-
-
-
- PDF
-
-
-
-
-
-
-
-
-
-
-
-
+
+ >
+ Vedi modelli F24
+
+
+
+
+
+
+
- 4
+ 1
- 5
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (2 items, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ Vedi modelli F24
+
+
+
+
+
+
+
- 6
+ 1
- 7
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24ListBottomSheetLink should match snapshot (2 items, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ Vedi modelli F24
+
+
+
+
+
+
+
- 8
+ 1
- 9
+ 2
`;
-exports[`F24ListBottomSheetLink should be snapshot for an 0 items F24 list 1`] = `
+exports[`F24ListBottomSheetLink should match snapshot (2 items, opening source not_set, user type not_set) 1`] = `
- DUMMY
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+ Vedi modelli F24
+
+
+
+
+
-
-
+
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
- Vedi modelli F24
-
-
-
-
-
-
-
+ ]
+ }
+ >
+
+
+
+ 2
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
`;
-exports[`F24ListBottomSheetLink should be snapshot for an 1 item F24 list 1`] = `
+exports[`F24ListBottomSheetLink should match snapshot (2 items, opening source not_set, user type recipient) 1`] = `
- DUMMY
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+ 1
+
+
+
+ PDF
+
+
+
+
+
+
+
+
+
+
+
+
+
- 0
+ 2
- DUMMY
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled false, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled false, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled false, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled false, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled false, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled false, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled false, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled false, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled true, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled true, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled true, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled true, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled true, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled true, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled true, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled true, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled true, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled undefined, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled undefined, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled undefined, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled undefined, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled undefined, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled undefined, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled undefined, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled undefined, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [], cancelled undefined, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled false, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: aar
+
+
+ User Type: mandatory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled false, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: aar
+
+
+ User Type: not_set
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled false, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: aar
+
+
+ User Type: recipient
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled false, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: message
+
+
+ User Type: mandatory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled false, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: message
+
+
+ User Type: not_set
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled false, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: message
+
+
+ User Type: recipient
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled false, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: not_set
+
+
+ User Type: mandatory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled false, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled false, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: not_set
+
+
+ User Type: recipient
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled true, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled true, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled true, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled true, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled true, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled true, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled true, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled true, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled true, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled undefined, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: aar
+
+
+ User Type: mandatory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled undefined, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: aar
+
+
+ User Type: not_set
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled undefined, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: aar
+
+
+ User Type: recipient
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled undefined, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: message
+
+
+ User Type: mandatory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled undefined, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: message
+
+
+ User Type: not_set
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled undefined, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: message
+
+
+ User Type: recipient
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled undefined, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: not_set
+
+
+ User Type: mandatory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled undefined, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 F24], cancelled undefined, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: not_set
+
+
+ User Type: recipient
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled false, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: aar
+
+
+ User Type: mandatory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled false, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: aar
+
+
+ User Type: not_set
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled false, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: aar
+
+
+ User Type: recipient
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled false, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: message
+
+
+ User Type: mandatory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled false, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: message
+
+
+ User Type: not_set
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled false, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: message
+
+
+ User Type: recipient
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled false, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: not_set
+
+
+ User Type: mandatory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled false, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled false, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: not_set
+
+
+ User Type: recipient
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled true, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled true, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled true, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled true, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled true, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled true, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled true, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled true, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled true, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled undefined, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: aar
+
+
+ User Type: mandatory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled undefined, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: aar
+
+
+ User Type: not_set
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled undefined, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: aar
+
+
+ User Type: recipient
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled undefined, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: message
+
+
+ User Type: mandatory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled undefined, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: message
+
+
+ User Type: not_set
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled undefined, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: message
+
+
+ User Type: recipient
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled undefined, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: not_set
+
+
+ User Type: mandatory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled undefined, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24 undefined F24], cancelled undefined, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+
+ Mock F24ListBottomSheetLink
+
+
+ Item count: 2
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Opening Source: not_set
+
+
+ User Type: recipient
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled false, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled false, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled false, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled false, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled false, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled false, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled false, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled false, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled false, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled true, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled true, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled true, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled true, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled true, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled true, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled true, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled true, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled true, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled undefined, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled undefined, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled undefined, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled undefined, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled undefined, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled undefined, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled undefined, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled undefined, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [F24], cancelled undefined, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 1
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled false, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 2
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled false, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 2
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled false, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 2
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled false, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 2
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled false, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 2
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled false, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 2
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled false, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 2
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled false, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 2
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled false, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 2
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled true, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled true, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled true, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled true, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled true, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled true, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled true, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled true, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled true, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled undefined, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 2
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled undefined, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 2
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled undefined, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 2
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source aar
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled undefined, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 2
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled undefined, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 2
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled undefined, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 2
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source message
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled undefined, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 2
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type mandatory
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled undefined, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 2
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type not_set
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined F24], cancelled undefined, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+ Modelli F24
+
+
+
+
+
+
+ Se preferisci, puoi pagare questa notifica tramite F24.
+
+
+
+ Mock MessageDetailsAttachmentItem
+
+
+
+ Attachment category: F24
+
+
+ Attachment content-type: undefined
+
+
+ Attachment id: 2
+
+
+ Attachment name: undefined
+
+
+ Attachment url: https://no.url/docF24.pdf
+
+
+
+ Has no bottom spacer
+
+
+ Is not disabled
+
+
+ Send Opening Source not_set
+
+
+ Send User Type recipient
+
+
+ Message Id: 01HS1ANR1SDPN3BP51X3G74T64
+
+
+ Service Id: 01HS1ANWT4N83QGATCXYMXDP8M
+
+
+ Has no onPreNavigate callback
+
+
-
-
-
-
- Modelli F24
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled false, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled false, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled false, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled false, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled false, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled false, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled false, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled false, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled false, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled true, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled true, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled true, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled true, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled true, opening source message, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- Se preferisci, puoi pagare questa notifica tramite F24.
-
-
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled true, opening source message, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled true, opening source not_set, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled true, opening source not_set, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled true, opening source not_set, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled undefined, opening source aar, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
- Vedi modelli F24
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled undefined, opening source aar, user type not_set) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled undefined, opening source aar, user type recipient) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
- 2
-
-
-
- PDF
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4
-
-
-
- PDF
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`F24Section should match snapshot (list: [undefined], cancelled undefined, opening source message, user type mandatory) 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PN_ROUTES_MESSAGE_DETAILS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+ }
+ />
@@ -1079,7 +69138,7 @@ exports[`F24Section should match snapshot when there are more than one F24 1`] =
`;
-exports[`F24Section should match snapshot when there are more than one F24 and the message is cancelled 1`] = `
+exports[`F24Section should match snapshot (list: [undefined], cancelled undefined, opening source message, user type not_set) 1`] = `
- DUMMY
+ PN_ROUTES_MESSAGE_DETAILS
`;
-exports[`F24Section should match snapshot when there are no F24 1`] = `
+exports[`F24Section should match snapshot (list: [undefined], cancelled undefined, opening source message, user type recipient) 1`] = `
- DUMMY
+ PN_ROUTES_MESSAGE_DETAILS
`;
-exports[`F24Section should match snapshot when there are no F24 and the message is cancelled 1`] = `
+exports[`F24Section should match snapshot (list: [undefined], cancelled undefined, opening source not_set, user type mandatory) 1`] = `
- DUMMY
+ PN_ROUTES_MESSAGE_DETAILS
`;
-exports[`F24Section should match snapshot when there is a single F24 1`] = `
+exports[`F24Section should match snapshot (list: [undefined], cancelled undefined, opening source not_set, user type not_set) 1`] = `
- DUMMY
+ PN_ROUTES_MESSAGE_DETAILS
-
-
-
-
-
- Modelli F24
-
-
-
-
-
-
- Se preferisci, puoi pagare questa notifica tramite F24.
-
-
-
-
-
-
-
- 2
-
-
-
- PDF
-
-
-
-
-
-
-
-
-
-
-
-
-
+ />
@@ -2897,7 +70650,7 @@ exports[`F24Section should match snapshot when there is a single F24 1`] = `
`;
-exports[`F24Section should match snapshot when there is a single F24 and the message is cancelled 1`] = `
+exports[`F24Section should match snapshot (list: [undefined], cancelled undefined, opening source not_set, user type recipient) 1`] = `
- DUMMY
+ PN_ROUTES_MESSAGE_DETAILS
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -1052,6 +1058,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -1641,6 +1653,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -2202,6 +2220,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -2763,6 +2787,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -3324,6 +3354,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -3885,6 +3921,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -4446,6 +4488,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -5007,6 +5055,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -5568,6 +5622,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -6129,6 +6189,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -6718,6 +6784,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -7279,6 +7351,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -7975,6 +8053,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -8671,6 +8755,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -9367,6 +9457,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -10063,6 +10159,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -10759,6 +10861,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -11455,6 +11563,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -12016,6 +12130,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -12605,6 +12725,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -13166,6 +13292,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -13772,6 +13904,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -14378,6 +14516,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -14984,6 +15128,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -15590,6 +15740,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -16196,6 +16352,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -16802,6 +16964,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -17363,6 +17531,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -17952,6 +18126,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -18513,6 +18693,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -19074,6 +19260,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -19635,6 +19827,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -20196,6 +20394,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -20757,6 +20961,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -21318,6 +21528,12 @@ exports[`MessageBottomMenu should match snapshot, all handled-status items histo
PAID
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -21769,6 +21985,12 @@ exports[`MessageBottomMenu should match snapshot, no history, empty payments, ca
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -22220,6 +22442,12 @@ exports[`MessageBottomMenu should match snapshot, no history, empty payments, ca
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -22699,6 +22927,12 @@ exports[`MessageBottomMenu should match snapshot, no history, empty payments, ca
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -23150,6 +23384,12 @@ exports[`MessageBottomMenu should match snapshot, no history, empty payments, no
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -23601,6 +23841,12 @@ exports[`MessageBottomMenu should match snapshot, no history, empty payments, no
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -24052,6 +24298,12 @@ exports[`MessageBottomMenu should match snapshot, no history, empty payments, no
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -24503,6 +24755,12 @@ exports[`MessageBottomMenu should match snapshot, no history, empty payments, un
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -24954,6 +25212,12 @@ exports[`MessageBottomMenu should match snapshot, no history, empty payments, un
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -25405,6 +25669,12 @@ exports[`MessageBottomMenu should match snapshot, no history, empty payments, un
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -25856,6 +26126,12 @@ exports[`MessageBottomMenu should match snapshot, no history, multiple payments,
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -26307,6 +26583,12 @@ exports[`MessageBottomMenu should match snapshot, no history, multiple payments,
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -26786,6 +27068,12 @@ exports[`MessageBottomMenu should match snapshot, no history, multiple payments,
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -27237,6 +27525,12 @@ exports[`MessageBottomMenu should match snapshot, no history, multiple payments,
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -27823,6 +28117,12 @@ exports[`MessageBottomMenu should match snapshot, no history, multiple payments,
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -28409,6 +28709,12 @@ exports[`MessageBottomMenu should match snapshot, no history, multiple payments,
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -28995,6 +29301,12 @@ exports[`MessageBottomMenu should match snapshot, no history, multiple payments,
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -29581,6 +29893,12 @@ exports[`MessageBottomMenu should match snapshot, no history, multiple payments,
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -30167,6 +30485,12 @@ exports[`MessageBottomMenu should match snapshot, no history, multiple payments,
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -30753,6 +31077,12 @@ exports[`MessageBottomMenu should match snapshot, no history, one payment, cance
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -31204,6 +31534,12 @@ exports[`MessageBottomMenu should match snapshot, no history, one payment, cance
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -31683,6 +32019,12 @@ exports[`MessageBottomMenu should match snapshot, no history, one payment, cance
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -32134,6 +32476,12 @@ exports[`MessageBottomMenu should match snapshot, no history, one payment, not c
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -32630,6 +32978,12 @@ exports[`MessageBottomMenu should match snapshot, no history, one payment, not c
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -33126,6 +33480,12 @@ exports[`MessageBottomMenu should match snapshot, no history, one payment, not c
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -33622,6 +33982,12 @@ exports[`MessageBottomMenu should match snapshot, no history, one payment, undef
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -34118,6 +34484,12 @@ exports[`MessageBottomMenu should match snapshot, no history, one payment, undef
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -34614,6 +34986,12 @@ exports[`MessageBottomMenu should match snapshot, no history, one payment, undef
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -35110,6 +35488,12 @@ exports[`MessageBottomMenu should match snapshot, no history, undefined payments
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -35561,6 +35945,12 @@ exports[`MessageBottomMenu should match snapshot, no history, undefined payments
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -36040,6 +36430,12 @@ exports[`MessageBottomMenu should match snapshot, no history, undefined payments
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -36491,6 +36887,12 @@ exports[`MessageBottomMenu should match snapshot, no history, undefined payments
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -36942,6 +37344,12 @@ exports[`MessageBottomMenu should match snapshot, no history, undefined payments
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -37393,6 +37801,12 @@ exports[`MessageBottomMenu should match snapshot, no history, undefined payments
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -37844,6 +38258,12 @@ exports[`MessageBottomMenu should match snapshot, no history, undefined payments
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -38295,6 +38715,12 @@ exports[`MessageBottomMenu should match snapshot, no history, undefined payments
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
@@ -38746,6 +39172,12 @@ exports[`MessageBottomMenu should match snapshot, no history, undefined payments
]
}
>
+
+ Opening Source: not_set
+
+
+ User Type: not_set
+
Mock NeedHelp
diff --git a/ts/features/pn/components/__test__/__snapshots__/MessageDetails.test.tsx.snap b/ts/features/pn/components/__test__/__snapshots__/MessageDetails.test.tsx.snap
deleted file mode 100644
index 9be65af1f15..00000000000
--- a/ts/features/pn/components/__test__/__snapshots__/MessageDetails.test.tsx.snap
+++ /dev/null
@@ -1,770 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`MessageDetails component should match the snapshot with default props 1`] = `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- DUMMY_ROUTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Valore legale
-
-
-
-
-
-
-
-
-
-
- ######## subject ########
-
-
- 01 gen 2020, 00:00
-
-
-
-
-
- Hai
-
- ricevuto una notifica SEND: è una comunicazione a valore legale inviata da
-
- Sender denomination
-
-
- . Consulta i documenti allegati per scoprire tutti i dettagli.
-
-Se è previsto un pagamento, puoi farlo ora da IO con il tuo metodo preferito.
-
-
-
- Mock MessageDetailsAttachments
-
-
- Has Banner
-
-
- Is not disabled
-
-
- Is SEND
-
-
- Message Id: 01HRYR6C761DGH3S84HBBXMMKT
-
-
- Service Id: service_one
-
-
-
-
-
-
- Mock MessageBottomMenu
-
-
- 731143-7-0317-8200-0
-
-
- 01HRYR6C761DGH3S84HBBXMMKT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`;
diff --git a/ts/features/pn/components/__test__/__snapshots__/TimelineListItem.test.tsx.snap b/ts/features/pn/components/__test__/__snapshots__/TimelineListItem.test.tsx.snap
index dc1d0697d07..de2f3e6b885 100644
--- a/ts/features/pn/components/__test__/__snapshots__/TimelineListItem.test.tsx.snap
+++ b/ts/features/pn/components/__test__/__snapshots__/TimelineListItem.test.tsx.snap
@@ -399,6 +399,7 @@ exports[`TimelineListItem Should match snapshot, all handled-status items histor
onResponderTerminationRequest={[Function]}
onStartShouldSetResponder={[Function]}
onTouchEnd={[Function]}
+ testID="timeline_listitem_bottom_menu"
>
void) | undefined>
+ aarBottomSheetRef: RefObject<(() => void) | undefined>,
+ userType: SendUserType
) => {
const { setOptions, goBack } = useIONavigation();
const startSupportRequest = useOfflineToastGuard(useStartSupportRequest({}));
@@ -64,6 +73,7 @@ const useCorrectHeader = (
firstAction: {
icon: "closeLarge",
onPress: () => {
+ trackSendAarNotificationClosure(userType);
aarBottomSheetRef.current?.();
},
accessibilityLabel: I18n.t("global.buttons.close"),
@@ -78,7 +88,8 @@ const useCorrectHeader = (
onPress: startSupportRequest,
accessibilityLabel: I18n.t(
"global.accessibility.contextualHelp.open.label"
- )
+ ),
+ testID: "support_close_button"
},
goBack,
backAccessibilityLabel: I18n.t("global.buttons.back")
@@ -99,25 +110,22 @@ export const MessageDetailsScreen = () => {
// Be aware that when this screen displays an AAR message, messageId and IUN have
// the same value. When displaying SEND's notifications via IO Messages, messageId
// and IUN have differente values
- const { messageId, serviceId, firstTimeOpening, isAarMessage } = route.params;
+ const {
+ messageId,
+ serviceId,
+ firstTimeOpening,
+ isAarMessage = false
+ } = route.params;
const aarBottomSheetRef = useRef<() => void>(undefined);
- useCorrectHeader(!!isAarMessage, aarBottomSheetRef);
-
- const androidBackButtonCallback = useCallback(() => {
- if (isAarMessage) {
- aarBottomSheetRef.current?.();
- return true;
- }
- return false;
- }, [isAarMessage]);
-
- useHardwareBackButton(androidBackButtonCallback);
-
const currentFiscalCode = useIOSelector(profileFiscalCodeSelector);
const sendMessagePot = useIOSelector(state =>
pnMessageFromIdSelector(state, messageId)
);
+ const isAARDelegate = useIOSelector(state =>
+ isAarMessageDelegatedSelector(state, messageId)
+ );
+
const sendMessageOrUndefined = O.getOrElseW(() => undefined)(
pot.getOrElse(sendMessagePot, O.none)
);
@@ -129,10 +137,29 @@ export const MessageDetailsScreen = () => {
);
const paymentsCount = payments?.length ?? 0;
+ const sendOpeningSource: SendOpeningSource = isAarMessage ? "aar" : "message";
+ const sendUserType: SendUserType = isAarMessage
+ ? isAARDelegate
+ ? "mandatory"
+ : "recipient"
+ : "not_set";
+ const androidBackButtonCallback = useCallback(() => {
+ if (isAarMessage) {
+ trackSendAarNotificationClosure(sendUserType);
+ aarBottomSheetRef.current?.();
+ return true;
+ }
+ return false;
+ }, [isAarMessage, sendUserType]);
+
+ useHardwareBackButton(androidBackButtonCallback);
+ useCorrectHeader(isAarMessage, aarBottomSheetRef, sendUserType);
+
useEffect(() => {
dispatch(
startPNPaymentStatusTracking({
- isAARNotification: !!isAarMessage,
+ openingSource: sendOpeningSource,
+ userType: sendUserType,
messageId
})
);
@@ -145,7 +172,9 @@ export const MessageDetailsScreen = () => {
paymentsCount,
firstTimeOpening,
isCancelled,
- containsF24
+ containsF24,
+ sendOpeningSource,
+ sendUserType
);
if (sendMessageOrUndefined == null && isAarMessage) {
@@ -166,11 +195,13 @@ export const MessageDetailsScreen = () => {
}, [
dispatch,
firstTimeOpening,
+ isAarMessage,
messageId,
- sendMessagePot,
paymentsCount,
- isAarMessage,
- sendMessageOrUndefined
+ sendMessageOrUndefined,
+ sendMessagePot,
+ sendOpeningSource,
+ sendUserType
]);
const store = useIOStore();
@@ -212,11 +243,13 @@ export const MessageDetailsScreen = () => {
serviceId={serviceId}
payments={payments}
isAARMessage={isAarMessage}
+ sendOpeningSource={sendOpeningSource}
+ sendUserType={sendUserType}
/>
{isAarMessage && (
)}
>
diff --git a/ts/features/pn/screens/__test__/MessageDetailsScreen.test.tsx b/ts/features/pn/screens/__test__/MessageDetailsScreen.test.tsx
index f2ecb192896..17a3c97e969 100644
--- a/ts/features/pn/screens/__test__/MessageDetailsScreen.test.tsx
+++ b/ts/features/pn/screens/__test__/MessageDetailsScreen.test.tsx
@@ -2,6 +2,7 @@ import * as pot from "@pagopa/ts-commons/lib/pot";
import * as O from "fp-ts/lib/Option";
import { Action, Store } from "redux";
import configureMockStore from "redux-mock-store";
+import { fireEvent } from "@testing-library/react-native";
import { applicationChangeState } from "../../../../store/actions/application";
import { appReducer } from "../../../../store/reducers";
import { GlobalState } from "../../../../store/reducers/types";
@@ -25,7 +26,13 @@ import { sendAarMockStateFactory } from "../../aar/utils/testUtils";
import PN_ROUTES from "../../navigation/routes";
import { startPNPaymentStatusTracking } from "../../store/actions";
import { MessageDetailsScreen } from "../MessageDetailsScreen";
-import * as analytics from "../../aar/analytics";
+import * as REDUCERS from "../../store/reducers";
+import { PNMessage } from "../../store/types/types";
+import * as AAR_SELECTORS from "../../aar/store/selectors";
+import { ATTACHMENT_CATEGORY } from "../../../messages/types/attachmentCategory";
+import * as AAR_ANALYTICS from "../../aar/analytics";
+import * as SEND_ANALYTICS from "../../analytics";
+import * as HARDWARE_BACK_BUTTON from "../../../../hooks/useHardwareBackButton";
const mockDispatch = jest.fn();
jest.mock("react-redux", () => ({
@@ -34,18 +41,21 @@ jest.mock("react-redux", () => ({
}));
jest.mock("../../components/MessageDetails");
+jest.mock("../../aar/components/SendAARMessageDetailBottomSheetComponent");
describe("MessageDetailsScreen", () => {
beforeEach(() => {
jest.clearAllMocks();
+ jest.restoreAllMocks();
});
+ // eslint-disable-next-line sonarjs/cognitive-complexity
[true, false].forEach(isAar => {
it(`should match the snapshot when there is an error${
isAar ? "and dispatch trackSendAARFailure" : ""
}`, () => {
const spiedOnMockedTrackSendAARFailure = jest
- .spyOn(analytics, "trackSendAARFailure")
+ .spyOn(AAR_ANALYTICS, "trackSendAARFailure")
.mockImplementation();
const sequenceOfActions: ReadonlyArray = [
applicationChangeState("active")
@@ -68,7 +78,7 @@ describe("MessageDetailsScreen", () => {
const mockStore = configureMockStore();
const store: Store = mockStore(state);
- const { component } = renderComponent(store, isAar);
+ const { component } = renderComponent(store, false, isAar);
expect(component).toMatchSnapshot();
if (isAar) {
@@ -87,7 +97,7 @@ describe("MessageDetailsScreen", () => {
it(`should match the snapshot when everything went fine -- aar:${isAar} and not dispatch trackSendAARFailure`, () => {
const spiedOnMockedTrackSendAARFailure = jest
- .spyOn(analytics, "trackSendAARFailure")
+ .spyOn(AAR_ANALYTICS, "trackSendAARFailure")
.mockImplementation();
jest
.spyOn(commonSelectors, "profileFiscalCodeSelector")
@@ -111,55 +121,313 @@ describe("MessageDetailsScreen", () => {
const mockStore = configureMockStore();
const store: Store = mockStore(state);
- const { component } = renderComponent(store, isAar);
+ const { component } = renderComponent(store, false, isAar);
expect(component).toMatchSnapshot();
expect(spiedOnMockedTrackSendAARFailure.mock.calls.length).toBe(0);
});
+
+ [false, true].forEach(firstTimeOpening =>
+ [0, 1].forEach(paymentCount =>
+ [false, true].forEach(isCancelled =>
+ [false, true].forEach(containsF24 => {
+ const fakeProfileFiscalCode = "XXXYYY99Z00A123B";
+ const sendMessage = {
+ notificationStatusHistory: [],
+ isCancelled,
+ recipients:
+ paymentCount > 0
+ ? [{ taxId: fakeProfileFiscalCode, payment: {} }]
+ : [],
+ attachments: containsF24
+ ? [
+ {
+ category: ATTACHMENT_CATEGORY.F24
+ }
+ ]
+ : []
+ } as unknown as PNMessage;
+ [
+ pot.none,
+ pot.noneLoading,
+ pot.noneUpdating(O.none),
+ pot.noneError(Error()),
+ pot.some(O.none),
+ pot.some(O.some(sendMessage)),
+ pot.someLoading(O.none),
+ pot.someLoading(O.some(sendMessage)),
+ pot.someUpdating(O.none, O.some(sendMessage)),
+ pot.someUpdating(O.some(sendMessage), O.none),
+ pot.someError(O.none, Error()),
+ pot.someError(O.some(sendMessage), Error())
+ ].forEach(messagePot =>
+ [false, true].forEach(isDelegate => {
+ const isSomePot = pot.isSome(messagePot);
+ const isSomeOption =
+ isSomePot && O.isSome(pot.getOrElse(messagePot, O.none));
+ const potOptionDescription = isSomePot
+ ? `pot ${messagePot.kind} option ${
+ isSomeOption ? "some" : "none"
+ }`
+ : `pot ${messagePot.kind}`;
+ it(`should ${
+ messagePot.kind === "PotSome" ? "" : "not "
+ }call 'trackPNUxSuccess' with proper parameters (${potOptionDescription} isAAR ${isAar} firstTimeOpening ${firstTimeOpening} paymentCount ${paymentCount} isCancelled ${isCancelled} containsF24 ${containsF24} isDelegate ${isDelegate})`, () => {
+ jest
+ .spyOn(commonSelectors, "profileFiscalCodeSelector")
+ .mockImplementation(_state => fakeProfileFiscalCode);
+ jest
+ .spyOn(REDUCERS, "pnMessageFromIdSelector")
+ .mockImplementation((_state, _id) => messagePot);
+ jest
+ .spyOn(AAR_SELECTORS, "isAarMessageDelegatedSelector")
+ .mockImplementation((_state, _messageId) => isDelegate);
+ const spiedOnMockedTrackPNExSuccess = jest
+ .spyOn(SEND_ANALYTICS, "trackPNUxSuccess")
+ .mockImplementation();
+
+ const globalState = appReducer(
+ undefined,
+ applicationChangeState("active")
+ );
+ const mockStore = configureMockStore();
+ const store: Store = mockStore(globalState);
+
+ renderComponent(store, firstTimeOpening, isAar);
+
+ if (messagePot.kind === "PotSome") {
+ expect(
+ spiedOnMockedTrackPNExSuccess.mock.calls.length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackPNExSuccess.mock.calls[0].length
+ ).toBe(6);
+ expect(spiedOnMockedTrackPNExSuccess.mock.calls[0][0]).toBe(
+ isSomeOption ? paymentCount : 0
+ );
+ expect(spiedOnMockedTrackPNExSuccess.mock.calls[0][1]).toBe(
+ firstTimeOpening
+ );
+ expect(spiedOnMockedTrackPNExSuccess.mock.calls[0][2]).toBe(
+ isSomeOption ? isCancelled : false
+ );
+ expect(spiedOnMockedTrackPNExSuccess.mock.calls[0][3]).toBe(
+ isSomeOption ? containsF24 : false
+ );
+ expect(spiedOnMockedTrackPNExSuccess.mock.calls[0][4]).toBe(
+ isAar ? "aar" : "message"
+ );
+ expect(spiedOnMockedTrackPNExSuccess.mock.calls[0][5]).toBe(
+ !isAar
+ ? "not_set"
+ : isDelegate
+ ? "mandatory"
+ : "recipient"
+ );
+ } else {
+ expect(
+ spiedOnMockedTrackPNExSuccess.mock.calls.length
+ ).toBe(0);
+ }
+ });
+ })
+ );
+ })
+ )
+ )
+ );
});
[false, true].forEach(isAARNotification => {
- it(`should dispatch startPNPaymentStatusTracking (isAARNotification ${isAARNotification})`, () => {
- const state = {
- entities: {
- messages: {
- thirdPartyById: {}
- }
- },
- features: {
- connectivityStatus: {},
- ingress: {},
- itWallet: {
- issuance: {
- integrityKeyTag: O.none
+ [false, true].forEach(isDelegate => {
+ it(`should dispatch startPNPaymentStatusTracking (isAARNotification ${isAARNotification} isDelegate ${isDelegate})`, () => {
+ const state = {
+ entities: {
+ messages: {
+ thirdPartyById: {}
}
},
- pn: {
- aarFlow: isAARNotification
- ? sendAarMockStateFactory.displayingNotificationData()
- : sendAarMockStateFactory.none()
- }
- },
- remoteConfig: O.none,
- profile: pot.none
- } as GlobalState;
- const mockStore = configureMockStore();
- const store: Store = mockStore(state);
+ features: {
+ connectivityStatus: {},
+ ingress: {},
+ itWallet: {
+ issuance: {
+ integrityKeyTag: O.none
+ }
+ },
+ pn: {
+ aarFlow: isAARNotification
+ ? sendAarMockStateFactory.displayingNotificationData()
+ : sendAarMockStateFactory.none()
+ }
+ },
+ remoteConfig: O.none,
+ profile: pot.none
+ } as GlobalState;
+ const mockStore = configureMockStore();
+ const store: Store = mockStore(state);
- renderComponent(store, isAARNotification);
+ jest
+ .spyOn(AAR_SELECTORS, "isAarMessageDelegatedSelector")
+ .mockImplementation((_state, _messageId) => isDelegate);
- expect(mockDispatch.mock.calls.length).toBe(1);
- expect(mockDispatch.mock.calls[0].length).toBe(1);
- expect(mockDispatch.mock.calls[0][0]).toEqual(
- startPNPaymentStatusTracking({
- isAARNotification,
- messageId: message_1.id
- })
- );
+ renderComponent(store, false, isAARNotification);
+
+ expect(mockDispatch.mock.calls.length).toBe(1);
+ expect(mockDispatch.mock.calls[0].length).toBe(1);
+ expect(mockDispatch.mock.calls[0][0]).toEqual(
+ startPNPaymentStatusTracking({
+ openingSource: isAARNotification ? "aar" : "message",
+ userType: isAARNotification
+ ? isDelegate
+ ? "mandatory"
+ : "recipient"
+ : "not_set",
+ messageId: message_1.id
+ })
+ );
+ });
});
});
+
+ [undefined, false, true].forEach(isAarMessage =>
+ [false, true].forEach(isDelegate =>
+ it(`should ${
+ isAarMessage ? "" : "not "
+ }call trackSendAarNotificationClosure with proper parameters upon pressing the android back button (is AAR message ${isAarMessage}, is delegate ${isDelegate})`, () => {
+ const baseState = appReducer(
+ undefined,
+ applicationChangeState("active")
+ );
+ const mockStore = configureMockStore();
+ const store: Store = mockStore(baseState);
+
+ const sendMessage = {
+ attachments: [],
+ created_at: new Date(),
+ iun: "A IUN",
+ notificationStatusHistory: [],
+ recipients: [],
+ subject: "A subject"
+ } as unknown as PNMessage;
+ const sendMessagePotOption = pot.some(O.some(sendMessage));
+
+ jest
+ .spyOn(commonSelectors, "profileFiscalCodeSelector")
+ .mockImplementation(_state => "XXXYYY99Z88W777I");
+ jest
+ .spyOn(REDUCERS, "pnMessageFromIdSelector")
+ .mockImplementation((_state, _id) => sendMessagePotOption);
+ jest
+ .spyOn(AAR_SELECTORS, "isAarMessageDelegatedSelector")
+ .mockImplementation((_state, _messageId) => isDelegate);
+ const spiedOnMockedTrackSendAARNotificationClosure = jest
+ .spyOn(AAR_ANALYTICS, "trackSendAarNotificationClosure")
+ .mockImplementation();
+ const spiedOnMockedUseHardwareBackButton = jest
+ .spyOn(HARDWARE_BACK_BUTTON, "useHardwareBackButton")
+ .mockImplementation();
+
+ renderComponent(store, false, !!isAarMessage);
+
+ expect(spiedOnMockedUseHardwareBackButton.mock.calls.length).toBe(1);
+ expect(spiedOnMockedUseHardwareBackButton.mock.calls[0].length).toBe(1);
+ expect(
+ spiedOnMockedUseHardwareBackButton.mock.calls[0][0]
+ ).toBeDefined();
+
+ const useHardwareBackButtonCallback =
+ spiedOnMockedUseHardwareBackButton.mock.calls[0][0];
+ expect(typeof useHardwareBackButtonCallback).toBe("function");
+ const result = useHardwareBackButtonCallback();
+
+ if (isAarMessage) {
+ expect(
+ spiedOnMockedTrackSendAARNotificationClosure.mock.calls.length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackSendAARNotificationClosure.mock.calls[0].length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackSendAARNotificationClosure.mock.calls[0][0]
+ ).toBe(isDelegate ? "mandatory" : "recipient");
+ expect(result).toBe(true);
+ } else {
+ expect(
+ spiedOnMockedTrackSendAARNotificationClosure.mock.calls.length
+ ).toBe(0);
+ expect(result).toBe(false);
+ }
+ })
+ )
+ );
+
+ [undefined, false, true].forEach(isAarMessage =>
+ [false, true].forEach(isDelegate =>
+ it(`should ${
+ isAarMessage ? "" : "not "
+ }call trackSendAarNotificationClosure with proper parameters upon pressing the header's close button (is AAR message ${isAarMessage}, is delegate ${isDelegate})`, () => {
+ const baseState = appReducer(
+ undefined,
+ applicationChangeState("active")
+ );
+ const mockStore = configureMockStore();
+ const store: Store = mockStore(baseState);
+
+ const sendMessage = {
+ attachments: [],
+ created_at: new Date(),
+ iun: "A IUN",
+ notificationStatusHistory: [],
+ recipients: [],
+ subject: "A subject"
+ } as unknown as PNMessage;
+ const sendMessagePotOption = pot.some(O.some(sendMessage));
+
+ jest
+ .spyOn(commonSelectors, "profileFiscalCodeSelector")
+ .mockImplementation(_state => "XXXYYY99Z88W777I");
+ jest
+ .spyOn(REDUCERS, "pnMessageFromIdSelector")
+ .mockImplementation((_state, _id) => sendMessagePotOption);
+ jest
+ .spyOn(AAR_SELECTORS, "isAarMessageDelegatedSelector")
+ .mockImplementation((_state, _messageId) => isDelegate);
+ const spiedOnMockedTrackSendAARNotificationClosure = jest
+ .spyOn(AAR_ANALYTICS, "trackSendAarNotificationClosure")
+ .mockImplementation();
+
+ const { component } = renderComponent(store, false, !!isAarMessage);
+
+ if (isAarMessage) {
+ const headerCloseButton = component.getByTestId("AAR_close_button");
+ fireEvent.press(headerCloseButton);
+
+ expect(
+ spiedOnMockedTrackSendAARNotificationClosure.mock.calls.length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackSendAARNotificationClosure.mock.calls[0].length
+ ).toBe(1);
+ expect(
+ spiedOnMockedTrackSendAARNotificationClosure.mock.calls[0][0]
+ ).toBe(isDelegate ? "mandatory" : "recipient");
+ } else {
+ component.getByTestId("support_close_button");
+
+ expect(
+ spiedOnMockedTrackSendAARNotificationClosure.mock.calls.length
+ ).toBe(0);
+ }
+ })
+ )
+ );
});
-const renderComponent = (store: Store, isAAr: boolean) => {
+const renderComponent = (
+ store: Store,
+ firstTimeOpening: boolean,
+ isAAr: boolean
+) => {
const { id, sender_service_id } = message_1;
return {
@@ -167,7 +435,7 @@ const renderComponent = (store: Store, isAAr: boolean) => {
MessageDetailsScreen,
PN_ROUTES.MESSAGE_DETAILS,
{
- firstTimeOpening: false,
+ firstTimeOpening,
messageId: id,
serviceId: sender_service_id,
isAarMessage: isAAr
diff --git a/ts/features/pn/screens/__test__/__snapshots__/MessageDetailsScreen.test.tsx.snap b/ts/features/pn/screens/__test__/__snapshots__/MessageDetailsScreen.test.tsx.snap
index 8608ed959b4..c0ed6336c33 100644
--- a/ts/features/pn/screens/__test__/__snapshots__/MessageDetailsScreen.test.tsx.snap
+++ b/ts/features/pn/screens/__test__/__snapshots__/MessageDetailsScreen.test.tsx.snap
@@ -156,7 +156,7 @@ exports[`MessageDetailsScreen should match the snapshot when everything went fin
service_one
+
+ Is AAR: false
+
+
+ Opening Source: message
+
+
+ User Type: not_set
+
+
+ Is AAR: true
+
+
+ Opening Source: aar
+
+
+ User Type: recipient
+
+
+
+
+ Mock SendAARMessageDetailBottomSheetComponent
+
+
+ Ref container: set to jest.fn() internally
+
+
+ User type: recipient
+
-
-
-
-
-
-
-
-
-
-
-
-
- Conserva il codice QR, ti servirà per rileggere la notifica in app
-
-
-
-
-
-
-
-
-
-
-
-
- Puoi inquadrarlo oppure caricare una sua foto su IO
-
-
-
-
-
-
-
-
-
-
-
-
- Tutte le tue notifiche sono disponibili sul sito di SEND - Notifiche Digitali
-
-
-
- Vai sul sito di SEND
-
-
-
-
-
-
-
-
-
- Torna alla notifica
-
-
-
-
-
-
-
-
-
-
- Chiudi la notifica
-
-
-
-
-
-
-
-
-
-
-
{
});
});
+ const sendOpeningSources: ReadonlyArray = [
+ "aar",
+ "message",
+ "not_set"
+ ];
+ const sendUserTypes: ReadonlyArray = [
+ "mandatory",
+ "not_set",
+ "recipient"
+ ];
+
describe("startPNPaymentStatusTracking", () => {
- [false, true].forEach(isAARNotification => {
- it(`should create a start tracking action with the provided messageId and isAARNotification: ${isAARNotification}`, () => {
- const messageId = "message-123";
+ sendOpeningSources.forEach(sendOpeningSource => {
+ sendUserTypes.forEach(sendUserType => {
+ it(`should create a start tracking action with the provided messageId (opening source: ${sendOpeningSource}, user type ${sendUserType})`, () => {
+ const messageId = "message-123";
- const action = startPNPaymentStatusTracking({
- isAARNotification,
- messageId
- });
+ const action = startPNPaymentStatusTracking({
+ openingSource: sendOpeningSource,
+ userType: sendUserType,
+ messageId
+ });
- expect(action).toEqual({
- type: "PN_START_TRACKING_PAYMENT_STATUS",
- payload: { isAARNotification, messageId }
+ expect(action).toEqual({
+ type: "PN_START_TRACKING_PAYMENT_STATUS",
+ payload: {
+ openingSource: sendOpeningSource,
+ userType: sendUserType,
+ messageId
+ }
+ });
});
});
});
diff --git a/ts/features/pn/store/actions/index.ts b/ts/features/pn/store/actions/index.ts
index 01bd5c8c477..c6d6fc7fc88 100644
--- a/ts/features/pn/store/actions/index.ts
+++ b/ts/features/pn/store/actions/index.ts
@@ -4,6 +4,10 @@ import {
createAsyncAction,
createStandardAction
} from "typesafe-actions";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../../pushNotifications/analytics";
type TogglePnActivationRequestPaylad = {
value: boolean;
@@ -12,7 +16,8 @@ type TogglePnActivationRequestPaylad = {
};
type PNPaymentStatusTracking = {
- isAARNotification: boolean;
+ openingSource: SendOpeningSource;
+ userType: SendUserType;
messageId: string;
};
diff --git a/ts/features/pn/store/sagas/__tests__/watchPaymentStatusSaga.test.ts b/ts/features/pn/store/sagas/__tests__/watchPaymentStatusSaga.test.ts
index 8b2623e494e..255f0bd4350 100644
--- a/ts/features/pn/store/sagas/__tests__/watchPaymentStatusSaga.test.ts
+++ b/ts/features/pn/store/sagas/__tests__/watchPaymentStatusSaga.test.ts
@@ -15,6 +15,10 @@ import { getRptIdStringFromPayment } from "../../../utils/rptId";
import { NotificationPaymentInfo } from "../../../../../../definitions/pn/NotificationPaymentInfo";
import { paymentStatisticsForMessageUncachedSelector } from "../../../../messages/store/reducers/payments";
import { trackPNPaymentStatus } from "../../../analytics";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../../../pushNotifications/analytics";
describe("watchPaymentStatusSaga", () => {
afterEach(() => {
@@ -92,123 +96,167 @@ describe("watchPaymentStatusSaga", () => {
]
};
+ const sendOpeningSources: ReadonlyArray = [
+ "aar",
+ "message",
+ "not_set"
+ ];
+ const sendUserTypes: ReadonlyArray = [
+ "mandatory",
+ "not_set",
+ "recipient"
+ ];
+
describe("watchPaymentStatusForMixpanelTracking", () => {
- [false, true].forEach(isAARNotification => {
- it(`should follow proper flow (isAARNotification: ${isAARNotification})`, () => {
- testSaga(
- watchPaymentStatusForMixpanelTracking,
- startPNPaymentStatusTracking({ isAARNotification, messageId })
- )
- .next()
- .select(profileFiscalCodeSelector)
- .next(taxId)
- .select(pnMessageFromIdSelector, messageId)
- .next(pnMessage)
- .call(
- paymentsFromPNMessagePot,
- isAARNotification ? undefined : taxId,
- pnMessage
+ sendOpeningSources.forEach(sendOpeningSource => {
+ sendUserTypes.forEach(sendUserType => {
+ it(`should follow proper flow (opening source: ${sendOpeningSource}, user type ${sendUserType})`, () => {
+ testSaga(
+ watchPaymentStatusForMixpanelTracking,
+ startPNPaymentStatusTracking({
+ openingSource: sendOpeningSource,
+ userType: sendUserType,
+ messageId
+ })
)
- .next(pnMessage.recipients.map(rec => rec.payment))
- .race({
- polling: call(
- testable!.generateSENDMessagePaymentStatistics,
- messageId,
- 6,
- pnMessage.recipients
- .slice(0, 5)
- .map(rec =>
- getRptIdStringFromPayment(
- rec.payment as NotificationPaymentInfo
+ .next()
+ .select(profileFiscalCodeSelector)
+ .next(taxId)
+ .select(pnMessageFromIdSelector, messageId)
+ .next(pnMessage)
+ .call(
+ paymentsFromPNMessagePot,
+ sendOpeningSource === "message" ? taxId : undefined,
+ pnMessage
+ )
+ .next(pnMessage.recipients.map(rec => rec.payment))
+ .race({
+ polling: call(
+ testable!.generateSENDMessagePaymentStatistics,
+ sendOpeningSource,
+ sendUserType,
+ messageId,
+ 6,
+ pnMessage.recipients
+ .slice(0, 5)
+ .map(rec =>
+ getRptIdStringFromPayment(
+ rec.payment as NotificationPaymentInfo
+ )
)
- )
- ),
- cancelAction: take(cancelPNPaymentStatusTracking)
- })
- .next(cancelPNPaymentStatusTracking)
- .isDone();
+ ),
+ cancelAction: take(cancelPNPaymentStatusTracking)
+ })
+ .next(cancelPNPaymentStatusTracking)
+ .isDone();
+ });
});
});
});
describe("generateSENDMessagePaymentStatistics", () => {
- it("should do nothing if payment count is zero", () => {
- testSaga(testable!.generateSENDMessagePaymentStatistics, messageId, 0, [
- paymentId1
- ])
- .next()
- .isDone();
- });
- it("should do nothing if payment Ids is an empty array", () => {
- testSaga(testable!.generateSENDMessagePaymentStatistics, messageId, 1, [])
- .next()
- .isDone();
- });
- it("should keep waiting if payments are not ready", () => {
- const paymentIds = [
- paymentId1,
- paymentId2,
- paymentId3,
- paymentId4,
- paymentId5
- ];
- testSaga(
- testable!.generateSENDMessagePaymentStatistics,
- messageId,
- 6,
- paymentIds
- )
- .next()
- .select(
- paymentStatisticsForMessageUncachedSelector,
- messageId,
- 6,
- paymentIds
- )
- .next(undefined)
- .delay(500)
- .next()
- .select(
- paymentStatisticsForMessageUncachedSelector,
- messageId,
- 6,
- paymentIds
- );
- });
- it("should call tracking method when payments are ready", () => {
- const paymentIds = [
- paymentId1,
- paymentId2,
- paymentId3,
- paymentId4,
- paymentId5
- ];
- const paymentStatistics = {
- paymentCount: 6,
- unpaidCount: 1,
- paidCount: 1,
- errorCount: 1,
- expiredCount: 1,
- revokedCount: 1,
- ongoingCount: 0
- };
- testSaga(
- testable!.generateSENDMessagePaymentStatistics,
- messageId,
- 6,
- paymentIds
- )
- .next()
- .select(
- paymentStatisticsForMessageUncachedSelector,
- messageId,
- 6,
- paymentIds
- )
- .next(paymentStatistics)
- .call(trackPNPaymentStatus, paymentStatistics)
- .next()
- .isDone();
+ sendOpeningSources.forEach(sendOpeningSource => {
+ sendUserTypes.forEach(sendUserType => {
+ it(`should do nothing if payment count is zero (opening source: ${sendOpeningSource}, user type ${sendUserType})`, () => {
+ testSaga(
+ testable!.generateSENDMessagePaymentStatistics,
+ sendOpeningSource,
+ sendUserType,
+ messageId,
+ 0,
+ [paymentId1]
+ )
+ .next()
+ .isDone();
+ });
+ it(`should do nothing if payment Ids is an empty array (opening source: ${sendOpeningSource}, user type ${sendUserType})`, () => {
+ testSaga(
+ testable!.generateSENDMessagePaymentStatistics,
+ sendOpeningSource,
+ sendUserType,
+ messageId,
+ 1,
+ []
+ )
+ .next()
+ .isDone();
+ });
+ it(`should keep waiting if payments are not ready (opening source: ${sendOpeningSource}, user type ${sendUserType})`, () => {
+ const paymentIds = [
+ paymentId1,
+ paymentId2,
+ paymentId3,
+ paymentId4,
+ paymentId5
+ ];
+ testSaga(
+ testable!.generateSENDMessagePaymentStatistics,
+ sendOpeningSource,
+ sendUserType,
+ messageId,
+ 6,
+ paymentIds
+ )
+ .next()
+ .select(
+ paymentStatisticsForMessageUncachedSelector,
+ messageId,
+ 6,
+ paymentIds
+ )
+ .next(undefined)
+ .delay(500)
+ .next()
+ .select(
+ paymentStatisticsForMessageUncachedSelector,
+ messageId,
+ 6,
+ paymentIds
+ );
+ });
+ it(`should call tracking method when payments are ready (opening source: ${sendOpeningSource}, user type ${sendUserType})`, () => {
+ const paymentIds = [
+ paymentId1,
+ paymentId2,
+ paymentId3,
+ paymentId4,
+ paymentId5
+ ];
+ const paymentStatistics = {
+ paymentCount: 6,
+ unpaidCount: 1,
+ paidCount: 1,
+ errorCount: 1,
+ expiredCount: 1,
+ revokedCount: 1,
+ ongoingCount: 0
+ };
+ testSaga(
+ testable!.generateSENDMessagePaymentStatistics,
+ sendOpeningSource,
+ sendUserType,
+ messageId,
+ 6,
+ paymentIds
+ )
+ .next()
+ .select(
+ paymentStatisticsForMessageUncachedSelector,
+ messageId,
+ 6,
+ paymentIds
+ )
+ .next(paymentStatistics)
+ .call(
+ trackPNPaymentStatus,
+ paymentStatistics,
+ sendOpeningSource,
+ sendUserType
+ )
+ .next()
+ .isDone();
+ });
+ });
});
});
});
diff --git a/ts/features/pn/store/sagas/watchPaymentStatusSaga.ts b/ts/features/pn/store/sagas/watchPaymentStatusSaga.ts
index a5e58d450e4..6956baef451 100644
--- a/ts/features/pn/store/sagas/watchPaymentStatusSaga.ts
+++ b/ts/features/pn/store/sagas/watchPaymentStatusSaga.ts
@@ -11,6 +11,10 @@ import { trackPNPaymentStatus } from "../../analytics";
import { getRptIdStringFromPayment } from "../../utils/rptId";
import { paymentStatisticsForMessageUncachedSelector } from "../../../messages/store/reducers/payments";
import { isTestEnv } from "../../../../utils/environment";
+import {
+ SendOpeningSource,
+ SendUserType
+} from "../../../pushNotifications/analytics";
/**
* This saga is used to track a mixpanel event which is a report of
@@ -21,13 +25,12 @@ import { isTestEnv } from "../../../../utils/environment";
export function* watchPaymentStatusForMixpanelTracking(
action: ActionType
) {
- const { isAARNotification, messageId } = action.payload;
+ const { openingSource, userType, messageId } = action.payload;
const currentFiscalCode = yield* select(profileFiscalCodeSelector);
const message = yield* select(pnMessageFromIdSelector, messageId);
- const fiscalCodeOrUndefined = isAARNotification
- ? undefined
- : currentFiscalCode;
+ const fiscalCodeOrUndefined =
+ openingSource === "message" ? currentFiscalCode : undefined;
const payments = yield* call(
paymentsFromPNMessagePot,
fiscalCodeOrUndefined,
@@ -42,6 +45,8 @@ export function* watchPaymentStatusForMixpanelTracking(
yield* race({
polling: call(
generateSENDMessagePaymentStatistics,
+ openingSource,
+ userType,
messageId,
paymentCount,
visibleRPTIds
@@ -51,6 +56,8 @@ export function* watchPaymentStatusForMixpanelTracking(
}
function* generateSENDMessagePaymentStatistics(
+ openingSource: SendOpeningSource,
+ userType: SendUserType,
messageId: string,
paymentCount: number,
paymentsRpdIds: ReadonlyArray
@@ -71,7 +78,12 @@ function* generateSENDMessagePaymentStatistics(
yield* delay(500);
} else {
// Payment statistics are ready, track them
- yield* call(trackPNPaymentStatus, paymentStatistics);
+ yield* call(
+ trackPNPaymentStatus,
+ paymentStatistics,
+ openingSource,
+ userType
+ );
// Exit the loop and end the saga
return;
}
diff --git a/ts/features/pushNotifications/analytics/index.ts b/ts/features/pushNotifications/analytics/index.ts
index 86357be02de..2b0b61ea6c4 100644
--- a/ts/features/pushNotifications/analytics/index.ts
+++ b/ts/features/pushNotifications/analytics/index.ts
@@ -107,8 +107,8 @@ export const trackSystemNotificationPermissionScreenOutcome = (
const props = buildEventProperties("UX", "action", {
flow,
outcome,
- send_user: sendUser,
- opening_source: sendOpeningSource
+ opening_source: sendOpeningSource,
+ send_user: sendUser
});
void mixpanelTrack(eventName, props);
};
diff --git a/ts/features/pushNotifications/hooks/__tests__/usePushNotificationEngagement.test.tsx b/ts/features/pushNotifications/hooks/__tests__/usePushNotificationEngagement.test.tsx
index 44a96fa2097..1bc2a309016 100644
--- a/ts/features/pushNotifications/hooks/__tests__/usePushNotificationEngagement.test.tsx
+++ b/ts/features/pushNotifications/hooks/__tests__/usePushNotificationEngagement.test.tsx
@@ -175,6 +175,7 @@ describe("UseEngamentScreenFocusLogic", () => {
)
)
);
+
it('should subscribe to a "change" appstate event, and unsubscribe on unmount', () => {
const removeMock = jest.fn();
const eventListenerMock = jest
diff --git a/ts/features/pushNotifications/screens/PushNotificationEngagementScreen.tsx b/ts/features/pushNotifications/screens/PushNotificationEngagementScreen.tsx
index db940552d5b..966a108d341 100644
--- a/ts/features/pushNotifications/screens/PushNotificationEngagementScreen.tsx
+++ b/ts/features/pushNotifications/screens/PushNotificationEngagementScreen.tsx
@@ -57,9 +57,9 @@ export const PushNotificationEngagementScreen = ({
return (
);
@@ -72,10 +72,10 @@ type Props = {
const PushNotificationEngagementScreenContent = ({
flow,
+ onPressActivate,
sendOpeningSource,
sendUserType,
- shouldSetSecurityAdviceUponLeaving,
- onPressActivate
+ shouldSetSecurityAdviceUponLeaving
}: Props) => {
const dispatch = useIODispatch();
const { popToTop, setOptions } = useIONavigation();
diff --git a/ts/features/pushNotifications/screens/SystemNotificationPermissionsScreen.tsx b/ts/features/pushNotifications/screens/SystemNotificationPermissionsScreen.tsx
index d68744275ec..0dcb8d5caeb 100644
--- a/ts/features/pushNotifications/screens/SystemNotificationPermissionsScreen.tsx
+++ b/ts/features/pushNotifications/screens/SystemNotificationPermissionsScreen.tsx
@@ -16,7 +16,12 @@ export const SystemNotificationPermissionsScreen = () => {
const navigation = useIONavigation();
const onDismiss = useCallback(() => {
- trackSystemNotificationPermissionScreenOutcome("dismiss", "authentication");
+ trackSystemNotificationPermissionScreenOutcome(
+ "dismiss",
+ "authentication",
+ "not_set",
+ "not_set"
+ );
navigation.goBack();
}, [navigation]);
@@ -36,7 +41,11 @@ export const SystemNotificationPermissionsScreen = () => {
)
});
- trackSystemNotificationPermissionScreenShown("authentication");
+ trackSystemNotificationPermissionScreenShown(
+ "authentication",
+ "not_set",
+ "not_set"
+ );
dispatch(setEngagementScreenShown());
}, [dispatch, navigation, onDismiss]);
@@ -52,7 +61,9 @@ export const SystemNotificationPermissionsScreen = () => {
onPress: () => {
trackSystemNotificationPermissionScreenOutcome(
"activate",
- "authentication"
+ "authentication",
+ "not_set",
+ "not_set"
);
openSystemNotificationSettingsScreen();
navigation.goBack();
diff --git a/ts/features/pushNotifications/screens/__tests__/PushNotificationEngagementScreen.test.tsx b/ts/features/pushNotifications/screens/__tests__/PushNotificationEngagementScreen.test.tsx
index 0511a4afe1a..c30eecf36a9 100644
--- a/ts/features/pushNotifications/screens/__tests__/PushNotificationEngagementScreen.test.tsx
+++ b/ts/features/pushNotifications/screens/__tests__/PushNotificationEngagementScreen.test.tsx
@@ -61,6 +61,7 @@ describe("PushNotificationEngagementScreen", () => {
const screen = renderScreen();
expect(screen.toJSON()).toMatchSnapshot();
});
+
notificationModalFlowList.forEach(flow =>
sendOpeningSourceList.forEach(sendOpeningSource =>
sendUserTypeList.forEach(sendUserType =>
diff --git a/ts/features/pushNotifications/screens/__tests__/SystemNotificationPermissionsScreen.test.tsx b/ts/features/pushNotifications/screens/__tests__/SystemNotificationPermissionsScreen.test.tsx
index 60d8d2061f0..1778a455d7f 100644
--- a/ts/features/pushNotifications/screens/__tests__/SystemNotificationPermissionsScreen.test.tsx
+++ b/ts/features/pushNotifications/screens/__tests__/SystemNotificationPermissionsScreen.test.tsx
@@ -49,8 +49,10 @@ describe("SystemNotificationPermissionsScreen", () => {
renderScreen();
expect(analyticsMock.mock.calls.length).toBe(1);
- expect(analyticsMock.mock.calls[0].length).toBe(1);
+ expect(analyticsMock.mock.calls[0].length).toBe(3);
expect(analyticsMock.mock.calls[0][0]).toBe("authentication");
+ expect(analyticsMock.mock.calls[0][1]).toBe("not_set");
+ expect(analyticsMock.mock.calls[0][2]).toBe("not_set");
expect(mockDispatch.mock.calls.length).toBe(1);
expect(mockDispatch.mock.calls[0].length).toBe(1);
@@ -88,9 +90,11 @@ describe("SystemNotificationPermissionsScreen", () => {
onPressFunction();
expect(analyticsMock.mock.calls.length).toBe(1);
- expect(analyticsMock.mock.calls[0].length).toBe(2);
+ expect(analyticsMock.mock.calls[0].length).toBe(4);
expect(analyticsMock.mock.calls[0][0]).toBe("dismiss");
expect(analyticsMock.mock.calls[0][1]).toBe("authentication");
+ expect(analyticsMock.mock.calls[0][2]).toBe("not_set");
+ expect(analyticsMock.mock.calls[0][3]).toBe("not_set");
expect(settingsSpy.mock.calls.length).toBe(0);
expect(mockGoBack.mock.calls.length).toBe(1);
@@ -111,9 +115,11 @@ describe("SystemNotificationPermissionsScreen", () => {
fireEvent.press(xCloseButton);
expect(analyticsMock.mock.calls.length).toBe(1);
- expect(analyticsMock.mock.calls[0].length).toBe(2);
+ expect(analyticsMock.mock.calls[0].length).toBe(4);
expect(analyticsMock.mock.calls[0][0]).toBe("activate");
expect(analyticsMock.mock.calls[0][1]).toBe("authentication");
+ expect(analyticsMock.mock.calls[0][2]).toBe("not_set");
+ expect(analyticsMock.mock.calls[0][3]).toBe("not_set");
expect(settingsSpy.mock.calls.length).toBe(1);
expect(settingsSpy.mock.calls[0].length).toBe(0);
@@ -135,9 +141,11 @@ describe("SystemNotificationPermissionsScreen", () => {
fireEvent.press(xCloseButton);
expect(analyticsMock.mock.calls.length).toBe(1);
- expect(analyticsMock.mock.calls[0].length).toBe(2);
+ expect(analyticsMock.mock.calls[0].length).toBe(4);
expect(analyticsMock.mock.calls[0][0]).toBe("dismiss");
expect(analyticsMock.mock.calls[0][1]).toBe("authentication");
+ expect(analyticsMock.mock.calls[0][2]).toBe("not_set");
+ expect(analyticsMock.mock.calls[0][3]).toBe("not_set");
expect(settingsSpy.mock.calls.length).toBe(0);
expect(mockGoBack.mock.calls.length).toBe(1);