public IActionResult Get([FromRoute] string?id) { if (string.IsNullOrEmpty(id)) { return(BadRequest($"{nameof(id)} is required")); } if (string.Equals(id, "me", StringComparison.InvariantCultureIgnoreCase)) { var me = HttpContext.TryGetUser(); if (me != null) { return(Ok(userFilter.Filter(me, true))); } return(BadRequest("You are not authorized")); } var user = usersRepository.FindById(id); if (user == null) { return(BadRequest($"User with id = '{id}' not found")); } return(Ok(userFilter.Filter(user, HttpContext.TryGetUser()?.Id == user.Id))); }
public async Task <Tuple <int, List <User> > > SearchAsync(UserFilter filter, PagedRequest pagination, OrderedRequest ordering) => await filter.Filter(m_context.Users.AsQueryable()) .WithOrdering(ordering, new OrderedRequest { OrderBy = nameof(User.Id), OrderDirection = OrderDirection.Asc }) .WithPaginationAsync(pagination);
public void NoUsersThrowsNoUsersException() { var userFilter = new UserFilter(new string[] { }); var conversation = new Conversation("conversation", new List <Message>() { new Message(DateTimeOffset.FromUnixTimeSeconds(1448470901), "senderId", "content") }); Assert.Throws(typeof(NoUsersException), () => { userFilter.Filter(conversation); }); }
public void CannotFilterBasedOnNullUser() { UserFilter filter = new UserFilter(); var messages = ReadMessages(); string user = null; List <Message> returnMessages = filter.Filter(messages.ToList(), new string[] { user }).ToList(); Assert.IsNotNull(returnMessages); CollectionAssert.AreEqual(messages.ToList(), returnMessages); }
public void CanFilterBasedOnUserInChat() { UserFilter filter = new UserFilter(); var messages = ReadMessages(); string user = "******"; List <Message> returnMessages = filter.Filter(messages, new string[] { user }).ToList(); Assert.IsNotNull(returnMessages); Assert.AreNotEqual(messages, returnMessages); Assert.AreEqual(0, returnMessages.Count(t => t.senderId != user)); Assert.IsTrue(returnMessages.Count() > 0); }
public void CannotFilterNullMessages() { try { UserFilter filter = new UserFilter(); filter.Filter(null, new string[] { "1" }); } catch (ArgumentNullException) { Assert.IsTrue(true); } catch (NullMessagesException) { Assert.IsTrue(true); } }
public void TestFilter_ByName() { var users = new[] { new User { Name = "test1" }, new User { Name = "test2" }, new User { Name = "test3" }, }.AsQueryable(); var filter = new UserFilter(); var filteredUsers = filter.Filter(users, new UserFilterOptions { Name = "2" }).ToArray(); Assert.AreEqual(1, filteredUsers.Length); Assert.AreEqual("test2", filteredUsers.Single().Name); }
public void CannotFilterBasedOnNonExistantUser() { try { UserFilter filter = new UserFilter(); var messages = ReadMessages(); string user = "******"; List <Message> returnMessages = filter.Filter(messages, new string[] { user }).ToList(); Assert.IsNotNull(returnMessages); Assert.AreNotEqual(messages, returnMessages); Assert.IsTrue(returnMessages.Count == 0); } catch (UserNotInChatException) { Assert.IsTrue(true); } }
public void FilteringUserFiltersUser() { var usersToTest = new string[] { "Patrick" }; var userFilter = new UserFilter(usersToTest); Assert.That(_dummyConversation.name, Is.EqualTo("Dummy Conversation")); var filteredConversation = userFilter.Filter(_dummyConversation); var filteredMessages = filteredConversation.messages.ToList(); Assert.That(filteredMessages.Count == 3); Assert.That(filteredMessages[0].senderId, Is.EqualTo("Patrick")); Assert.That(filteredMessages[0].content, Is.EqualTo("I've completed my interview test and have submitted a pull request!")); Assert.That(filteredMessages[1].senderId, Is.EqualTo("Patrick")); Assert.That(filteredMessages[1].content, Is.EqualTo("What are some things you didn't like with my test submission?")); Assert.That(filteredMessages[2].senderId, Is.EqualTo("Patrick")); Assert.That(filteredMessages[2].content, Is.EqualTo("Okay thanks, working on it!")); }
public IActionResult GetUser([FromRoute] string?id) { if (string.IsNullOrEmpty(id)) { return(BadRequest($"{nameof(id)} is required")); } var service = servicesRepository.FindById(id); if (service == null) { return(BadRequest($"Service with {nameof(id)}='{id}' not found")); } var user = usersRepository.FindById(service.UserId); if (user == null) { throw new InvalidStateException($"User ({service.UserId}) of service (`{service.Id}`) not found"); } return(Ok(userFilter.Filter(user, HttpContext.TryGetUser()?.Id == user.Id))); }
static void Main(string[] args) { User[] users = { new User("Vasya", 30, Gender.Male), new User("Katya", 28, Gender.Female), new User("Anya", 28, Gender.Female), new User("Ivan", 27, Gender.Male), new User("Petr", 27, Gender.Male) }; UserFilter filter = new UserFilter(); Console.WriteLine("Filter by age:"); foreach (var user in filter.Filter(users, new AgeEqualSpecification(28))) { Console.WriteLine(user); } Console.WriteLine(); Console.WriteLine("Filter by gender:"); foreach (var user in filter.Filter(users, new GenderEqualSpecification(Gender.Male))) { Console.WriteLine(user); } Console.WriteLine(); Console.WriteLine("Filter by age and gender:"); foreach (var user in filter.Filter(users, new AndSpecification( new AgeEqualSpecification(27), new GenderEqualSpecification(Gender.Male)))) { Console.WriteLine(user); } Console.WriteLine(); Console.WriteLine("*** Lambda specification ***"); LambdaUserFilter lambdaFilter = new LambdaUserFilter(); Console.WriteLine("Lambda filter by age:"); foreach (var user in lambdaFilter.Filter(users, new LambdaAgeEqualSpecification(28))) { Console.WriteLine(user); } Console.WriteLine(); Console.WriteLine("Lambda filter by gender:"); foreach (var user in lambdaFilter.Filter(users, new LambdaGenderEqualSpecification(Gender.Male))) { Console.WriteLine(user); } Console.WriteLine(); Console.WriteLine("Filter by age and gender:"); foreach (var user in lambdaFilter.Filter(users, new LambdaAndSpecification( new LambdaAgeEqualSpecification(27), new LambdaGenderEqualSpecification(Gender.Male)))) { Console.WriteLine(user); } }
public void NullConversationThrowsArgumentNullException() { var userFilter = new UserFilter(new string[] { "Patrick" }); Assert.Throws(typeof(ArgumentNullException), () => { userFilter.Filter(null); }); }