defmodule LastFm.SessionTest do use ExUnit.Case, async: true doctest LastFm.Session alias LastFm.Session describe "parse/1" do test "non-subscriber XML" do xml = """ freeuser free-key-123 0 """ assert Session.parse(xml) == %Session{ name: "freeuser", key: "free-key-123", pro: false } end test "missing subscriber node defaults pro to false" do xml = """ basicuser basic-key-456 """ assert Session.parse(xml) == %Session{ name: "basicuser", key: "basic-key-456", pro: false } end test "missing name node returns nil name" do xml = """ some-key 1 """ assert Session.parse(xml) == %Session{ name: nil, key: "some-key", pro: true } end test "missing key node returns nil key" do xml = """ mysteryuser 0 """ assert Session.parse(xml) == %Session{ name: "mysteryuser", key: nil, pro: false } end test "missing both name and key nodes returns nil values" do xml = """ 1 """ assert Session.parse(xml) == %Session{ name: nil, key: nil, pro: true } end end end