diff --git a/src/__tests__/lib/exampleData.js b/src/__tests__/lib/exampleData.js index 73382e11004..57743d88551 100644 --- a/src/__tests__/lib/exampleData.js +++ b/src/__tests__/lib/exampleData.js @@ -80,16 +80,16 @@ const makeTime: () => number = (() => { * The factory will throw if it ever runs out of integers in its set. Both * initialization and use should be O(1). */ -const makeUniqueRandInt = (itemsType: string, end: number): (() => number) => { +const makeUniqueRandInt = (itemsType: string, end: number, start: number = 0): (() => number) => { // Sparse array. Pretends to be initialized to iota. const deck = new Array(end); return () => { - if (deck.length === 0) { + if (deck.length === start) { throw new Error(`ran out of ${itemsType}`); } // Perform a single step of the Fisher-Yates shuffle... - const leftIndex = randInt(deck.length); + const leftIndex = randInt(deck.length, start); const rightIndex = deck.length - 1; const leftValue = deck[leftIndex] ?? leftIndex; const rightValue = deck[rightIndex] ?? rightIndex; @@ -142,10 +142,12 @@ const makeAvatarUrl = (tag: string) => // here with a full-blown URL object in the first place to prevent that. new UploadedAvatarURL(new URL(`https://zulip.example.org/yo/avatar-${tag}.png`)); +// Why start at 11? To reserve IDs 1 through 10 for use as constants in +// snapshot tests. const randUserId: () => UserId = ( mk => () => makeUserId(mk()) -)(makeUniqueRandInt('user IDs', 10000)); +)(makeUniqueRandInt('user IDs', 10000, 11)); const userOrBotProperties = (args: UserOrBotPropertiesArgs) => { const user_id = args.user_id != null ? makeUserId(args.user_id) : randUserId(); const randName = randString(); @@ -288,7 +290,9 @@ export const crossRealmBot: CrossRealmBot = makeCrossRealmBot({ * Streams and subscriptions */ -const randStreamId: () => number = makeUniqueRandInt('stream IDs', 1000); +// Why start at 11? To reserve IDs 1 through 10 for use as constants in +// snapshot tests. +const randStreamId: () => number = makeUniqueRandInt('stream IDs', 1000, 11); export const makeStream = ( args: {| stream_id?: number, @@ -418,7 +422,9 @@ const messagePropertiesFromSender = (user: User) => { }); }; -const randMessageId: () => number = makeUniqueRandInt('message ID', 10000000); +// Why start at 11? To reserve IDs 1 through 10 for use as constants in +// snapshot tests. +const randMessageId: () => number = makeUniqueRandInt('message ID', 10000000, 11); /** * A PM, by default a 1:1 from eg.otherUser to eg.selfUser. diff --git a/src/utils/misc.js b/src/utils/misc.js index 5527bd095fa..9df34cd0952 100644 --- a/src/utils/misc.js +++ b/src/utils/misc.js @@ -29,8 +29,9 @@ export function deeperMerge( export const isValidEmailFormat = (email: string = ''): boolean => /\S+@\S+\.\S+/.test(email); -/** Return an integer 0 <= N < end, roughly uniformly at random. */ -export const randInt = (end: number): number => Math.floor(Math.random() * end); +/** Return an integer start <= N < end, roughly uniformly at random. */ +export const randInt = (end: number, start: number = 0): number => + Math.floor(Math.random() * (end - start) + start); /** Return a string that's almost surely different every time. */ export const randString = (): string => randInt(2 ** 54).toString(36); diff --git a/src/webview/__tests__/__snapshots__/generateInboundEventEditSequence-test.js.snap.android b/src/webview/__tests__/__snapshots__/generateInboundEventEditSequence-test.js.snap.android index e6367265f16..b101919a1da 100644 --- a/src/webview/__tests__/__snapshots__/generateInboundEventEditSequence-test.js.snap.android +++ b/src/webview/__tests__/__snapshots__/generateInboundEventEditSequence-test.js.snap.android @@ -1527,18 +1527,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible all-pm `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message in unsubscribed stream 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1559,18 +1559,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with a poll 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1601,18 +1601,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: collapsed 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1633,18 +1633,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: force_collapse 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1665,18 +1665,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: force_expand 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1697,18 +1697,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: has_alert_word 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1729,18 +1729,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: historical 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1761,18 +1761,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: is_me_message 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1793,18 +1793,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: mentioned 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1825,18 +1825,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: read 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1857,18 +1857,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: starred 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1889,18 +1889,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: summarize_in_home 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1921,18 +1921,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: summarize_in_stream 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1953,18 +1953,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: wildcard_mentioned 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1985,18 +1985,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with reactions 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -2017,18 +2017,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) muted sender 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -2051,18 +2051,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) sender status emoji: none 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -2083,18 +2083,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) sender status emoji: realm 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -2115,18 +2115,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) sender status emoji: unicode 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -2147,18 +2147,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) sender status emoji: zulip extra 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
diff --git a/src/webview/__tests__/__snapshots__/generateInboundEventEditSequence-test.js.snap.ios b/src/webview/__tests__/__snapshots__/generateInboundEventEditSequence-test.js.snap.ios index e6367265f16..b101919a1da 100644 --- a/src/webview/__tests__/__snapshots__/generateInboundEventEditSequence-test.js.snap.ios +++ b/src/webview/__tests__/__snapshots__/generateInboundEventEditSequence-test.js.snap.ios @@ -1527,18 +1527,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible all-pm `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message in unsubscribed stream 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1559,18 +1559,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with a poll 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1601,18 +1601,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: collapsed 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1633,18 +1633,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: force_collapse 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1665,18 +1665,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: force_expand 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1697,18 +1697,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: has_alert_word 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1729,18 +1729,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: historical 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1761,18 +1761,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: is_me_message 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1793,18 +1793,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: mentioned 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1825,18 +1825,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: read 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1857,18 +1857,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: starred 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1889,18 +1889,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: summarize_in_home 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1921,18 +1921,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: summarize_in_stream 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1953,18 +1953,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with flag: wildcard_mentioned 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -1985,18 +1985,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) message with reactions 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -2017,18 +2017,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) muted sender 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -2051,18 +2051,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) sender status emoji: none 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -2083,18 +2083,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) sender status emoji: realm 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -2115,18 +2115,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) sender status emoji: unicode 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
@@ -2147,18 +2147,18 @@ exports[`messages -> piece descriptors -> content HTML is stable/sensible other `; exports[`messages -> piece descriptors -> content HTML is stable/sensible other interesting cases (single messages) sender status emoji: zulip extra 1`] = ` -"
+"
Dec 31, 1969
-
+
# stream 1
example topic
Dec 31, 1969
-
+
\\"Nonrandom
diff --git a/src/webview/__tests__/generateInboundEventEditSequence-test.js b/src/webview/__tests__/generateInboundEventEditSequence-test.js index dfd6677cd3a..347d2f539cb 100644 --- a/src/webview/__tests__/generateInboundEventEditSequence-test.js +++ b/src/webview/__tests__/generateInboundEventEditSequence-test.js @@ -424,7 +424,7 @@ describe('messages -> piece descriptors -> content HTML is stable/sensible', () full_name: 'Nonrandom name sender User', }); const baseSingleMessage = eg.streamMessage({ - id: -1, + id: 1, timestamp: -1, stream: stream1, sender: singleMessageSender,