示例#1
0
        // GET api/Signup?fn=&ln=
        public async Task <IEnumerable <SignupRecord> > Get([FromUri] QueryInputFromClient queryInputFromClient)
        {
            QueryInput queryInput = new QueryInput()
            {
                CurrentPage = queryInputFromClient.CurrentPage.HasValue? queryInputFromClient.CurrentPage.Value : 0,
                FirstName   = queryInputFromClient.FirstName,
                LastName    = queryInputFromClient.LastName,
                FunEvent    = queryInputFromClient.FunEvent.HasValue ? queryInputFromClient.FunEvent.Value : 0
            };

            SignUpServiceClient client = new SignUpServiceClient();
            var result = await client.QueryAsync(queryInput);

            return(result.Records);
        }
        public async Task TestMethod_Get()
        {
            // Prepare data
            var         controller  = new SignupController();
            Random      r           = new Random();
            string      searchKey   = Guid.NewGuid().ToString().Substring(1, 10);
            SignupInput signupInput = new SignupInput()
            {
                Comments  = "",
                Email     = "*****@*****.**" + r.Next(1234, 123456789),
                FirstName = searchKey,
                LastName  = "Wang",
            };

            string emailBackup = signupInput.Email;

            signupInput.FunEventId = 100;
            var task1 = controller.Post(signupInput);
            await Task.WhenAll(task1);

            signupInput.FunEventId = 101;
            var task2 = controller.Post(signupInput);
            await Task.WhenAll(task2);

            signupInput.FunEventId = 102;
            var task3 = controller.Post(signupInput);
            await Task.WhenAll(task3);

            // Noise
            signupInput.FunEventId = 100;
            signupInput.Email      = "ThisisNoise@g" + r.Next(123456789, 223456789);
            signupInput.FirstName  = "NotMatched";
            var task4 = controller.Post(signupInput);
            await Task.WhenAll(task4);

            //
            // Query - By First Name
            //
            QueryInputFromClient queryInputFromClient = new QueryInputFromClient();

            queryInputFromClient.FirstName = searchKey;
            var queryResult = await controller.Get(queryInputFromClient);

            var list = queryResult.ToList();

            Assert.IsTrue(list.Count() == 3);
            // Same person
            Assert.IsTrue(list[0].Email == emailBackup);
            Assert.IsTrue(list[1].Email == emailBackup);
            Assert.IsTrue(list[2].Email == emailBackup);

            Assert.IsTrue(list[0].FirstName.Contains(searchKey));
            Assert.IsTrue(list[1].FirstName.Contains(searchKey));
            Assert.IsTrue(list[2].FirstName.Contains(searchKey));

            // Different events
            Assert.IsTrue(list[0].FunEventId != list[1].FunEventId);
            Assert.IsTrue(list[1].FunEventId != list[2].FunEventId);
            Assert.IsTrue(list[2].FunEventId != list[0].FunEventId);

            //
            // Query - By First Name & Eent
            //
            QueryInputFromClient queryInputFromClient2 = new QueryInputFromClient();

            queryInputFromClient2.FirstName = searchKey;
            queryInputFromClient2.FunEvent  = 101;
            var queryResult2 = await controller.Get(queryInputFromClient2);

            var list2 = queryResult2.ToList();

            Assert.IsTrue(list2.Count() == 1);
            Assert.IsTrue(list2[0].Email == emailBackup);
            Assert.IsTrue(list2[0].FirstName.Contains(searchKey));
            Assert.IsTrue(list2[0].FunEventId == 101);
        }