Example #1
0
        public void CreateLeadAndSearch()
        {
            var subAreaRequest = new SubAreaViewModel(baseUrl).GET <SubAreaViewModelResponse>();
            var selectedArea   = subAreaRequest.SubAreas[0];

            var leadModel = new LeadsSaveViewModel(baseUrl)
            {
                name         = "User1",
                email        = "*****@*****.**",
                mobileNumber = "123456789",
                address      = "FakeAddress",
                pinCode      = selectedArea.PinCode,
                subAreaId    = selectedArea.Id
            };

            var result = leadModel.POST <LeadsSaveSuccessModel>();

            Assert.IsNotEmpty(result.Id, $"[{nameof(result.Id)}] empty");

            var searchLead = new LeadViewModelRequest(baseUrl, result.Id).GET <LeadViewModelResponse>();


            //compare lead model
            Assert.AreEqual(leadModel.name, searchLead.name, $"[{nameof(searchLead.name)}] not as expected");
            Assert.AreEqual(leadModel.address, searchLead.address, $"[{nameof(searchLead.address)}] not as expected");
            Assert.AreEqual(leadModel.email, searchLead.email, $"[{nameof(searchLead.email)}] not as expected");
            Assert.AreEqual(leadModel.mobileNumber, searchLead.mobileNumber, $"[{nameof(searchLead.mobileNumber)}] not as expected");
            Assert.AreEqual(leadModel.pinCode, searchLead.pinCode, $"[{nameof(searchLead.pinCode)}] not as expected");
            Assert.AreEqual(leadModel.subAreaId, searchLead.subAreaId, $"[{nameof(searchLead.subAreaId)}] not as expected");

            //compare subarea model
            Assert.AreEqual(selectedArea.Name, searchLead.subArea.Name, $"[{nameof(searchLead.subArea.Name)}] not as expected");
            Assert.AreEqual(selectedArea.Id, searchLead.subArea.Id, $"[{nameof(searchLead.subArea.Id)}] not as expected");
            Assert.AreEqual(selectedArea.PinCode, searchLead.subArea.PinCode, $"[{nameof(searchLead.subArea.PinCode)}] not as expected");
        }
Example #2
0
        public async Task <ActionResult <LeadsSaveSuccessModel> > Post([FromBody] LeadsSaveViewModel candidate)
        {
            if (!candidate.SubAreaId.HasValue)
            {
                return(this.BadRequest(new ErrorViewModel("SubArea must have valid value")));
            }
            try
            {
                var leadSaveModel = new LeadSaveModel
                {
                    Name         = candidate.Name,
                    Address      = candidate.Address,
                    PinCode      = candidate.PinCode,
                    MobileNumber = candidate.MobileNumber,
                    Email        = candidate.Email,
                    SubAreaId    = candidate.SubAreaId.Value
                };

                var result = await leadsService.Save(leadSaveModel);

                return(this.Ok(new LeadsSaveSuccessModel(result)));
            }
            catch (Exception e)
            {
                return(this.BadRequest(new ErrorViewModel(e.Message)));
            }
        }
Example #3
0
        /// <summary>
        /// Sends a POST request to create a Lead into the database
        /// </summary>
        /// <param name="leadsModel"></param>
        /// <returns></returns>
        public LeadsSaveSuccessModel CreateLead(LeadsSaveViewModel leadsModel)
        {
            var endpoint = $"{baseUrl}/api/Leads";

            var result = this.Post(endpoint, leadsModel);

            if (result.IsSuccessStatusCode)
            {
                return(JsonConvert.DeserializeObject <LeadsSaveSuccessModel>(result.Content));
            }

            throw new InvalidOperationException($"URL: {endpoint}\n\nRESTful Exception: {result.StatusCode}\nError: {result.Content}");
        }
Example #4
0
        public void CreateLead()
        {
            var requestModel = new LeadsSaveViewModel(baseUrl)
            {
                name         = "User1",
                email        = "*****@*****.**",
                mobileNumber = "123456789",
                address      = "FakeAddress",
                pinCode      = "123",
                subAreaId    = 1
            };

            var result = requestModel.POST <LeadsSaveSuccessModel>();

            Assert.IsNotEmpty(result.Id, $"[{nameof(result.Id)}] empty");
        }
Example #5
0
        public void CreateLeadWithMismatchingSubAreaAndPin()
        {
            var client       = new LeadsClient(baseUrl);
            var subAreas     = client.GetAllSubAreas();
            var selectedArea = subAreas[0];

            var leadModel = new LeadsSaveViewModel()
            {
                Name         = "User1",
                Email        = "*****@*****.**",
                MobileNumber = "123456789",
                Address      = "FakeAddress",
                PinCode      = "6",
                SubAreaId    = 1
            };

            Assert.Throws <InvalidOperationException>(() => client.CreateLead(leadModel), "[exception] was not thrown as expected");
        }
Example #6
0
        public void CreateLeadWithAreaSearch()
        {
            var subAreaRequest = new SubAreaViewModel(baseUrl).GET <SubAreaViewModelResponse>();
            var selectedArea   = subAreaRequest.SubAreas[0];

            var requestModel = new LeadsSaveViewModel(baseUrl)
            {
                name         = "User1",
                email        = "*****@*****.**",
                mobileNumber = "123456789",
                address      = "FakeAddress",
                pinCode      = selectedArea.PinCode,
                subAreaId    = selectedArea.Id
            };

            var result = requestModel.POST <LeadsSaveSuccessModel>();

            Assert.IsNotEmpty(result.Id, $"[{nameof(result.Id)}] empty");
        }
Example #7
0
        public void CreateLeadWithFilteredSubArea()
        {
            var client = new LeadsClient(baseUrl);

            var selectedPin = "567";

            var subAreas     = client.GetFilteredSubArea(selectedPin);
            var selectedArea = subAreas[0];

            var leadModel = new LeadsSaveViewModel()
            {
                Name         = "User1",
                Email        = "*****@*****.**",
                MobileNumber = "123456789",
                Address      = "FakeAddress",
                PinCode      = selectedArea.PinCode,
                SubAreaId    = selectedArea.Id
            };

            var result = client.CreateLead(leadModel);

            Assert.IsNotEmpty(result.Id, $"[{nameof(result.Id)}] empty");

            //search for created lead
            var searchLead = client.SearchLead(result.Id);

            //compare lead model
            Assert.AreEqual(leadModel.Name, searchLead.Name, $"[{nameof(searchLead.Name)}] not as expected");
            Assert.AreEqual(leadModel.Address, searchLead.Address, $"[{nameof(searchLead.Address)}] not as expected");
            Assert.AreEqual(leadModel.Email, searchLead.Email, $"[{nameof(searchLead.Email)}] not as expected");
            Assert.AreEqual(leadModel.MobileNumber, searchLead.MobileNumber, $"[{nameof(searchLead.MobileNumber)}] not as expected");
            Assert.AreEqual(leadModel.PinCode, searchLead.PinCode, $"[{nameof(searchLead.PinCode)}] not as expected");
            Assert.AreEqual(leadModel.SubAreaId, searchLead.SubAreaId, $"[{nameof(searchLead.SubAreaId)}] not as expected");

            //compare subarea model
            Assert.AreEqual(selectedArea.Name, searchLead.SubArea.Name, $"[{nameof(searchLead.SubArea.Name)}] not as expected");
            Assert.AreEqual(selectedArea.Id, searchLead.SubArea.Id, $"[{nameof(searchLead.SubArea.Id)}] not as expected");
            Assert.AreEqual(selectedArea.PinCode, searchLead.SubArea.PinCode, $"[{nameof(searchLead.SubArea.PinCode)}] not as expected");

            //Additional verificaion
            Assert.AreEqual(selectedPin, searchLead.PinCode, $"[{nameof(searchLead.PinCode)}] not as expected");
        }
Example #8
0
        public void CreateLeadNameSpecialCharacters()
        {
            var client       = new LeadsClient(baseUrl);
            var subAreas     = client.GetAllSubAreas();
            var selectedArea = subAreas[0];

            var leadModel = new LeadsSaveViewModel()
            {
                Name         = "User1!@#$%^&*()_0",
                Email        = "*****@*****.**",
                MobileNumber = "123456789",
                Address      = "FakeAddress",
                PinCode      = selectedArea.PinCode,
                SubAreaId    = selectedArea.Id
            };

            var result = client.CreateLead(leadModel);

            Assert.IsNotEmpty(result.Id, $"[{nameof(result.Id)}] empty");
        }