Handle the behaviour of Reply/ReplyToList/ReplyAll button
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -15,10 +15,22 @@ void main() {
|
||||
final userEEmailAddress = EmailAddress('User E', 'userE@domain.com');
|
||||
final replyToEmailAddress = EmailAddress('Reply To', 'replyToThis@domain.com');
|
||||
final replyToListEmailAddress = EmailAddress(null, 'replyToList@domain.com');
|
||||
final listPost = '<mailto:${replyToListEmailAddress.emailAddress}>';
|
||||
|
||||
group('GIVEN user A is the sender AND sends an email to user B and user E, cc to user C, bcc to user D', () {
|
||||
test('THEN user A clicks reply, generateRecipientsEmailAddressForComposer SHOULD return user B email + user E email to reply', () {
|
||||
final expectedResult = Tuple3([userBEmailAddress, userEEmailAddress], <EmailAddress>[], <EmailAddress>[]);
|
||||
group(
|
||||
'GIVEN user A is the sender\n'
|
||||
'AND sends an email to user B and user E, cc to user C, bcc to user D',
|
||||
() {
|
||||
test(
|
||||
'THEN user A clicks reply, generateRecipientsEmailAddressForComposer\n'
|
||||
'SHOULD return user B email + user E email to reply',
|
||||
() {
|
||||
final expectedResult = Tuple4(
|
||||
[userBEmailAddress, userEEmailAddress],
|
||||
<EmailAddress>[],
|
||||
<EmailAddress>[],
|
||||
<EmailAddress>[],
|
||||
);
|
||||
|
||||
final emailToReply = PresentationEmail(
|
||||
from: {userAEmailAddress},
|
||||
@@ -36,10 +48,19 @@ void main() {
|
||||
expect(result.value1, containsAll(expectedResult.value1));
|
||||
expect(result.value2, containsAll(expectedResult.value2));
|
||||
expect(result.value3, containsAll(expectedResult.value3));
|
||||
expect(result.value4, containsAll(expectedResult.value4));
|
||||
});
|
||||
|
||||
test('THEN user A clicks reply all, generateRecipientsEmailAddressForComposer SHOULD return user B email + user E email to reply, user C email address to cc, user D email address to bcc', () {
|
||||
final expectedResult = Tuple3([userBEmailAddress, userEEmailAddress], <EmailAddress>[userCEmailAddress], <EmailAddress>[userDEmailAddress]);
|
||||
test(
|
||||
'THEN user A clicks reply all, generateRecipientsEmailAddressForComposer\n'
|
||||
'SHOULD return user B email + user E email to reply, user C email address to cc, user D email address to bcc',
|
||||
() {
|
||||
final expectedResult = Tuple4(
|
||||
[userBEmailAddress, userEEmailAddress],
|
||||
<EmailAddress>[userCEmailAddress],
|
||||
<EmailAddress>[userDEmailAddress],
|
||||
<EmailAddress>[],
|
||||
);
|
||||
|
||||
final emailToReply = PresentationEmail(
|
||||
from: {userAEmailAddress},
|
||||
@@ -57,12 +78,294 @@ void main() {
|
||||
expect(result.value1, containsAll(expectedResult.value1));
|
||||
expect(result.value2, containsAll(expectedResult.value2));
|
||||
expect(result.value3, containsAll(expectedResult.value3));
|
||||
expect(result.value4, containsAll(expectedResult.value4));
|
||||
});
|
||||
});
|
||||
|
||||
group('GIVEN user B is the sender, SENDER configured the replyTo email AND send an email to user A and user E, cc to user C, bcc to user D', () {
|
||||
test('THEN user A click reply, generateRecipientsEmailAddressForComposer SHOULD return only replyToEmailAddress email to reply' , () {
|
||||
final expectedResult = Tuple3([replyToEmailAddress], <EmailAddress>[], <EmailAddress>[]);
|
||||
group(
|
||||
'GIVEN user A is the sender\n'
|
||||
'AND sends an email to user B and user E, cc to user C, bcc to user D',
|
||||
() {
|
||||
test(
|
||||
'Email has Reply To and List-Post'
|
||||
'THEN user A clicks reply, generateRecipientsEmailAddressForComposer\n'
|
||||
'SHOULD return user B email + user E email to reply',
|
||||
() {
|
||||
final expectedResult = Tuple4(
|
||||
[userBEmailAddress, userEEmailAddress],
|
||||
<EmailAddress>[],
|
||||
<EmailAddress>[],
|
||||
[replyToEmailAddress],
|
||||
);
|
||||
|
||||
final emailToReply = PresentationEmail(
|
||||
from: {userAEmailAddress},
|
||||
to: {userBEmailAddress, userEEmailAddress},
|
||||
cc: {userCEmailAddress},
|
||||
bcc: {userDEmailAddress},
|
||||
replyTo: {replyToEmailAddress},
|
||||
);
|
||||
|
||||
final result = emailToReply.generateRecipientsEmailAddressForComposer(
|
||||
emailActionType: EmailActionType.reply,
|
||||
isSender: true,
|
||||
userName: userAEmailAddress.emailAddress,
|
||||
listPost: listPost,
|
||||
);
|
||||
|
||||
expect(result.value1, containsAll(expectedResult.value1));
|
||||
expect(result.value2, containsAll(expectedResult.value2));
|
||||
expect(result.value3, containsAll(expectedResult.value3));
|
||||
expect(result.value4, containsAll(expectedResult.value4));
|
||||
});
|
||||
|
||||
test(
|
||||
'Email has Reply To and not List-Post'
|
||||
'THEN user A clicks reply, generateRecipientsEmailAddressForComposer\n'
|
||||
'SHOULD return user B email + user E email to reply',
|
||||
() {
|
||||
final expectedResult = Tuple4(
|
||||
[userBEmailAddress, userEEmailAddress],
|
||||
<EmailAddress>[],
|
||||
<EmailAddress>[],
|
||||
[replyToEmailAddress],
|
||||
);
|
||||
|
||||
final emailToReply = PresentationEmail(
|
||||
from: {userAEmailAddress},
|
||||
to: {userBEmailAddress, userEEmailAddress},
|
||||
cc: {userCEmailAddress},
|
||||
bcc: {userDEmailAddress},
|
||||
replyTo: {replyToEmailAddress},
|
||||
);
|
||||
|
||||
final result = emailToReply.generateRecipientsEmailAddressForComposer(
|
||||
emailActionType: EmailActionType.reply,
|
||||
isSender: true,
|
||||
userName: userAEmailAddress.emailAddress,
|
||||
);
|
||||
|
||||
expect(result.value1, containsAll(expectedResult.value1));
|
||||
expect(result.value2, containsAll(expectedResult.value2));
|
||||
expect(result.value3, containsAll(expectedResult.value3));
|
||||
expect(result.value4, containsAll(expectedResult.value4));
|
||||
});
|
||||
|
||||
test(
|
||||
'Email has List-Post and not Reply To'
|
||||
'THEN user A clicks reply, generateRecipientsEmailAddressForComposer\n'
|
||||
'SHOULD return user B email + user E email to reply',
|
||||
() {
|
||||
final expectedResult = Tuple4(
|
||||
[userBEmailAddress, userEEmailAddress],
|
||||
<EmailAddress>[],
|
||||
<EmailAddress>[],
|
||||
[],
|
||||
);
|
||||
|
||||
final emailToReply = PresentationEmail(
|
||||
from: {userAEmailAddress},
|
||||
to: {userBEmailAddress, userEEmailAddress},
|
||||
cc: {userCEmailAddress},
|
||||
bcc: {userDEmailAddress},
|
||||
replyTo: {replyToEmailAddress},
|
||||
);
|
||||
|
||||
final result = emailToReply.generateRecipientsEmailAddressForComposer(
|
||||
emailActionType: EmailActionType.reply,
|
||||
isSender: true,
|
||||
userName: userAEmailAddress.emailAddress,
|
||||
listPost: listPost,
|
||||
);
|
||||
|
||||
expect(result.value1, containsAll(expectedResult.value1));
|
||||
expect(result.value2, containsAll(expectedResult.value2));
|
||||
expect(result.value3, containsAll(expectedResult.value3));
|
||||
expect(result.value4, containsAll(expectedResult.value4));
|
||||
});
|
||||
|
||||
test(
|
||||
'Email has not Reply To and List-Post'
|
||||
'THEN user A clicks reply, generateRecipientsEmailAddressForComposer\n'
|
||||
'SHOULD return user B email + user E email to reply',
|
||||
() {
|
||||
final expectedResult = Tuple4(
|
||||
[userBEmailAddress, userEEmailAddress],
|
||||
<EmailAddress>[],
|
||||
<EmailAddress>[],
|
||||
[],
|
||||
);
|
||||
|
||||
final emailToReply = PresentationEmail(
|
||||
from: {userAEmailAddress},
|
||||
to: {userBEmailAddress, userEEmailAddress},
|
||||
cc: {userCEmailAddress},
|
||||
bcc: {userDEmailAddress},
|
||||
replyTo: {},
|
||||
);
|
||||
|
||||
final result = emailToReply.generateRecipientsEmailAddressForComposer(
|
||||
emailActionType: EmailActionType.reply,
|
||||
isSender: true,
|
||||
userName: userAEmailAddress.emailAddress,
|
||||
);
|
||||
|
||||
expect(result.value1, containsAll(expectedResult.value1));
|
||||
expect(result.value2, containsAll(expectedResult.value2));
|
||||
expect(result.value3, containsAll(expectedResult.value3));
|
||||
expect(result.value4, containsAll(expectedResult.value4));
|
||||
});
|
||||
});
|
||||
|
||||
group(
|
||||
'GIVEN user A is the sender\n'
|
||||
'AND sends an email to user A and user B, cc to user C, bcc to user D',
|
||||
() {
|
||||
test(
|
||||
'Email has Reply To and List-Post'
|
||||
'THEN user A clicks reply, generateRecipientsEmailAddressForComposer\n'
|
||||
'SHOULD return user A email + user B email to reply',
|
||||
() {
|
||||
final expectedResult = Tuple4(
|
||||
[userBEmailAddress, userAEmailAddress],
|
||||
<EmailAddress>[],
|
||||
<EmailAddress>[],
|
||||
[replyToEmailAddress],
|
||||
);
|
||||
|
||||
final emailToReply = PresentationEmail(
|
||||
from: {userAEmailAddress},
|
||||
to: {userBEmailAddress, userAEmailAddress},
|
||||
cc: {userCEmailAddress},
|
||||
bcc: {userDEmailAddress},
|
||||
replyTo: {replyToEmailAddress},
|
||||
);
|
||||
|
||||
final result = emailToReply.generateRecipientsEmailAddressForComposer(
|
||||
emailActionType: EmailActionType.reply,
|
||||
isSender: true,
|
||||
userName: userAEmailAddress.emailAddress,
|
||||
listPost: listPost,
|
||||
);
|
||||
|
||||
expect(result.value1, containsAll(expectedResult.value1));
|
||||
expect(result.value2, containsAll(expectedResult.value2));
|
||||
expect(result.value3, containsAll(expectedResult.value3));
|
||||
expect(result.value4, containsAll(expectedResult.value4));
|
||||
});
|
||||
|
||||
test(
|
||||
'Email has Reply To and not List-Post'
|
||||
'THEN user A clicks reply, generateRecipientsEmailAddressForComposer\n'
|
||||
'SHOULD return user A email + user B email to reply',
|
||||
() {
|
||||
final expectedResult = Tuple4(
|
||||
[userBEmailAddress, userAEmailAddress],
|
||||
<EmailAddress>[],
|
||||
<EmailAddress>[],
|
||||
[replyToEmailAddress],
|
||||
);
|
||||
|
||||
final emailToReply = PresentationEmail(
|
||||
from: {userAEmailAddress},
|
||||
to: {userBEmailAddress, userAEmailAddress},
|
||||
cc: {userCEmailAddress},
|
||||
bcc: {userDEmailAddress},
|
||||
replyTo: {replyToEmailAddress},
|
||||
);
|
||||
|
||||
final result = emailToReply.generateRecipientsEmailAddressForComposer(
|
||||
emailActionType: EmailActionType.reply,
|
||||
isSender: true,
|
||||
userName: userAEmailAddress.emailAddress,
|
||||
);
|
||||
|
||||
expect(result.value1, containsAll(expectedResult.value1));
|
||||
expect(result.value2, containsAll(expectedResult.value2));
|
||||
expect(result.value3, containsAll(expectedResult.value3));
|
||||
expect(result.value4, containsAll(expectedResult.value4));
|
||||
});
|
||||
|
||||
test(
|
||||
'Email has List-Post and not Reply To'
|
||||
'THEN user A clicks reply, generateRecipientsEmailAddressForComposer\n'
|
||||
'SHOULD return user A email + user B email to reply',
|
||||
() {
|
||||
final expectedResult = Tuple4(
|
||||
[userBEmailAddress, userAEmailAddress],
|
||||
<EmailAddress>[],
|
||||
<EmailAddress>[],
|
||||
[],
|
||||
);
|
||||
|
||||
final emailToReply = PresentationEmail(
|
||||
from: {userAEmailAddress},
|
||||
to: {userBEmailAddress, userAEmailAddress},
|
||||
cc: {userCEmailAddress},
|
||||
bcc: {userDEmailAddress},
|
||||
replyTo: {replyToEmailAddress},
|
||||
);
|
||||
|
||||
final result = emailToReply.generateRecipientsEmailAddressForComposer(
|
||||
emailActionType: EmailActionType.reply,
|
||||
isSender: true,
|
||||
userName: userAEmailAddress.emailAddress,
|
||||
listPost: listPost,
|
||||
);
|
||||
|
||||
expect(result.value1, containsAll(expectedResult.value1));
|
||||
expect(result.value2, containsAll(expectedResult.value2));
|
||||
expect(result.value3, containsAll(expectedResult.value3));
|
||||
expect(result.value4, containsAll(expectedResult.value4));
|
||||
});
|
||||
|
||||
test(
|
||||
'Email has not Reply To and List-Post'
|
||||
'THEN user A clicks reply, generateRecipientsEmailAddressForComposer\n'
|
||||
'SHOULD return user A email + user B email to reply',
|
||||
() {
|
||||
final expectedResult = Tuple4(
|
||||
[userBEmailAddress, userAEmailAddress],
|
||||
<EmailAddress>[],
|
||||
<EmailAddress>[],
|
||||
[],
|
||||
);
|
||||
|
||||
final emailToReply = PresentationEmail(
|
||||
from: {userAEmailAddress},
|
||||
to: {userBEmailAddress, userAEmailAddress},
|
||||
cc: {userCEmailAddress},
|
||||
bcc: {userDEmailAddress},
|
||||
replyTo: {},
|
||||
);
|
||||
|
||||
final result = emailToReply.generateRecipientsEmailAddressForComposer(
|
||||
emailActionType: EmailActionType.reply,
|
||||
isSender: true,
|
||||
userName: userAEmailAddress.emailAddress,
|
||||
);
|
||||
|
||||
expect(result.value1, containsAll(expectedResult.value1));
|
||||
expect(result.value2, containsAll(expectedResult.value2));
|
||||
expect(result.value3, containsAll(expectedResult.value3));
|
||||
expect(result.value4, containsAll(expectedResult.value4));
|
||||
});
|
||||
});
|
||||
|
||||
group(
|
||||
'GIVEN user B is the sender, SENDER configured the replyTo email\n'
|
||||
'AND send an email to user A and user E, cc to user C, bcc to user D',
|
||||
() {
|
||||
test(
|
||||
'THEN user A click reply, generateRecipientsEmailAddressForComposer\n'
|
||||
'SHOULD return only replyToEmailAddress email to reply' ,
|
||||
() {
|
||||
final expectedResult = Tuple4(
|
||||
[replyToEmailAddress],
|
||||
<EmailAddress>[],
|
||||
<EmailAddress>[],
|
||||
<EmailAddress>[],
|
||||
);
|
||||
|
||||
final emailToReply = PresentationEmail(
|
||||
from: {userBEmailAddress},
|
||||
@@ -80,10 +383,19 @@ void main() {
|
||||
expect(result.value1, containsAll(expectedResult.value1));
|
||||
expect(result.value2, containsAll(expectedResult.value2));
|
||||
expect(result.value3, containsAll(expectedResult.value3));
|
||||
expect(result.value4, containsAll(expectedResult.value4));
|
||||
});
|
||||
|
||||
test('THEN user A clicks reply all, generateRecipientsEmailAddressForComposer SHOULD return replyToEmailAddress + user A email + user E email to reply, user C email address to cc, user D email address to bcc', () {
|
||||
final expectedResult = Tuple3([userAEmailAddress, userEEmailAddress, replyToEmailAddress], <EmailAddress>[userCEmailAddress], <EmailAddress>[userDEmailAddress]);
|
||||
test(
|
||||
'THEN user A clicks reply all, generateRecipientsEmailAddressForComposer\n'
|
||||
'SHOULD return replyToEmailAddress + user A email + user E email to reply, user C email address to cc, user D email address to bcc',
|
||||
() {
|
||||
final expectedResult = Tuple4(
|
||||
[userAEmailAddress, userEEmailAddress, replyToEmailAddress],
|
||||
<EmailAddress>[userCEmailAddress],
|
||||
<EmailAddress>[userDEmailAddress],
|
||||
<EmailAddress>[],
|
||||
);
|
||||
|
||||
final emailToReply = PresentationEmail(
|
||||
from: {userBEmailAddress},
|
||||
@@ -101,12 +413,24 @@ void main() {
|
||||
expect(result.value1, containsAll(expectedResult.value1));
|
||||
expect(result.value2, containsAll(expectedResult.value2));
|
||||
expect(result.value3, containsAll(expectedResult.value3));
|
||||
expect(result.value4, containsAll(expectedResult.value4));
|
||||
});
|
||||
});
|
||||
|
||||
group('GIVEN user B is the sender, SENDER does not have the replyTo email AND sends an email to user A and user E, cc to user C, bcc to user D', () {
|
||||
test('THEN user A clicks reply, generateRecipientsEmailAddressForComposer SHOULD return only user B email to reply', () {
|
||||
final expectedResult = Tuple3([userBEmailAddress], <EmailAddress>[], <EmailAddress>[]);
|
||||
group(
|
||||
'GIVEN user B is the sender, SENDER does not have the replyTo email\n'
|
||||
'AND sends an email to user A and user E, cc to user C, bcc to user D',
|
||||
() {
|
||||
test(
|
||||
'THEN user A clicks reply, generateRecipientsEmailAddressForComposer\n'
|
||||
'SHOULD return only user B email to reply',
|
||||
() {
|
||||
final expectedResult = Tuple4(
|
||||
[userBEmailAddress],
|
||||
<EmailAddress>[],
|
||||
<EmailAddress>[],
|
||||
<EmailAddress>[],
|
||||
);
|
||||
|
||||
final emailToReply = PresentationEmail(
|
||||
from: {userBEmailAddress},
|
||||
@@ -123,10 +447,19 @@ void main() {
|
||||
expect(result.value1, containsAll(expectedResult.value1));
|
||||
expect(result.value2, containsAll(expectedResult.value2));
|
||||
expect(result.value3, containsAll(expectedResult.value3));
|
||||
expect(result.value4, containsAll(expectedResult.value4));
|
||||
});
|
||||
|
||||
test('THEN user A clicks reply all, generateRecipientsEmailAddressForComposer SHOULD return user A email + user E email + user B email to reply, user C email to cc, user D email to bcc', () {
|
||||
final expectedResult = Tuple3([userAEmailAddress, userEEmailAddress, userBEmailAddress], <EmailAddress>[userCEmailAddress], <EmailAddress>[userDEmailAddress]);
|
||||
test(
|
||||
'THEN user A clicks reply all, generateRecipientsEmailAddressForComposer\n'
|
||||
'SHOULD return user A email + user E email + user B email to reply, user C email to cc, user D email to bcc',
|
||||
() {
|
||||
final expectedResult = Tuple4(
|
||||
[userAEmailAddress, userEEmailAddress, userBEmailAddress],
|
||||
<EmailAddress>[userCEmailAddress],
|
||||
<EmailAddress>[userDEmailAddress],
|
||||
<EmailAddress>[],
|
||||
);
|
||||
|
||||
final emailToReply = PresentationEmail(
|
||||
from: {userBEmailAddress},
|
||||
@@ -143,13 +476,14 @@ void main() {
|
||||
expect(result.value1, containsAll(expectedResult.value1));
|
||||
expect(result.value2, containsAll(expectedResult.value2));
|
||||
expect(result.value3, containsAll(expectedResult.value3));
|
||||
expect(result.value4, containsAll(expectedResult.value4));
|
||||
});
|
||||
|
||||
test(
|
||||
'THEN user A click reply to list, generateRecipientsEmailAddressForComposer\n'
|
||||
'SHOULD return email address in mailto of List-Post to reply\n',
|
||||
() {
|
||||
final expectedResult = Tuple3([replyToListEmailAddress], [], []);
|
||||
final expectedResult = Tuple4([replyToListEmailAddress], [], [], []);
|
||||
|
||||
final emailToReplyToList = PresentationEmail(
|
||||
from: {userBEmailAddress},
|
||||
@@ -162,18 +496,31 @@ void main() {
|
||||
final result = emailToReplyToList.generateRecipientsEmailAddressForComposer(
|
||||
emailActionType: EmailActionType.replyToList,
|
||||
isSender: false,
|
||||
listPost: '<mailto:${replyToListEmailAddress.emailAddress}>',
|
||||
listPost: listPost,
|
||||
);
|
||||
|
||||
expect(result.value1, containsAll(expectedResult.value1));
|
||||
expect(result.value2, containsAll(expectedResult.value2));
|
||||
expect(result.value3, containsAll(expectedResult.value3));
|
||||
expect(result.value4, containsAll(expectedResult.value4));
|
||||
});
|
||||
});
|
||||
|
||||
group('Given user A is the sender AND sends an email to user B + user E, cc to user C, bcc to user D THEN user B clicks forward', () {
|
||||
test('generateRecipientsEmailAddressForComposer SHOULD return user user B email + user E email to reply, user C email to cc, user D email to bcc', () {
|
||||
final expectedResult = Tuple3([userBEmailAddress, userEEmailAddress], <EmailAddress>[userCEmailAddress], <EmailAddress>[userDEmailAddress]);
|
||||
group(
|
||||
'Given user A is the sender\n'
|
||||
'AND sends an email to user B + user E, cc to user C, bcc to user D\n'
|
||||
'THEN user B clicks forward',
|
||||
() {
|
||||
test(
|
||||
'generateRecipientsEmailAddressForComposer\n'
|
||||
'SHOULD return user user B email + user E email to reply, user C email to cc, user D email to bcc',
|
||||
() {
|
||||
final expectedResult = Tuple4(
|
||||
[userBEmailAddress, userEEmailAddress],
|
||||
<EmailAddress>[userCEmailAddress],
|
||||
<EmailAddress>[userDEmailAddress],
|
||||
<EmailAddress>[],
|
||||
);
|
||||
|
||||
final emailToReply = PresentationEmail(
|
||||
from: {userAEmailAddress},
|
||||
@@ -190,6 +537,7 @@ void main() {
|
||||
expect(result.value1, containsAll(expectedResult.value1));
|
||||
expect(result.value2, containsAll(expectedResult.value2));
|
||||
expect(result.value3, containsAll(expectedResult.value3));
|
||||
expect(result.value4, containsAll(expectedResult.value4));
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user