@@ -1279,19 +1279,47 @@ void main() {
12791279 check (done).isTrue ();
12801280 });
12811281
1282- test ('TopicAutocompleteView getStreamTopics request ' , () async {
1282+ test ('TopicAutocompleteView fetch topics once for a channel ' , () async {
12831283 final store = eg.store ();
12841284 final connection = store.connection as FakeApiConnection ;
12851285
1286- connection.prepare (json: GetStreamTopicsResult (
1287- topics: [eg.getStreamTopicsEntry (name: '' )],
1288- ).toJson ());
1289- TopicAutocompleteView .init (store: store, streamId: 1000 ,
1290- query: TopicAutocompleteQuery ('foo' ));
1291- check (connection.lastRequest).isA< http.Request > ()
1286+ final topic1 = eg.getStreamTopicsEntry (maxId: 20 , name: 'server releases' );
1287+ final topic2 = eg.getStreamTopicsEntry (maxId: 10 , name: 'mobile releases' );
1288+
1289+ connection.prepare (json: GetStreamTopicsResult (topics: [topic1, topic2]).toJson ());
1290+ final view1 = TopicAutocompleteView .init (store: store, streamId: 1000 ,
1291+ query: TopicAutocompleteQuery ('' ));
1292+ bool done = false ;
1293+ view1.addListener (() { done = true ; });
1294+
1295+ check (connection.takeRequests ()).last.isA< http.Request > ()
12921296 ..method.equals ('GET' )
12931297 ..url.path.equals ('/api/v1/users/me/1000/topics' )
12941298 ..url.queryParameters['allow_empty_topic_name' ].equals ('true' );
1299+
1300+ await Future (() {});
1301+ await Future (() {});
1302+ check (done).isTrue ();
1303+ check (view1.results).deepEquals ([isTopic (topic1.name), isTopic (topic2.name)]);
1304+
1305+ view1.query = TopicAutocompleteQuery ('server' );
1306+ await Future (() {});
1307+ check (connection.takeRequests ()).isEmpty ();
1308+ check (view1.results).single.which (isTopic (topic1.name));
1309+ view1.dispose ();
1310+
1311+ connection.prepare (json: GetStreamTopicsResult (topics: [topic1]).toJson ());
1312+ final view2 = TopicAutocompleteView .init (store: store, streamId: 1000 ,
1313+ query: TopicAutocompleteQuery ('mobile' ));
1314+ done = false ;
1315+ view2.addListener (() { done = true ; });
1316+
1317+ check (connection.takeRequests ()).isEmpty ();
1318+
1319+ await Future (() {});
1320+ await Future (() {});
1321+ check (done).isTrue ();
1322+ check (view2.results).single.which (isTopic (topic2.name));
12951323 });
12961324
12971325 group ('TopicAutocompleteQuery.testTopic' , () {
0 commit comments