🐀 ATproto library for gleam
atproto library gleam
34

Configure Feed

Select the types of activity you want to include in your feed.

test: add tests for handle parsing

kacaii.dev (Jul 11, 2026, 11:31 AM -0300) a49905d8 836176d9

+68
+68
test/possum_test/handle_test.gleam
··· 1 + import gleam/list 2 + import possum/handle 3 + 4 + pub fn parse_test() -> Nil { 5 + // syntactically valid examples 6 + let assert Ok(_) = 7 + list.try_fold( 8 + [ 9 + "jay.bsky.social", 10 + "8.cn", 11 + "name.t--t", 12 + "XX.LCS.MIT.EDU", 13 + "a.co", 14 + "xn--notarealidn.com", 15 + "xn--fiqa61au8b7zsevnm8ak20mc4a87e.xn--fiqs8s", 16 + "xn--ls8h.test", 17 + "example.t", 18 + ], 19 + Nil, 20 + fn(_, item) { 21 + case handle.parse(item) { 22 + Ok(_) -> Ok(Nil) 23 + Error(err) -> Error(err) 24 + } 25 + }, 26 + ) 27 + 28 + // invalid syntax 29 + let assert Error(handle.InvalidSyntax(_)) = 30 + list.try_fold( 31 + [ 32 + "jo@hn.test", 33 + "💩.test", 34 + "john..test", 35 + "xn--bcher-.tld", 36 + "john.0", 37 + "cn.8", 38 + "www.masełkowski.pl.com", 39 + "org", 40 + "name.org.", 41 + ], 42 + Nil, 43 + fn(_, item) { 44 + case handle.parse(item) { 45 + Ok(_) -> Ok(Nil) 46 + Error(err) -> Error(err) 47 + } 48 + }, 49 + ) 50 + 51 + // valid syntax, but domain is not allowed 52 + let assert Error(handle.DisallowedTopLevelDomain(_)) = 53 + list.try_fold( 54 + [ 55 + "2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion", 56 + "laptop.local", 57 + "blah.arpa", 58 + ], 59 + Nil, 60 + fn(_, item) { 61 + case handle.parse(item) { 62 + Ok(_) -> Ok(Nil) 63 + Error(err) -> Error(err) 64 + } 65 + }, 66 + ) 67 + Nil 68 + }