mirror of
https://github.com/Smaug123/WoofWare.Myriad
synced 2025-10-05 12:08:46 +00:00
265 lines
11 KiB
Forth
265 lines
11 KiB
Forth
namespace WoofWare.Myriad.Plugins.Test
|
|
|
|
open PureGym
|
|
open System
|
|
|
|
[<RequireQualifiedAccess>]
|
|
module PureGymDtos =
|
|
|
|
let gymOpeningHoursCases =
|
|
[
|
|
"""{"openingHours": [], "isAlwaysOpen": false}""",
|
|
{
|
|
GymOpeningHours.OpeningHours = []
|
|
IsAlwaysOpen = false
|
|
}
|
|
"""{"openingHours": ["something"], "isAlwaysOpen": false}""",
|
|
{
|
|
GymOpeningHours.OpeningHours = [ "something" ]
|
|
IsAlwaysOpen = false
|
|
}
|
|
]
|
|
|
|
let gymAccessOptionsCases =
|
|
List.allPairs [ true ; false ] [ true ; false ]
|
|
|> List.map (fun (a, b) ->
|
|
let s = sprintf """{"pinAccess": %b, "qrCodeAccess": %b}""" a b
|
|
|
|
s,
|
|
{
|
|
GymAccessOptions.PinAccess = a
|
|
QrCodeAccess = b
|
|
}
|
|
)
|
|
|
|
let gymAddressCases =
|
|
[
|
|
"""{"addressLine1": "", "postCode": "hi", "town": ""}""",
|
|
{
|
|
GymAddress.AddressLine1 = ""
|
|
AddressLine2 = None
|
|
AddressLine3 = None
|
|
County = None
|
|
Postcode = "hi"
|
|
Town = ""
|
|
}
|
|
"""{"addressLine1": "", "addressLine2": null, "postCode": "hi", "town": ""}""",
|
|
{
|
|
GymAddress.AddressLine1 = ""
|
|
AddressLine2 = None
|
|
AddressLine3 = None
|
|
County = None
|
|
Postcode = "hi"
|
|
Town = ""
|
|
}
|
|
]
|
|
|
|
let gymLocationCases =
|
|
[
|
|
"""{"latitude": 1.0, "longitude": 3.0}""",
|
|
{
|
|
GymLocation.Latitude = 1.0<measure>
|
|
Longitude = 3.0
|
|
}
|
|
]
|
|
|
|
let gymCases =
|
|
let ovalJson =
|
|
"""{"name":"London Oval","id":19,"status":2,"address":{"addressLine1":"Canterbury Court","addressLine2":"Units 4, 4A, 5 And 5A","addressLine3":"Kennington Park","town":"LONDON","county":null,"postcode":"SW9 6DE"},"phoneNumber":"+44 3444770005","emailAddress":"info.londonoval@puregym.com","staffMembers":null,"gymOpeningHours":{"isAlwaysOpen":true,"openingHours":[]},"reasonsToJoin":null,"accessOptions":{"pinAccess":true,"qrCodeAccess":true},"virtualTourUrl":null,"personalTrainersUrl":null,"webViewUrl":null,"floorPlanUrl":null,"location":{"longitude":"-0.110252","latitude":"51.480401"},"timeZone":"Europe/London","reopenDate":"2021-04-12T00:00:00+01 Europe/London"}"""
|
|
|
|
let oval =
|
|
{
|
|
Gym.Name = "London Oval"
|
|
Id = 19
|
|
Status = 2
|
|
Address =
|
|
{
|
|
AddressLine1 = "Canterbury Court"
|
|
AddressLine2 = Some "Units 4, 4A, 5 And 5A"
|
|
AddressLine3 = Some "Kennington Park"
|
|
Town = "LONDON"
|
|
County = None
|
|
Postcode = "SW9 6DE"
|
|
}
|
|
PhoneNumber = "+44 3444770005"
|
|
EmailAddress = "info.londonoval@puregym.com"
|
|
GymOpeningHours =
|
|
{
|
|
IsAlwaysOpen = true
|
|
OpeningHours = []
|
|
}
|
|
AccessOptions =
|
|
{
|
|
PinAccess = true
|
|
QrCodeAccess = true
|
|
}
|
|
Location =
|
|
{
|
|
Longitude = -0.110252
|
|
Latitude = 51.480401<measure>
|
|
}
|
|
TimeZone = "Europe/London"
|
|
ReopenDate = "2021-04-12T00:00:00+01 Europe/London"
|
|
}
|
|
|
|
[ ovalJson, oval ]
|
|
|
|
let memberCases =
|
|
let me =
|
|
{
|
|
Id = 1234567
|
|
CompoundMemberId = "12A123456"
|
|
FirstName = "Patrick"
|
|
LastName = "Stevens"
|
|
HomeGymId = 19
|
|
HomeGymName = "London Oval"
|
|
EmailAddress = "someone@somewhere"
|
|
GymAccessPin = "00000000"
|
|
DateOfBirth = DateOnly (1994, 01, 02)
|
|
MobileNumber = "+44 1234567"
|
|
Postcode = "W1A 1AA"
|
|
MembershipName = "Corporate"
|
|
MembershipLevel = 12
|
|
SuspendedReason = 0
|
|
MemberStatus = 2
|
|
}
|
|
|
|
let meJson =
|
|
"""{
|
|
"id": 1234567,
|
|
"compoundMemberId": "12A123456",
|
|
"firstName": "Patrick",
|
|
"lastName": "Stevens",
|
|
"homeGymId": 19,
|
|
"homeGymName": "London Oval",
|
|
"emailAddress": "someone@somewhere",
|
|
"gymAccessPin": "00000000",
|
|
"dateofBirth": "1994-01-02",
|
|
"mobileNumber": "+44 1234567",
|
|
"postCode": "W1A 1AA",
|
|
"membershipName": "Corporate",
|
|
"membershipLevel": 12,
|
|
"suspendedReason": 0,
|
|
"memberStatus": 2
|
|
}"""
|
|
|
|
[ meJson, me ]
|
|
|
|
let gymAttendanceCases =
|
|
let json =
|
|
"""{
|
|
"description": "65",
|
|
"totalPeopleInGym": 65,
|
|
"totalPeopleInClasses": 2,
|
|
"totalPeopleSuffix": null,
|
|
"isApproximate": false,
|
|
"attendanceTime": "2023-12-27T18:54:09.5101697",
|
|
"lastRefreshed": "2023-12-27T18:54:09.5101697Z",
|
|
"lastRefreshedPeopleInClasses": "2023-12-27T18:50:26.0782286Z",
|
|
"maximumCapacity": 0
|
|
}"""
|
|
|
|
let expected =
|
|
{
|
|
Description = "65"
|
|
TotalPeopleInGym = 65
|
|
TotalPeopleInClasses = 2
|
|
TotalPeopleSuffix = None
|
|
IsApproximate = false
|
|
AttendanceTime =
|
|
DateTime (2023, 12, 27, 18, 54, 09, 510, 169, DateTimeKind.Utc)
|
|
+ TimeSpan.FromTicks 7L
|
|
LastRefreshed =
|
|
DateTime (2023, 12, 27, 18, 54, 09, 510, 169, DateTimeKind.Utc)
|
|
+ TimeSpan.FromTicks 7L
|
|
LastRefreshedPeopleInClasses =
|
|
DateTime (2023, 12, 27, 18, 50, 26, 078, 228, DateTimeKind.Utc)
|
|
+ TimeSpan.FromTicks 6L
|
|
MaximumCapacity = 0
|
|
}
|
|
|
|
[ json, expected ]
|
|
|
|
let memberActivityDtoCases =
|
|
let json =
|
|
"""{"totalDuration":2217,"averageDuration":48,"totalVisits":46,"totalClasses":0,"isEstimated":false,"lastRefreshed":"2023-12-27T19:00:56.0309892Z"}"""
|
|
|
|
let value =
|
|
{
|
|
TotalDuration = 2217
|
|
AverageDuration = 48
|
|
TotalVisits = 46
|
|
TotalClasses = 0
|
|
IsEstimated = false
|
|
LastRefreshed =
|
|
DateTime (2023, 12, 27, 19, 00, 56, 030, 989, DateTimeKind.Utc)
|
|
+ TimeSpan.FromTicks 2L
|
|
}
|
|
|
|
[ json, value ]
|
|
|
|
let sessionsCases =
|
|
let json =
|
|
"""{
|
|
"Summary":{"Total":{"Activities":0,"Visits":10,"Duration":445},"ThisWeek":{"Activities":0,"Visits":0,"Duration":0}},
|
|
"Visits":[
|
|
{"IsDurationEstimated":false,"Gym":{"Id":19,"Name":"London Oval","Status":"Blocked","Location":null,"GymAccess":null,"ContactInfo":null,"TimeZone":null},"StartTime":"2023-12-21T10:12:00","Duration":50,"Name":null},
|
|
{"IsDurationEstimated":false,"Gym":{"Id":19,"Name":"London Oval","Status":"Blocked","Location":null,"GymAccess":null,"ContactInfo":null,"TimeZone":null},"StartTime":"2023-12-20T12:05:00","Duration":80,"Name":null},
|
|
{"IsDurationEstimated":false,"Gym":{"Id":19,"Name":"London Oval","Status":"Blocked","Location":null,"GymAccess":null,"ContactInfo":null,"TimeZone":null},"StartTime":"2023-12-17T19:37:00","Duration":46,"Name":null},
|
|
{"IsDurationEstimated":false,"Gym":{"Id":19,"Name":"London Oval","Status":"Blocked","Location":null,"GymAccess":null,"ContactInfo":null,"TimeZone":null},"StartTime":"2023-12-16T12:19:00","Duration":37,"Name":null},
|
|
{"IsDurationEstimated":false,"Gym":{"Id":19,"Name":"London Oval","Status":"Blocked","Location":null,"GymAccess":null,"ContactInfo":null,"TimeZone":null},"StartTime":"2023-12-15T11:14:00","Duration":47,"Name":null},
|
|
{"IsDurationEstimated":false,"Gym":{"Id":19,"Name":"London Oval","Status":"Blocked","Location":null,"GymAccess":null,"ContactInfo":null,"TimeZone":null},"StartTime":"2023-12-13T10:30:00","Duration":36,"Name":null},
|
|
{"IsDurationEstimated":false,"Gym":{"Id":19,"Name":"London Oval","Status":"Blocked","Location":null,"GymAccess":null,"ContactInfo":null,"TimeZone":null},"StartTime":"2023-12-10T16:18:00","Duration":32,"Name":null},
|
|
{"IsDurationEstimated":false,"Gym":{"Id":19,"Name":"London Oval","Status":"Blocked","Location":null,"GymAccess":null,"ContactInfo":null,"TimeZone":null},"StartTime":"2023-12-05T22:36:00","Duration":40,"Name":null},
|
|
{"IsDurationEstimated":false,"Gym":{"Id":19,"Name":"London Oval","Status":"Blocked","Location":null,"GymAccess":null,"ContactInfo":null,"TimeZone":null},"StartTime":"2023-12-03T17:59:00","Duration":48,"Name":null},
|
|
{"IsDurationEstimated":false,"Gym":{"Id":19,"Name":"London Oval","Status":"Blocked","Location":null,"GymAccess":null,"ContactInfo":null,"TimeZone":null},"StartTime":"2023-12-01T21:41:00","Duration":29,"Name":null}],
|
|
"Activities":[]}
|
|
"""
|
|
|
|
let singleVisit startTime duration =
|
|
{
|
|
IsDurationEstimated = false
|
|
Gym =
|
|
{
|
|
Id = 19
|
|
Name = "London Oval"
|
|
Status = "Blocked"
|
|
}
|
|
StartTime = startTime
|
|
Duration = duration
|
|
}
|
|
|
|
let expected =
|
|
{
|
|
Summary =
|
|
{
|
|
Total =
|
|
{
|
|
Activities = 0
|
|
Visits = 10
|
|
Duration = 445
|
|
}
|
|
ThisWeek =
|
|
{
|
|
Activities = 0
|
|
Visits = 0
|
|
Duration = 0
|
|
}
|
|
}
|
|
Visits =
|
|
[
|
|
singleVisit (DateTime (2023, 12, 21, 10, 12, 00)) 50
|
|
singleVisit (DateTime (2023, 12, 20, 12, 05, 00)) 80
|
|
singleVisit (DateTime (2023, 12, 17, 19, 37, 00)) 46
|
|
singleVisit (DateTime (2023, 12, 16, 12, 19, 00)) 37
|
|
singleVisit (DateTime (2023, 12, 15, 11, 14, 00)) 47
|
|
singleVisit (DateTime (2023, 12, 13, 10, 30, 00)) 36
|
|
singleVisit (DateTime (2023, 12, 10, 16, 18, 00)) 32
|
|
singleVisit (DateTime (2023, 12, 05, 22, 36, 00)) 40
|
|
singleVisit (DateTime (2023, 12, 03, 17, 59, 00)) 48
|
|
singleVisit (DateTime (2023, 12, 01, 21, 41, 00)) 29
|
|
]
|
|
}
|
|
|
|
[ json, expected ]
|