public override async Task <GetCustomSpecialistsResponse> GetCustomSpecialists(GetCustomSpecialistsRequest request, ServerCallContext context)
        {
            DbUserModel user = context.UserState["user"] as DbUserModel;

            if (user == null)
            {
                return new GetCustomSpecialistsResponse()
                       {
                           Status = ResponseFactory.createResponse(ResponseType.UNAUTHORIZED)
                       }
            }
            ;

            // Search through all specialists for the search term.
            List <SpecialistConfigurationModel> results = (await SpecialistConfigurationModel.Search(request.SearchTerm)).Skip((int)request.PageNumber * 50).Take(50).ToList();

            GetCustomSpecialistsResponse response = new GetCustomSpecialistsResponse()
            {
                Status = ResponseFactory.createResponse(ResponseType.SUCCESS),
            };

            foreach (SpecialistConfigurationModel model in results)
            {
                response.CustomSpecialists.Add(model.SpecialistConfig);
            }

            return(response);
        }
        public void PlayerCanViewCustomSpecialistAfterCreating()
        {
            String specName = "MyCustomSpecialist";
            SubmitCustomSpecialistResponse response = submitCustomSpecialist(specName);

            string specUuid = response.SpecialistConfigurationId;

            GetCustomSpecialistsResponse specResponse = client.GetCustomSpecialists(new GetCustomSpecialistsRequest());

            Assert.IsTrue(specResponse.CustomSpecialists.Count == 1);
            Assert.AreEqual(specUuid, specResponse.CustomSpecialists[0].Id);
            Assert.AreEqual(specName, specResponse.CustomSpecialists[0].SpecialistName);
            Assert.AreEqual(1, specResponse.CustomSpecialists[0].Priority);
            Assert.AreEqual(EffectModifier.Driller, specResponse.CustomSpecialists[0].SpecialistEffects[0].EffectModifier);
            // Ensure some of the specialist details are the same!
        }
        public void CanViewSpecialistsCreatedByAnyPlayer()
        {
            String userOneSpecName = "UserOneSpecialists";

            submitCustomSpecialist(userOneSpecName);

            authHelper.loginToAccount("userTwo");

            String userTwoSpecialist = "MyCustomSpecialist";

            submitCustomSpecialist(userTwoSpecialist);

            GetCustomSpecialistsResponse specResponse = client.GetCustomSpecialists(new GetCustomSpecialistsRequest());

            Assert.IsTrue(specResponse.CustomSpecialists.Count == 2);
            Assert.IsTrue(specResponse.CustomSpecialists.Count(it => it.SpecialistName == userOneSpecName) == 1);
            Assert.IsTrue(specResponse.CustomSpecialists.Count(it => it.SpecialistName == userTwoSpecialist) == 1);
            Assert.IsTrue(specResponse.CustomSpecialists.Count(it => it.Creator.Username == "userOne") == 1);
            Assert.IsTrue(specResponse.CustomSpecialists.Count(it => it.Creator.Username == "userTwo") == 1);
        }