namespace WoofWare.Myriad.Plugins.Test open System open System.Text.Json.Nodes open NUnit.Framework open FsUnitTyped open PureGym [] module TestPureGymJson = let gymOpeningHoursCases = PureGymDtos.gymOpeningHoursCases |> List.map TestCaseData [] let ``GymOpeningHours JSON parse`` (json : string, expected : GymOpeningHours) = JsonNode.Parse json |> GymOpeningHours.jsonParse |> shouldEqual expected let gymAccessOptionsCases = PureGymDtos.gymAccessOptionsCases |> List.map TestCaseData [] let ``GymAccessOptions JSON parse`` (json : string, expected : GymAccessOptions) = JsonNode.Parse json |> GymAccessOptions.jsonParse |> shouldEqual expected let gymLocationCases = PureGymDtos.gymLocationCases |> List.map TestCaseData [] let ``GymLocation JSON parse`` (json : string, expected : GymLocation) = JsonNode.Parse json |> GymLocation.jsonParse |> shouldEqual expected let gymAddressCases = PureGymDtos.gymAddressCases |> List.map TestCaseData [] let ``GymAddress JSON parse`` (json : string, expected : GymAddress) = JsonNode.Parse (json, Nullable (JsonNodeOptions (PropertyNameCaseInsensitive = true))) |> GymAddress.jsonParse |> shouldEqual expected let gymCases = PureGymDtos.gymCases |> List.map TestCaseData [] let ``Gym JSON parse`` (json : string, expected : Gym) = JsonNode.Parse json |> Gym.jsonParse |> shouldEqual expected let memberCases = PureGymDtos.memberCases |> List.map TestCaseData [] let ``Member JSON parse`` (json : string, expected : Member) = json |> JsonNode.Parse |> Member.jsonParse |> shouldEqual expected let gymAttendanceCases = PureGymDtos.gymAttendanceCases |> List.map TestCaseData [] let ``GymAttendance JSON parse`` (json : string, expected : GymAttendance) = json |> JsonNode.Parse |> GymAttendance.jsonParse |> shouldEqual expected let memberActivityDtoCases = PureGymDtos.memberActivityDtoCases |> List.map TestCaseData [] let ``MemberActivityDto JSON parse`` (json : string, expected : MemberActivityDto) = json |> JsonNode.Parse |> MemberActivityDto.jsonParse |> shouldEqual expected let sessionsCases = PureGymDtos.sessionsCases |> List.map TestCaseData [] let ``Sessions JSON parse`` (json : string, expected : Sessions) = json |> fun o -> JsonNode.Parse (o, Nullable (JsonNodeOptions (PropertyNameCaseInsensitive = true))) |> Sessions.jsonParse |> shouldEqual expected