示例#1
0
        public ActionResult AddRoom(int numberRoom, float prizePerDay)
        {
            TempData["IsLogged"]  = true;
            TempData["BadNumber"] = "";
            Room      room      = new Room();
            RoomStore roomStore = new RoomStore();

            if (roomStore.IsNumberReserved(numberRoom))
            {
                TempData["BadNumber"] = "Taki numer już istnieje. Dodawanie nie powiodlo sie";
                return(View("CreateRoom"));
            }

            /*else if(numberRoom =="" || prizePerDay ==0)
             * {
             *  TempData["BadNumber"] = "Nie podano wystarczajych danych";
             *  return View("CreateRoom");
             * }*/
            else
            {
                room.Number      = numberRoom;
                room.PrizePerDay = prizePerDay;
                roomStore.AddRoom(room);
                TempData["BadNumber"] = "Dodano pokój";
                return(View("CreateRoom"));
            }
        }
        public void TestGetNonExistentRoom()
        {
            var roomStore  = RoomStore.Create(new DynamoTable(true));
            var roomFromDb = roomStore.GetRoom("not-a-room");

            Assert.That(roomFromDb, Is.Null);
        }
示例#3
0
        public void TestCanStartGame()
        {
            const string roomCode = "AAAA";
            const string word     = "Thing";

            var room = new Room();

            room.AddPerson("person-1", "jacob");
            room.AddPerson("person-2", "anita");
            room.AddPerson("person-3", "robin");
            var dynamoTable = new Mock <IDynamoTable>();

            dynamoTable.Setup(foo => foo.GetRoom(roomCode)).Returns(room);

            var roomStore = RoomStore.Create(dynamoTable.Object);

            roomStore.StartGame(roomCode, word, new HashSet <string> {
                "person-1"
            }, "person-2");

            var expectedRoom = new Room();

            expectedRoom.AddPerson("person-1", "jacob");
            expectedRoom.SetCharacter("person-1", "chameleon");
            expectedRoom.AddPerson("person-2", "anita");
            expectedRoom.SetCharacter("person-2", word);
            expectedRoom.AddPerson("person-3", "robin");
            expectedRoom.SetCharacter("person-3", word);
            dynamoTable.Verify(x => x.SaveRoom(It.Is <Room>(y => y.IsTheSameAs(expectedRoom))), Times.Once);
        }
示例#4
0
        public ActionResult GoToEditRoom(long roomId)
        {
            TempData["IsLogged"] = true;
            RoomStore roomStore = new RoomStore();
            Room      room      = roomStore.GetRoomById(roomId);

            return(View("EditRoom", room));
        }
        public void TestCanSaveRoom()
        {
            var roomStore   = RoomStore.Create(new DynamoTable(true));
            var room        = roomStore.CreateRoom();
            var personAdded = roomStore.CreatePersonInRoom(room.RoomCode, "Jacob");

            var roomFromDb = roomStore.GetRoom(room.RoomCode);

            Assert.That(roomFromDb.PersonIds.Count, Is.EqualTo(1));
            Assert.That(roomFromDb.PersonIds.First(), Is.EqualTo(personAdded));
        }
示例#6
0
        public ActionResult EditRoom(float prizePerDay, long roomId)
        {
            TempData["IsLogged"] = true;
            User      user      = (User)TempData["user2"];
            RoomStore roomStore = new RoomStore();
            Room      oldRoom   = roomStore.GetRoomById(roomId);
            Room      updRoom   = oldRoom;

            updRoom.PrizePerDay = prizePerDay;
            roomStore.EditRoom(updRoom, roomId);
            return(RedirectToAction("ShowRooms", new { userNick = user.NickName, role = user.UserRole }));
        }
示例#7
0
        public ActionResult DeleteRoom(long roomId)
        {
            TempData["IsLogged"] = true;
            User      user      = (User)TempData["user2"];
            RoomStore roomStore = new RoomStore();

            if (!roomStore.DeleteRoomByID(roomId))
            {
                TempData["BadDelete"] = "Nie mozna usunac pokoju";
            }
            else
            {
                TempData["BadDelete"] = "Pokoj usunieto";
            }
            return(RedirectToAction("ShowRooms", new { userNick = user.NickName, role = user.UserRole }));
        }
示例#8
0
        public ActionResult ShowRooms(string userNick, Role role)
        {
            TempData["IsLogged"] = true;
            // TempData["BadDelete"] = "";
            User user = new User();

            user.NickName      = userNick;
            user.UserRole      = role;
            TempData["mydata"] = user;
            Room      room      = new Room();
            RoomStore roomStore = new RoomStore();

            room.AllRooms     = roomStore.GetAllRooms();
            TempData["user2"] = user;
            return(View("AllRooms", room));
        }
示例#9
0
        public void CanPlayGame()
        {
            var chameleonGame = ChameleonGame.Create(RoomStore.Create(new InMemoryDynamoTable()));

            // Creating and joining the room
            var personAndRoom = chameleonGame.CreateRoom("Anita");
            var roomCode      = personAndRoom.RoomCode;

            var anita = personAndRoom.PersonId;
            var jacob = chameleonGame.JoinRoom(roomCode, "Jacob").PersonId;
            var paul  = chameleonGame.JoinRoom(roomCode, "Paul").PersonId;

            // Getting the status
            var status = chameleonGame.GetRoomStatus(roomCode, anita);

            Assert.That(status.Name, Is.EqualTo("Anita"));
            Assert.That(status.PeopleCount, Is.EqualTo(3));
            Assert.That(status.State, Is.EqualTo(RoomState.PreGame.ToString()));
            Assert.That(status.Character, Is.Null);
            Assert.That(status.FirstPersonName, Is.Null);

            // Starting a game
            chameleonGame.StartGame(roomCode, jacob);

            var inGameStatus = chameleonGame.GetRoomStatus(roomCode, paul);

            Assert.That(inGameStatus.State, Is.EqualTo(RoomState.InGame.ToString()));
            Assert.That(inGameStatus.Character, Is.Not.Null);
            Assert.That(inGameStatus.FirstPersonName, Is.AnyOf("Anita", "Jacob", "Paul"));

            // Leaving a room
            chameleonGame.LeaveRoom(roomCode, paul);

            var afterLeavingStatus = chameleonGame.GetRoomStatus(roomCode, anita);

            Assert.That(afterLeavingStatus.PeopleCount, Is.EqualTo(2));

            // A new player joining a room with an existing game
            var anna = chameleonGame.JoinRoom(roomCode, "Anna").PersonId;

            var newPlayerStatus = chameleonGame.GetRoomStatus(roomCode, anna);

            Assert.That(newPlayerStatus.State, Is.EqualTo(RoomState.PreGame.ToString()));
            Assert.That(newPlayerStatus.Character, Is.Null);
            Assert.That(newPlayerStatus.FirstPersonName, Is.Null);
        }
示例#10
0
        public void TestCanCreateRoom()
        {
            var existingRoom = new Room {
                RoomCode = "ABCD"
            };
            var dynamoTable = new Mock <IDynamoTable>();

            dynamoTable.Setup(foo => foo.GetRoom(existingRoom.RoomCode)).Returns(existingRoom);

            var randomRoomCode = new Mock <IRandomRoomCode>();

            randomRoomCode.Setup(x => x.Generate())
            .Returns("WXYZ");

            var roomStore = RoomStore.Create(dynamoTable.Object, randomRoomCode.Object);

            roomStore.CreateRoom();

            dynamoTable.Verify(x => x.SaveRoom(It.Is <Room>(y => y.RoomCode == "WXYZ")), Times.Once);
        }
示例#11
0
        public void TestCreateRoomDoesNotCauseInfiniteLoop()
        {
            var existingRoom = new Room {
                RoomCode = "ABCD"
            };
            var dynamoTable = new Mock <IDynamoTable>();

            dynamoTable.Setup(foo => foo.GetRoom(existingRoom.RoomCode)).Returns(existingRoom);

            var randomRoomCode = new Mock <IRandomRoomCode>();

            randomRoomCode.Setup(x => x.Generate())
            .Returns(existingRoom.RoomCode);

            var roomStore = RoomStore.Create(dynamoTable.Object, randomRoomCode.Object);

            Assert.Throws <CouldNotFindAvailableRoomCodeException>(() => roomStore.CreateRoom());
            dynamoTable.Verify(
                x => x.SaveRoom(It.IsAny <Room>()),
                Times.Never);
        }
示例#12
0
        public void TestCanRemovePersonFromRoom()
        {
            const string roomCode = "AAAA";

            var room = new Room();

            room.AddPerson("person-1", "jacob");
            room.AddPerson("person-2", "anita");
            room.AddPerson("person-3", "robin");
            var dynamoTable = new Mock <IDynamoTable>();

            dynamoTable.Setup(foo => foo.GetRoom(roomCode)).Returns(room);

            var roomStore = RoomStore.Create(dynamoTable.Object);

            roomStore.RemovePersonFromRoom(roomCode, "person-1");

            var expectedRoom = new Room();

            expectedRoom.AddPerson("person-2", "anita");
            expectedRoom.AddPerson("person-3", "robin");
            dynamoTable.Verify(x => x.SaveRoom(It.Is <Room>(y => y.IsTheSameAs(expectedRoom))), Times.Once);
        }
 public RoomController(RoomStore roomStore)
 {
     _roomStore = roomStore;
 }
示例#14
0
 private ChameleonGame(IRoomStore roomStore)
 {
     _roomStore = roomStore ?? RoomStore.Create();
 }