public void GetUserByUsername_UserWithSuchNameNotExists_DidNotGetUser()
        {
            EntityMaker.CreateSomeUser(_mockUserRepository);

            var askedUser = _userService.GetUserByUsername("user2");

            Assert.IsTrue(askedUser.IsNone);
        }
        public void GetUserById_UserWithSuchIdExistsAndAskedByAnotherUser_DidNotGetUser()
        {
            var user = EntityMaker.CreateSomeUser(_mockUserRepository);

            var askedUser = _userService.GetUserById(Guid.NewGuid(), user.Id);

            Assert.IsTrue(askedUser.IsNone);
        }
        public void LoginByCredentials_InsertedIncorrectPassword_DidNotGetUser()
        {
            var user = EntityMaker.CreateSomeUser(_mockUserRepository);

            var loggedUser = _userService.LogInByCredentials(user.Username, "qwerty123");

            Assert.IsTrue(loggedUser.IsNone);
        }
        public void DeleteUser_UserDeletesByAnotherUser_UserWereNotDeleted()
        {
            var user = EntityMaker.CreateSomeUser(_mockUserRepository);

            _userService.DeleteUser(Guid.NewGuid(), user.Id);

            Assert.AreEqual(1, _mockUserRepository.GetAll().Count);
        }
        public void DeleteUser_UserDeletesByHimself_UserWereDeleted()
        {
            var user = EntityMaker.CreateSomeUser(_mockUserRepository);

            _userService.DeleteUser(user.Id, user.Id);

            Assert.AreEqual(0, _mockUserRepository.GetAll().Count);
        }
        public void GetUserByUsername_UserWithSuchNameExists_GotUser()
        {
            var user = EntityMaker.CreateSomeUser(_mockUserRepository);

            var askedUser = _userService.GetUserByUsername(user.Username);

            Assert.IsTrue(askedUser.IsSome);
            Assert.AreEqual(user.Username, askedUser.ValueUnsafe().Username);
        }
        public void GetUserById_UserWithSuchIdExistsAndAskedByThisUser_GotUser()
        {
            var user = EntityMaker.CreateSomeUser(_mockUserRepository);

            var askedUser = _userService.GetUserById(user.Id, user.Id);

            Assert.IsTrue(askedUser.IsSome);
            Assert.AreEqual(user.Username, askedUser.ValueUnsafe().Username);
        }
        public void LoginByCredentials_InsertedCorrectPassword_GotUser()
        {
            var user = EntityMaker.CreateSomeUser(_mockUserRepository);

            var loggedUser = _userService.LogInByCredentials(user.Username, user.PasswordHash);

            Assert.IsTrue(loggedUser.IsSome);
            Assert.AreEqual(user.Username, loggedUser.ValueUnsafe().Username);
        }
        public void GetUserByUsername_TwoUsersWithSuchNameExists_DidNotGetUser()
        {
            var name = "user";

            EntityMaker.CreateSomeUser(_mockUserRepository, name);
            EntityMaker.CreateSomeUser(_mockUserRepository, name);

            var askedUser = _userService.GetUserByUsername(name);

            Assert.IsTrue(askedUser.IsNone);
        }
        public void EditUser_UserEditsByHimself_UserWasEdited()
        {
            var form = _fixture.Create <UserForm>();
            var user = EntityMaker.CreateSomeUser(_mockUserRepository);

            _userService.EditUser(user.Id, user.Id, form);

            var editedUser = _mockUserRepository.Get(user.Id);

            Assert.IsTrue(editedUser.IsSome);
            Assert.AreEqual(form.Username, editedUser.ValueUnsafe().Username);
        }
        public void EditUser_UserEditsByAnotherUser_UserWasNotEdited()
        {
            var form        = _fixture.Create <UserForm>();
            var initialName = "user";
            var user        = EntityMaker.CreateSomeUser(_mockUserRepository, initialName);

            _userService.EditUser(Guid.NewGuid(), user.Id, form);

            var editedUser = _mockUserRepository.Get(user.Id);

            Assert.IsTrue(editedUser.IsSome);
            Assert.AreEqual(initialName, editedUser.ValueUnsafe().Username);
        }
        public void EditUser_FormIsNotComplete_UserWasNotEdited()
        {
            var form        = new UserForm(null, null);
            var initialName = "user";
            var user        = EntityMaker.CreateSomeUser(_mockUserRepository, initialName);

            _userService.EditUser(user.Id, user.Id, form);

            var editedUser = _mockUserRepository.Get(user.Id);

            Assert.IsTrue(editedUser.IsSome);
            Assert.AreEqual(initialName, editedUser.ValueUnsafe().Username);
        }
        public void SetUp()
        {
            _fixture               = new Fixture();
            _mockUserRepository    = new RepositoryMock <User>();
            _mockTrackerRepository = new RepositoryMock <Tracker>();
            _mockEventRepository   = new RepositoryMock <Event>();

            _userOne = EntityMaker.CreateSomeUser(_mockUserRepository, "userOne");
            _userTwo = EntityMaker.CreateSomeUser(_mockUserRepository, "userTwo");

            _trackerUserOne = EntityMaker.CreateSomeTracker(_userOne.Id, _mockTrackerRepository);
            _trackerUserTwo = EntityMaker.CreateSomeTracker(_userTwo.Id, _mockTrackerRepository);

            _eventService = new EventService(_mockEventRepository, _mockTrackerRepository);
        }