ActivityPub Utils: Greatly speed up the follow / block activity fetching.
[akkoma] / test / flake_id_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.FlakeIdTest do
6 use Pleroma.DataCase
7 import Kernel, except: [to_string: 1]
8 import Pleroma.FlakeId
9
10 describe "fake flakes (compatibility with older serial integers)" do
11 test "from_string/1" do
12 fake_flake = <<0::integer-size(64), 42::integer-size(64)>>
13 assert from_string("42") == fake_flake
14 assert from_string(42) == fake_flake
15 end
16
17 test "zero or -1 is a null flake" do
18 fake_flake = <<0::integer-size(128)>>
19 assert from_string("0") == fake_flake
20 assert from_string("-1") == fake_flake
21 end
22
23 test "to_string/1" do
24 fake_flake = <<0::integer-size(64), 42::integer-size(64)>>
25 assert to_string(fake_flake) == "42"
26 end
27 end
28
29 test "ecto type behaviour" do
30 flake = <<0, 0, 1, 104, 80, 229, 2, 235, 140, 22, 69, 201, 53, 210, 0, 0>>
31 flake_s = "9eoozpwTul5mjSEDRI"
32
33 assert cast(flake) == {:ok, flake_s}
34 assert cast(flake_s) == {:ok, flake_s}
35
36 assert load(flake) == {:ok, flake_s}
37 assert load(flake_s) == {:ok, flake_s}
38
39 assert dump(flake_s) == {:ok, flake}
40 assert dump(flake) == {:ok, flake}
41 end
42 end