You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: room_test.go
    path of file: ./repos/submarine/server/battle/src
    
    the code of the file until where you have to start completion: package server

import (
	"testing"

	. "github.com/smartystreets/goconvey/convey"

	"github.com/shiwano/submarine/server/battle/lib/currentmillis"
	battleAPI "github.com/shiwano/submarine/server/battle/lib/typhenapi/type/submarine/battle"
)

func TestRoom(t *testing.T) {
	Convey("Room", t, func() {
		server := newTestServer()
		s := newClientSession()
		s2 := newClientSession()

		Convey("when a user join to the room", func() {
			Convey("should send a room message", func() {
				done := make(chan *battleAPI.Room)
				s.api.Battle.RoomHandler = func(m *battleAPI.Room) { done <- m }
				s.connect(server.URL + "/rooms/1?room_key=key_1")
				m := <-done
				So(m.Id, ShouldEqual, 1)
				So(m.Members, ShouldHaveLength, 1)
			})

			Convey("should send a now message", 
    
func TestRoom(t *testing.T) {
	Convey("Room", t, func() {
		server := newTestServer()
		s := newClientSession()
		s2 := newClientSession()

		Convey("when a user join to the room", func() {
			Convey("should send a room message", func() {
				done := make(chan *battleAPI.Room)
				s.api.Battle.RoomHandler = func(m *battleAPI.Room) { done <- m }
				s.connect(server.URL + "/rooms/1?room_key=key_1")
				m := <-done
				So(m.Id, ShouldEqual, 1)
				So(m.Members, ShouldHaveLength, 1)
			})

			Convey("should send a now message", func() {
				currentmillis.StubNow = func() int64 { return 123456 }
				done := make(chan *battleAPI.Now)
				s.api.Battle.NowHandler = func(m *battleAPI.Now) { done <- m }
				s.connect(server.URL + "/rooms/1?room_key=key_1")
				m := <-done
				currentmillis.StubNow = nil
				So(m.Time, ShouldEqual, 123456)
			})
		})

		Convey("when a new user join to the room", func() {
			Convey("should send a room message to other users", func() {
				done := make(chan *battleAPI.Room)
				s.api.Battle.RoomHandler = func(m *battleAPI.Room) { done <- m }
				s.connect(server.URL + "/rooms/1?room_key=key_1")
				s2.connect(server.URL + "/rooms/1?room_key=key_2")
				<-done
				m := <-done
				So(m.Id, ShouldEqual, 1)
				So(m.Members, ShouldHaveLength, 2)
			})
		})

		Reset(func() {
			server.Close()
		})
	})
}