1
1
// ignore_for_file: lines_longer_than_80_chars
2
2
3
+ import 'package:desktop_drop/desktop_drop.dart' ;
3
4
import 'package:flutter/material.dart' ;
4
5
import 'package:flutter/services.dart' ;
5
6
import 'package:flutter_test/flutter_test.dart' ;
@@ -13,67 +14,8 @@ void main() {
13
14
testWidgets (
14
15
'checks message input features' ,
15
16
(WidgetTester tester) async {
16
- final client = MockClient ();
17
- final clientState = MockClientState ();
18
- final channel = MockChannel ();
19
- final channelState = MockChannelState ();
20
- final lastMessageAt = DateTime .parse ('2020-06-22 12:00:00' );
21
-
22
- when (() => client.state).thenReturn (clientState);
23
- when (() => clientState.currentUser).thenReturn (OwnUser (id: 'user-id' ));
24
- when (() => channel.lastMessageAt).thenReturn (lastMessageAt);
25
- when (() => channel.state).thenReturn (channelState);
26
- when (() => channel.client).thenReturn (client);
27
- when (channel.getRemainingCooldown).thenReturn (0 );
28
- when (() => channel.isMuted).thenReturn (false );
29
- when (() => channel.isMutedStream).thenAnswer ((i) => Stream .value (false ));
30
- when (() => channel.extraDataStream).thenAnswer (
31
- (i) => Stream .value ({
32
- 'name' : 'test' ,
33
- }),
34
- );
35
- when (() => channel.extraData).thenReturn ({
36
- 'name' : 'test' ,
37
- });
38
- when (() => channelState.membersStream).thenAnswer (
39
- (i) => Stream .value ([
40
- Member (
41
- userId: 'user-id' ,
42
- user: User (id: 'user-id' ),
43
- )
44
- ]),
45
- );
46
- when (() => channelState.members).thenReturn ([
47
- Member (
48
- userId: 'user-id' ,
49
- user: User (id: 'user-id' ),
50
- ),
51
- ]);
52
- when (() => channelState.messages).thenReturn ([
53
- Message (
54
- text: 'hello' ,
55
- user: User (id: 'other-user' ),
56
- )
57
- ]);
58
- when (() => channelState.messagesStream).thenAnswer (
59
- (i) => Stream .value ([
60
- Message (
61
- text: 'hello' ,
62
- user: User (id: 'other-user' ),
63
- )
64
- ]),
65
- );
66
-
67
- await tester.pumpWidget (MaterialApp (
68
- home: StreamChat (
69
- client: client,
70
- child: StreamChannel (
71
- channel: channel,
72
- child: const Scaffold (
73
- body: StreamMessageInput (),
74
- ),
75
- ),
76
- ),
17
+ await tester.pumpWidget (buildWidget (
18
+ const StreamMessageInput (),
77
19
));
78
20
79
21
// wait for the initial state to be rendered.
@@ -159,6 +101,53 @@ void main() {
159
101
},
160
102
);
161
103
104
+ testWidgets (
105
+ 'allows setting padding on message input' ,
106
+ (WidgetTester tester) async {
107
+ await tester.pumpWidget (
108
+ buildWidget (
109
+ const StreamMessageInput (
110
+ padding: EdgeInsets .only (left: 50 ),
111
+ ),
112
+ ),
113
+ );
114
+
115
+ // wait for the initial state to be rendered.
116
+ await tester.pumpAndSettle ();
117
+
118
+ expect (
119
+ find.descendant (
120
+ of: find.byType (StreamMessageValueListenableBuilder ),
121
+ matching: find.byWidgetPredicate ((w) =>
122
+ w is Padding &&
123
+ w.padding == const EdgeInsets .only (left: 50 ))),
124
+ findsOneWidget);
125
+ },
126
+ );
127
+
128
+ testWidgets (
129
+ 'allows setting explicit margin on text field' ,
130
+ (WidgetTester tester) async {
131
+ await tester.pumpWidget (
132
+ buildWidget (
133
+ const StreamMessageInput (
134
+ textInputMargin: EdgeInsets .only (left: 50 ),
135
+ ),
136
+ ),
137
+ );
138
+ // wait for the initial state to be rendered.
139
+ await tester.pumpAndSettle ();
140
+
141
+ expect (
142
+ find.descendant (
143
+ of: find.byType (DropTarget ),
144
+ matching: find.byWidgetPredicate ((w) =>
145
+ w is Container &&
146
+ w.margin == const EdgeInsets .only (left: 50 ))),
147
+ findsOneWidget);
148
+ },
149
+ );
150
+
162
151
group ('MessageInput keyboard interactions' , () {
163
152
final client = MockClient ();
164
153
final clientState = MockClientState ();
@@ -525,6 +514,69 @@ void main() {
525
514
});
526
515
}
527
516
517
+ MaterialApp buildWidget (StreamMessageInput input) {
518
+ final client = MockClient ();
519
+ final clientState = MockClientState ();
520
+ final channel = MockChannel ();
521
+ final channelState = MockChannelState ();
522
+ final lastMessageAt = DateTime .parse ('2020-06-22 12:00:00' );
523
+
524
+ when (() => client.state).thenReturn (clientState);
525
+ when (() => clientState.currentUser).thenReturn (OwnUser (id: 'user-id' ));
526
+ when (() => channel.lastMessageAt).thenReturn (lastMessageAt);
527
+ when (() => channel.state).thenReturn (channelState);
528
+ when (() => channel.client).thenReturn (client);
529
+ when (channel.getRemainingCooldown).thenReturn (0 );
530
+ when (() => channel.isMuted).thenReturn (false );
531
+ when (() => channel.isMutedStream).thenAnswer ((i) => Stream .value (false ));
532
+ when (() => channel.extraDataStream).thenAnswer (
533
+ (i) => Stream .value ({
534
+ 'name' : 'test' ,
535
+ }),
536
+ );
537
+ when (() => channel.extraData).thenReturn ({
538
+ 'name' : 'test' ,
539
+ });
540
+ when (() => channelState.membersStream).thenAnswer (
541
+ (i) => Stream .value ([
542
+ Member (
543
+ userId: 'user-id' ,
544
+ user: User (id: 'user-id' ),
545
+ )
546
+ ]),
547
+ );
548
+ when (() => channelState.members).thenReturn ([
549
+ Member (
550
+ userId: 'user-id' ,
551
+ user: User (id: 'user-id' ),
552
+ ),
553
+ ]);
554
+ when (() => channelState.messages).thenReturn ([
555
+ Message (
556
+ text: 'hello' ,
557
+ user: User (id: 'other-user' ),
558
+ )
559
+ ]);
560
+ when (() => channelState.messagesStream).thenAnswer (
561
+ (i) => Stream .value ([
562
+ Message (
563
+ text: 'hello' ,
564
+ user: User (id: 'other-user' ),
565
+ )
566
+ ]),
567
+ );
568
+
569
+ return MaterialApp (
570
+ home: StreamChat (
571
+ client: client,
572
+ child: StreamChannel (
573
+ channel: channel,
574
+ child: Scaffold (body: input),
575
+ ),
576
+ ),
577
+ );
578
+ }
579
+
528
580
// Helper function to simulate key press events
529
581
Future <void > simulateKeyDownEvent (
530
582
LogicalKeyboardKey key, {
0 commit comments