Skip to content

Commit 6fff765

Browse files
PIG208gnprice
authored andcommitted
internal_link test [nfc]: Re-home narrow link tests
Signed-off-by: Zixuan James Li <[email protected]>
1 parent 9f3a497 commit 6fff765

File tree

2 files changed

+94
-96
lines changed

2 files changed

+94
-96
lines changed

test/model/compose_test.dart

Lines changed: 0 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import 'package:checks/checks.dart';
22
import 'package:test/scaffolding.dart';
33
import 'package:zulip/model/compose.dart';
4-
import 'package:zulip/model/narrow.dart';
5-
import 'package:zulip/model/internal_link.dart';
64

75
import '../example_data.dart' as eg;
86
import 'test_store.dart';
@@ -222,100 +220,6 @@ hello
222220
});
223221
});
224222

225-
group('narrowLink', () {
226-
test('CombinedFeedNarrow', () {
227-
final store = eg.store();
228-
check(narrowLink(store, const CombinedFeedNarrow()))
229-
.equals(store.realmUrl.resolve('#narrow'));
230-
check(narrowLink(store, const CombinedFeedNarrow(), nearMessageId: 1))
231-
.equals(store.realmUrl.resolve('#narrow/near/1'));
232-
});
233-
234-
test('MentionsNarrow', () {
235-
final store = eg.store();
236-
check(narrowLink(store, const MentionsNarrow()))
237-
.equals(store.realmUrl.resolve('#narrow/is/mentioned'));
238-
check(narrowLink(store, const MentionsNarrow(), nearMessageId: 1))
239-
.equals(store.realmUrl.resolve('#narrow/is/mentioned/near/1'));
240-
});
241-
242-
test('StarredMessagesNarrow', () {
243-
final store = eg.store();
244-
check(narrowLink(store, const StarredMessagesNarrow()))
245-
.equals(store.realmUrl.resolve('#narrow/is/starred'));
246-
check(narrowLink(store, const StarredMessagesNarrow(), nearMessageId: 1))
247-
.equals(store.realmUrl.resolve('#narrow/is/starred/near/1'));
248-
});
249-
250-
test('ChannelNarrow / TopicNarrow', () {
251-
void checkNarrow(String expectedFragment, {
252-
required int streamId,
253-
required String name,
254-
String? topic,
255-
int? nearMessageId,
256-
}) async {
257-
assert(expectedFragment.startsWith('#'), 'wrong-looking expectedFragment');
258-
final store = eg.store();
259-
await store.addStream(eg.stream(streamId: streamId, name: name));
260-
final narrow = topic == null
261-
? ChannelNarrow(streamId)
262-
: TopicNarrow(streamId, topic);
263-
check(narrowLink(store, narrow, nearMessageId: nearMessageId))
264-
.equals(store.realmUrl.resolve(expectedFragment));
265-
}
266-
267-
checkNarrow(streamId: 1, name: 'announce', '#narrow/stream/1-announce');
268-
checkNarrow(streamId: 378, name: 'api design', '#narrow/stream/378-api-design');
269-
checkNarrow(streamId: 391, name: 'Outreachy', '#narrow/stream/391-Outreachy');
270-
checkNarrow(streamId: 415, name: 'chat.zulip.org', '#narrow/stream/415-chat.2Ezulip.2Eorg');
271-
checkNarrow(streamId: 419, name: 'français', '#narrow/stream/419-fran.C3.A7ais');
272-
checkNarrow(streamId: 403, name: 'Hshs[™~}(.', '#narrow/stream/403-Hshs.5B.E2.84.A2~.7D.28.2E');
273-
checkNarrow(streamId: 60, name: 'twitter', nearMessageId: 1570686, '#narrow/stream/60-twitter/near/1570686');
274-
275-
checkNarrow(streamId: 48, name: 'mobile', topic: 'Welcome screen UI',
276-
'#narrow/stream/48-mobile/topic/Welcome.20screen.20UI');
277-
checkNarrow(streamId: 243, name: 'mobile-team', topic: 'Podfile.lock clash #F92',
278-
'#narrow/stream/243-mobile-team/topic/Podfile.2Elock.20clash.20.23F92');
279-
checkNarrow(streamId: 377, name: 'translation/zh_tw', topic: '翻譯 "stream"',
280-
'#narrow/stream/377-translation.2Fzh_tw/topic/.E7.BF.BB.E8.AD.AF.20.22stream.22');
281-
checkNarrow(streamId: 42, name: 'Outreachy 2016-2017', topic: '2017-18 Stream?', nearMessageId: 302690,
282-
'#narrow/stream/42-Outreachy-2016-2017/topic/2017-18.20Stream.3F/near/302690');
283-
});
284-
285-
test('DmNarrow', () {
286-
void checkNarrow(String expectedFragment, String legacyExpectedFragment, {
287-
required List<int> allRecipientIds,
288-
required int selfUserId,
289-
int? nearMessageId,
290-
}) {
291-
assert(expectedFragment.startsWith('#'), 'wrong-looking expectedFragment');
292-
final store = eg.store();
293-
final narrow = DmNarrow(allRecipientIds: allRecipientIds, selfUserId: selfUserId);
294-
check(narrowLink(store, narrow, nearMessageId: nearMessageId))
295-
.equals(store.realmUrl.resolve(expectedFragment));
296-
store.connection.zulipFeatureLevel = 176;
297-
check(narrowLink(store, narrow, nearMessageId: nearMessageId))
298-
.equals(store.realmUrl.resolve(legacyExpectedFragment));
299-
}
300-
301-
checkNarrow(allRecipientIds: [1], selfUserId: 1,
302-
'#narrow/dm/1-dm',
303-
'#narrow/pm-with/1-pm');
304-
checkNarrow(allRecipientIds: [1, 2], selfUserId: 1,
305-
'#narrow/dm/1,2-dm',
306-
'#narrow/pm-with/1,2-pm');
307-
checkNarrow(allRecipientIds: [1, 2, 3], selfUserId: 1,
308-
'#narrow/dm/1,2,3-group',
309-
'#narrow/pm-with/1,2,3-group');
310-
checkNarrow(allRecipientIds: [1, 2, 3, 4], selfUserId: 4,
311-
'#narrow/dm/1,2,3,4-group',
312-
'#narrow/pm-with/1,2,3,4-group');
313-
checkNarrow(allRecipientIds: [1, 2], selfUserId: 1, nearMessageId: 12345,
314-
'#narrow/dm/1,2-dm/near/12345',
315-
'#narrow/pm-with/1,2-pm/near/12345');
316-
});
317-
});
318-
319223
group('mention', () {
320224
final user = eg.user(userId: 123, fullName: 'Full Name');
321225
test('not silent', () {

test/model/internal_link_test.dart

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,100 @@ Future<PerAccountStore> setupStore({
3535
}
3636

3737
void main() {
38+
group('narrowLink', () {
39+
test('CombinedFeedNarrow', () {
40+
final store = eg.store();
41+
check(narrowLink(store, const CombinedFeedNarrow()))
42+
.equals(store.realmUrl.resolve('#narrow'));
43+
check(narrowLink(store, const CombinedFeedNarrow(), nearMessageId: 1))
44+
.equals(store.realmUrl.resolve('#narrow/near/1'));
45+
});
46+
47+
test('MentionsNarrow', () {
48+
final store = eg.store();
49+
check(narrowLink(store, const MentionsNarrow()))
50+
.equals(store.realmUrl.resolve('#narrow/is/mentioned'));
51+
check(narrowLink(store, const MentionsNarrow(), nearMessageId: 1))
52+
.equals(store.realmUrl.resolve('#narrow/is/mentioned/near/1'));
53+
});
54+
55+
test('StarredMessagesNarrow', () {
56+
final store = eg.store();
57+
check(narrowLink(store, const StarredMessagesNarrow()))
58+
.equals(store.realmUrl.resolve('#narrow/is/starred'));
59+
check(narrowLink(store, const StarredMessagesNarrow(), nearMessageId: 1))
60+
.equals(store.realmUrl.resolve('#narrow/is/starred/near/1'));
61+
});
62+
63+
test('ChannelNarrow / TopicNarrow', () {
64+
void checkNarrow(String expectedFragment, {
65+
required int streamId,
66+
required String name,
67+
String? topic,
68+
int? nearMessageId,
69+
}) async {
70+
assert(expectedFragment.startsWith('#'), 'wrong-looking expectedFragment');
71+
final store = eg.store();
72+
await store.addStream(eg.stream(streamId: streamId, name: name));
73+
final narrow = topic == null
74+
? ChannelNarrow(streamId)
75+
: TopicNarrow(streamId, topic);
76+
check(narrowLink(store, narrow, nearMessageId: nearMessageId))
77+
.equals(store.realmUrl.resolve(expectedFragment));
78+
}
79+
80+
checkNarrow(streamId: 1, name: 'announce', '#narrow/stream/1-announce');
81+
checkNarrow(streamId: 378, name: 'api design', '#narrow/stream/378-api-design');
82+
checkNarrow(streamId: 391, name: 'Outreachy', '#narrow/stream/391-Outreachy');
83+
checkNarrow(streamId: 415, name: 'chat.zulip.org', '#narrow/stream/415-chat.2Ezulip.2Eorg');
84+
checkNarrow(streamId: 419, name: 'français', '#narrow/stream/419-fran.C3.A7ais');
85+
checkNarrow(streamId: 403, name: 'Hshs[™~}(.', '#narrow/stream/403-Hshs.5B.E2.84.A2~.7D.28.2E');
86+
checkNarrow(streamId: 60, name: 'twitter', nearMessageId: 1570686, '#narrow/stream/60-twitter/near/1570686');
87+
88+
checkNarrow(streamId: 48, name: 'mobile', topic: 'Welcome screen UI',
89+
'#narrow/stream/48-mobile/topic/Welcome.20screen.20UI');
90+
checkNarrow(streamId: 243, name: 'mobile-team', topic: 'Podfile.lock clash #F92',
91+
'#narrow/stream/243-mobile-team/topic/Podfile.2Elock.20clash.20.23F92');
92+
checkNarrow(streamId: 377, name: 'translation/zh_tw', topic: '翻譯 "stream"',
93+
'#narrow/stream/377-translation.2Fzh_tw/topic/.E7.BF.BB.E8.AD.AF.20.22stream.22');
94+
checkNarrow(streamId: 42, name: 'Outreachy 2016-2017', topic: '2017-18 Stream?', nearMessageId: 302690,
95+
'#narrow/stream/42-Outreachy-2016-2017/topic/2017-18.20Stream.3F/near/302690');
96+
});
97+
98+
test('DmNarrow', () {
99+
void checkNarrow(String expectedFragment, String legacyExpectedFragment, {
100+
required List<int> allRecipientIds,
101+
required int selfUserId,
102+
int? nearMessageId,
103+
}) {
104+
assert(expectedFragment.startsWith('#'), 'wrong-looking expectedFragment');
105+
final store = eg.store();
106+
final narrow = DmNarrow(allRecipientIds: allRecipientIds, selfUserId: selfUserId);
107+
check(narrowLink(store, narrow, nearMessageId: nearMessageId))
108+
.equals(store.realmUrl.resolve(expectedFragment));
109+
store.connection.zulipFeatureLevel = 176;
110+
check(narrowLink(store, narrow, nearMessageId: nearMessageId))
111+
.equals(store.realmUrl.resolve(legacyExpectedFragment));
112+
}
113+
114+
checkNarrow(allRecipientIds: [1], selfUserId: 1,
115+
'#narrow/dm/1-dm',
116+
'#narrow/pm-with/1-pm');
117+
checkNarrow(allRecipientIds: [1, 2], selfUserId: 1,
118+
'#narrow/dm/1,2-dm',
119+
'#narrow/pm-with/1,2-pm');
120+
checkNarrow(allRecipientIds: [1, 2, 3], selfUserId: 1,
121+
'#narrow/dm/1,2,3-group',
122+
'#narrow/pm-with/1,2,3-group');
123+
checkNarrow(allRecipientIds: [1, 2, 3, 4], selfUserId: 4,
124+
'#narrow/dm/1,2,3,4-group',
125+
'#narrow/pm-with/1,2,3,4-group');
126+
checkNarrow(allRecipientIds: [1, 2], selfUserId: 1, nearMessageId: 12345,
127+
'#narrow/dm/1,2-dm/near/12345',
128+
'#narrow/pm-with/1,2-pm/near/12345');
129+
});
130+
});
131+
38132
final realmUrl = Uri.parse('https://example.com/');
39133

40134
void testExpectedNarrows(List<(String, Narrow?)> testCases, {

0 commit comments

Comments
 (0)