public void CanGetRoomState(AccountType accountType)
        {
            _fakeNowProvider = new FakeNowProvider {
                Now = new DateTime(2000, 12, 12, 12, 12, 0)
            };
            var usersCache = new MockUserStateRepository();
            var calc       = FakeTimeCalculatorFactory.GetTimeWarpStateCalculator();

            _userStateManager = new UserStateManager(calc, usersCache);

            _testRoom = new Room(2, "testRoom2", new DateTime(2001, 12, 12));

            _roomRepository = new MockRoomRepository();

            _roomRepository.Add(_testRoom);

            _roomStateController = new RoomStateController(_userStateManager, _roomRepository, new RoomRemovalPolicy(), _fakeNowProvider);

            var newAccount = new Account(0, TestHelper.NameMock, TestHelper.EmailAddressMock + 1, accountType);

            _testRoom.Add(newAccount);
            usersCache.Add(new TimeWarpUserState(0, newAccount, TimeWarpState.Resting, _fakeNowProvider.Now, TimeSpan.FromSeconds(1), 0, 1));

            var oldAccount = new Account(1, TestHelper.NameMock, TestHelper.EmailAddressMock + 2, accountType);

            _testRoom.Add(oldAccount);
            usersCache.Add(new TimeWarpUserState(1, oldAccount, TimeWarpState.Resting, _fakeNowProvider.Now.Subtract(TimeSpan.FromDays(100)), TimeSpan.FromSeconds(1), 0, 1));

            var state = _roomStateController.Get(2);

            Assert.AreEqual(1, state.Count());
            Assert.AreEqual(0, state.Single().AccountId);
        }
        public void SetupController()
        {
            //arrange
            var testRoom1   = new Room(1, "testRoom1", new DateTime(2000, 12, 12));
            var testRoom2   = new Room(2, "testRoom2", new DateTime(2001, 12, 12));
            var testAccount = new Account(1, "ashley", "*****@*****.**", AccountType.Full);

            _authenticationManager = new MockTimeWarpAuthenticationManager();
            var token = _authenticationManager.AddUser(new AccountPassword(testAccount, ""));

            _request = HttpRequestMock.MockRequest();
            _request.Headers.Add("login-token", token);

            _roomRepository = new MockRoomRepository();
            _roomRepository.Add(testRoom1);
            _roomRepository.Add(testRoom2);

            _accountRepository = new MockAccountsRepository();
            _accountRepository.Add(testAccount);

            _nowProvider = new FakeNowProvider();

            var roomsController = new RoomInfoController(_roomRepository, _accountRepository, _authenticationManager,
                                                         _nowProvider);

            _globalRoomInfoController = new GlobalRoomInfoController(_roomRepository);
            _roomInfoController       = roomsController;
        }
        protected UserControllerTestBase()
        {
            FakeNowProvider = new FakeNowProvider {
                Now = new DateTime(2000, 12, 12, 12, 12, 0)
            };
            var usersCache            = new MockUserStateRepository();
            var calc                  = FakeTimeCalculatorFactory.GetTimeWarpStateCalculator();
            var account               = new Account(AccountId, TestHelper.NameMock, TestHelper.EmailAddressMock, AccountType.Full);
            var accountRepository     = new MockAccountsRepository();
            var authenticationManager = new MockTimeWarpAuthenticationManager();
            var token                 = authenticationManager.AddUser(new AccountPassword(account, "bean"));

            accountRepository.Add(account);

            var timeWarpUser = new UserStateManager(calc, usersCache);

            Request = HttpRequestMock.MockRequest();
            Request.Headers.Add("login-token", token);

            Controller = new UserStateController(timeWarpUser, FakeNowProvider, accountRepository, authenticationManager);
        }