diff --git a/jvm/src/test/scala/cs214/webapp/AppSuite.scala b/jvm/src/test/scala/cs214/webapp/AppSuite.scala index 635e934a61f414378425b0ac3825036951afbf96..6d0abf90f0e3fcb7d6e41056c2a2a3bcdc57a4f2 100644 --- a/jvm/src/test/scala/cs214/webapp/AppSuite.scala +++ b/jvm/src/test/scala/cs214/webapp/AppSuite.scala @@ -30,10 +30,10 @@ object PingPongSuite: override val eventFormat = StringWire override val viewFormat = StringWire - override def init(clients: Seq[UserId]): String = "" + override def init(clients: Seq[UserId]): String = "hello" override def project(state: String)(userId: UserId): Pong = state override def transition(state: String)(userId: UserId, event: Ping): Try[Seq[Action[State]]] = Try: - Seq(Action.Render(state)) + Seq(Action.Render(event)) WebServer.register(PingPong) @@ -88,9 +88,20 @@ class WebSocketSuite extends PingPongSuite: .response(asWebSocketAlways(body)) .send(backend) - test("ws: The server sends a welcome message over web sockets"): + test("ws: The ping server sends a welcome message over web sockets"): withServer: server ?=> val inst = createInstance(USER_IDS) withWs(inst.instanceId): ws => - val initial = decodeActions(ws.receiveText()) - assertEquals(initial, Seq(Action.Render(""))) + val initial = decodeActions(ws.receiveText()) + assertEquals(initial, Seq(Action.Render("hello"))) + + test("ws: The ping server echoes events"): + withServer: server ?=> + val inst = createInstance(USER_IDS) + withWs(inst.instanceId): ws => + ws.receiveText() + time: + for i <- 0 to 1000 do + ws.sendText(app.wire.eventFormat.encode(i.toString).toString) + val resp = decodeActions(ws.receiveText()) + assertEquals(resp, Seq(Action.Render(i.toString)))