delete_sub: Do not remove archived stream when deactivated.

Stream is simply marked as `archived: true` instead of removing
the stream from `sub_store` and `stream_info`.

A check in `subscribe_myself` is added before subscribing to a
stream.
This commit is contained in:
sanchi-t
2024-07-02 00:49:22 +05:30
committed by Tim Abbott
parent fa268877d3
commit a29b6485d6
5 changed files with 35 additions and 6 deletions

View File

@@ -579,24 +579,32 @@ test("default_stream_names", () => {
test("delete_sub", () => {
const canada = {
is_archived: false,
stream_id: 101,
name: "Canada",
subscribed: true,
};
stream_data.add_sub(canada);
const num_subscribed_subs = stream_data.num_subscribed_subs();
assert.ok(stream_data.is_subscribed(canada.stream_id));
assert.equal(stream_data.get_sub("Canada").stream_id, canada.stream_id);
assert.equal(sub_store.get(canada.stream_id).name, "Canada");
assert.equal(stream_data.is_stream_archived(canada.stream_id), false);
stream_data.delete_sub(canada.stream_id);
assert.ok(!stream_data.is_subscribed(canada.stream_id));
assert.ok(!stream_data.get_sub("Canada"));
assert.ok(!sub_store.get(canada.stream_id));
assert.ok(stream_data.is_stream_archived(canada.stream_id));
assert.ok(stream_data.is_subscribed(canada.stream_id));
assert.ok(stream_data.get_sub("Canada"));
assert.ok(sub_store.get(canada.stream_id));
assert.equal(stream_data.num_subscribed_subs(), num_subscribed_subs - 1);
blueslip.expect("warn", "Failed to archive stream 99999");
stream_data.delete_sub(99999);
blueslip.expect("warn", "Can't subscribe to an archived stream.");
stream_data.subscribe_myself(canada);
});
test("notifications", ({override}) => {