Skip to content

Commit c5e7d7f

Browse files
committed
message test [nfc]: Replace eg.pollOption with records
The `preparePollMessage` helper was only using `PollOption` for convenience. It doesn't actually need the `PollOption` instances. This allows us to make changes to `PollOption` more freely. Signed-off-by: Zixuan James Li <[email protected]>
1 parent 0c507fb commit c5e7d7f

File tree

2 files changed

+16
-19
lines changed

2 files changed

+16
-19
lines changed

test/example_data.dart

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -471,9 +471,6 @@ Submessage submessage({
471471
);
472472
}
473473

474-
PollOption pollOption({required String text, required Iterable<int> voters}) =>
475-
PollOption(text: text)..voters.addAll(voters);
476-
477474
////////////////////////////////////////////////////////////////
478475
// Aggregate data structures.
479476
//

test/model/message_test.dart

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -619,7 +619,7 @@ void main() {
619619
group('handleSubmessageEvent', () {
620620
Future<Message> preparePollMessage({
621621
String? question,
622-
List<PollOption>? options,
622+
List<(String, Iterable<int>)>? optionVoterIdsPairs,
623623
User? messageSender,
624624
}) async {
625625
final effectiveMessageSender = messageSender ?? eg.selfUser;
@@ -628,13 +628,13 @@ void main() {
628628
eg.submessage(senderId: effectiveMessageSender.userId,
629629
content: eg.pollWidgetData(
630630
question: question ?? 'example question',
631-
options: (options != null)
632-
? options.map((e) => e.text).toList()
631+
options: (optionVoterIdsPairs != null)
632+
? optionVoterIdsPairs.map((e) => e.$1).toList()
633633
: ['foo', 'bar'])),
634-
if (options != null)
635-
for (int i = 0; i < options.length; i++)
634+
if (optionVoterIdsPairs != null)
635+
for (int i = 0; i < optionVoterIdsPairs.length; i++)
636636
...[
637-
for (final voter in options[i].voters)
637+
for (final voter in optionVoterIdsPairs[i].$2)
638638
eg.submessage(senderId: voter,
639639
content: PollVoteEventSubmessage(
640640
key: PollEventSubmessage.optionKey(senderId: null, idx: i),
@@ -726,7 +726,7 @@ void main() {
726726

727727
test('add option', () async {
728728
message = await preparePollMessage(
729-
options: [eg.pollOption(text: 'bar', voters: [])]);
729+
optionVoterIdsPairs: [('bar', [])]);
730730
await handleNewOptionEvent(eg.otherUser, option: 'baz', idx: 0);
731731
checkPoll(message).options.deepEquals([
732732
conditionPollOption('bar'),
@@ -736,7 +736,7 @@ void main() {
736736

737737
test('option with duplicate text ignored', () async {
738738
message = await preparePollMessage(
739-
options: [eg.pollOption(text: 'existing', voters: [])]);
739+
optionVoterIdsPairs: [('existing', [])]);
740740
checkPoll(message).options.deepEquals([conditionPollOption('existing')]);
741741
await handleNewOptionEvent(eg.otherUser, option: 'existing', idx: 0);
742742
checkPoll(message).options.deepEquals([conditionPollOption('existing')]);
@@ -745,7 +745,7 @@ void main() {
745745
test('option index limit exceeded', () async{
746746
message = await preparePollMessage(
747747
question: 'favorite number',
748-
options: List.generate(1001, (i) => eg.pollOption(text: '$i', voters: [])),
748+
optionVoterIdsPairs: List.generate(1001, (i) => ('$i', [])),
749749
);
750750
checkPoll(message).options.length.equals(1001);
751751
await handleNewOptionEvent(eg.otherUser, option: 'baz', idx: 1001);
@@ -788,9 +788,9 @@ void main() {
788788
});
789789

790790
test('remove votes', () async {
791-
message = await preparePollMessage(options: [
792-
eg.pollOption(text: 'foo', voters: [eg.otherUser.userId, eg.selfUser.userId]),
793-
eg.pollOption(text: 'bar', voters: [eg.selfUser.userId]),
791+
message = await preparePollMessage(optionVoterIdsPairs: [
792+
('foo', [eg.otherUser.userId, eg.selfUser.userId]),
793+
('bar', [eg.selfUser.userId]),
794794
]);
795795

796796
String optionKey(int index) =>
@@ -810,9 +810,9 @@ void main() {
810810
});
811811

812812
test('vote for unknown options', () async {
813-
message = await preparePollMessage(options: [
814-
eg.pollOption(text: 'foo', voters: [eg.selfUser.userId]),
815-
eg.pollOption(text: 'bar', voters: []),
813+
message = await preparePollMessage(optionVoterIdsPairs: [
814+
('foo', [eg.selfUser.userId]),
815+
('bar', []),
816816
]);
817817

818818
final unknownOptionKey = PollEventSubmessage.optionKey(
@@ -835,7 +835,7 @@ void main() {
835835

836836
test('ignore invalid vote op', () async {
837837
message = await preparePollMessage(
838-
options: [eg.pollOption(text: 'foo', voters: [])]);
838+
optionVoterIdsPairs: [('foo', [])]);
839839
checkPoll(message).options.deepEquals([conditionPollOption('foo')]);
840840
await store.handleEvent(eg.submessageEvent(message.id, eg.otherUser.userId,
841841
content: PollVoteEventSubmessage(

0 commit comments

Comments
 (0)