๐Ÿ“ฆ sleepyfran / duets

๐Ÿ“„ Live.GreetAudience.Tests.fs ยท 58 lines
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58module Duets.Simulation.Tests.Concerts.Live.GreetAudience

open FsUnit
open NUnit.Framework
open Test.Common

open Aether
open Duets.Entities
open Duets.Simulation.Concerts.Live

[<Test>]
let ``greetAudience gives 5 points when greeting for the first time`` () =
    let response =
        greetAudience dummyState dummyOngoingConcert

    response
    |> ongoingConcertFromResponse
    |> Optic.get Lenses.Concerts.Ongoing.points_
    |> should equal 5<quality>

    response
    |> pointsFromResponse
    |> should equal 5<quality>

[<Test>]
let ``greetAudience results in Done when greeting for the first time`` () =
    greetAudience dummyState dummyOngoingConcert
    |> resultFromResponse
    |> should be (ofCase <@ Done @>)

[<Test>]
let ``greetAudience takes 10 points when greeting after the first time`` () =
    let ongoingConcert =
        dummyOngoingConcert
        |> Optic.set Lenses.Concerts.Ongoing.points_ 10<quality>
        |> Optic.set Lenses.Concerts.Ongoing.events_ [ GreetAudience ]

    let response = greetAudience dummyState ongoingConcert

    response
    |> ongoingConcertFromResponse
    |> Optic.get Lenses.Concerts.Ongoing.points_
    |> should equal 0<quality>

    response
    |> pointsFromResponse
    |> should equal -10<quality>

[<Test>]
let ``greetAudience results in GreetedMoreThanOnce when greeting after the first time ``
    ()
    =
    greetAudience dummyState dummyOngoingConcert
    |> ongoingConcertFromResponse
    |> greetAudience dummyState
    |> resultFromResponse
    |> should be (ofCase <@ TooManyRepetitionsPenalized @>)