示例#1
0
        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)));
        }
示例#2
0
 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); });
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
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);
     }
 }
示例#7
0
        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);
        }
示例#8
0
        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!"));
        }
示例#10
0
        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)));
        }
示例#11
0
        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); });
        }