nostr-1.3.0.0: test/Test/Nostr/Nip65Spec.hs
{-# LANGUAGE OverloadedStrings #-}
module Test.Nostr.Nip65Spec (spec) where
import Test.Hspec
import Nostr.Nip65
spec :: Spec
spec = do
describe "Nostr.Nip65" $ do
describe "Tag Parsing and Creation" $ do
it "creates tag for BothMarker" $ do
let entry = RelayListEntry "wss://relay.damus.io" BothMarker
mkRelayListTag entry `shouldBe` ["r", "wss://relay.damus.io"]
it "creates tag for ReadMarker" $ do
let entry = RelayListEntry "wss://relay.damus.io" ReadMarker
mkRelayListTag entry `shouldBe` ["r", "wss://relay.damus.io", "read"]
it "creates tag for WriteMarker" $ do
let entry = RelayListEntry "wss://relay.damus.io" WriteMarker
mkRelayListTag entry `shouldBe` ["r", "wss://relay.damus.io", "write"]
it "parses tag for BothMarker" $ do
let tag = ["r", "wss://relay.damus.io"]
parseRelayListTag tag `shouldBe` Just (RelayListEntry "wss://relay.damus.io" BothMarker)
it "parses tag for ReadMarker" $ do
let tag = ["r", "wss://relay.damus.io", "read"]
parseRelayListTag tag `shouldBe` Just (RelayListEntry "wss://relay.damus.io" ReadMarker)
it "parses tag for WriteMarker" $ do
let tag = ["r", "wss://relay.damus.io", "write"]
parseRelayListTag tag `shouldBe` Just (RelayListEntry "wss://relay.damus.io" WriteMarker)
it "rejects invalid tags" $ do
parseRelayListTag ["p", "pubkey"] `shouldBe` Nothing
parseRelayListTag ["r", "url", "invalid-marker"] `shouldBe` Nothing
parseRelayListTag ["r"] `shouldBe` Nothing