play-of-the-game/shared/test/shared_test.gleam
2025-05-03 14:16:22 -06:00

48 lines
1.2 KiB
Gleam

import gleam/json
import gleeunit
import gleeunit/should
import player
import session
pub fn main() {
gleeunit.main()
}
pub fn serialize_player_test() {
player.Player("CoolZero123", 55, 0)
|> player.serialize
|> should.equal([
#("name", json.string("CoolZero123")),
#("id", json.int(55)),
#("score", json.int(0)),
])
}
pub fn decoder_player_test() {
let decoder = player.decoder()
let input_str = "{\"name\": \"CoolZero123\", \"id\": 55, \"score\": 0}"
let assert Ok(player) = json.parse(from: input_str, using: decoder)
should.equal(player.name, "CoolZero123")
should.equal(player.id, 55)
should.equal(player.score, 0)
}
pub fn serialzie_session_test() {
session.Session(2, 55, [player.Player("CoolZero123", 55, 0)])
|> session.serialize
|> json.to_string
|> should.equal(
"{\"id\":2,\"host_user_id\":55,\"players\":[{\"name\":\"CoolZero123\",\"id\":55,\"score\":0}]}",
)
}
pub fn desarlize_session_test() {
let input_str =
"{\"id\":2,\"host_user_id\":55,\"players\":[{\"name\":\"CoolZero123\",\"id\":55,\"score\":0}]}"
let assert Ok(s) = session.deseralize(input_str)
should.equal(s, session.Session(2, 55, [player.Player("CoolZero123", 55, 0)]))
}