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 @>)