8e969fd1ce1aa94970519af2a3a86dcbda5d2b01
[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 end
15
16 test "zero or -1 is a null flake" do
17 fake_flake = <<0::integer-size(128)>>
18 assert from_string("0") == fake_flake
19 assert from_string("-1") == fake_flake
20 end
21
22 test "to_string/1" do
23 fake_flake = <<0::integer-size(64), 42::integer-size(64)>>
24 assert to_string(fake_flake) == "42"
25 end
26 end
27
28 test "ecto type behaviour" do
29 flake = <<0, 0, 1, 104, 80, 229, 2, 235, 140, 22, 69, 201, 53, 210, 0, 0>>
30 flake_s = "9eoozpwTul5mjSEDRI"
31
32 assert cast(flake) == {:ok, flake_s}
33 assert cast(flake_s) == {:ok, flake_s}
34
35 assert load(flake) == {:ok, flake_s}
36 assert load(flake_s) == {:ok, flake_s}
37
38 assert dump(flake_s) == {:ok, flake}
39 assert dump(flake) == {:ok, flake}
40 end
41 end