public Message GetClimbsOfLocationAtCheckIn(string id) { SvcContext ctx = InflateContext(); if (ctx.Invalid) { return(ctx.ContextMessage); } try { Guid ciID = Guid.ParseExact(id, "N"); var ci = new VisitsService().GetCheckInById(ciID); if (ci == null) { throw new Exception("Visit does not exist, it may have been deleted."); } ////-- TODO, check cache var loc = AppLookups.GetCacheIndexEntry(ci.LocationID); var dto = GetClimbsOfLocation(loc, ci.Utc); return(ReturnAsJson(dto)); } catch (Exception ex) { return(Failed("Could not get climbs for visit: " + ex.Message)); } }
/// <summary> /// /// </summary> /// <param name="id"></param> /// <returns></returns> public ActionResult GetAvailableClimbsForLogging(Guid id, string term) { var checkIn = new VisitsService().GetCheckInById(id); term = SanitizeClimbTerm(term); //-- because we cache on the client - no need to do here //var climbsAvailable = PerfCache.GetClimbsForCheckIn(checkIn.LocationID, checkIn.Utc); var climbsAvailable = geoSvc.GetClimbsOfLocationForLogging(checkIn.LocationID, checkIn.Utc); var matchClimbs = (from c in climbsAvailable where Regex.Match(c.GradeLocal ?? "Undefined", term, RegexOptions.IgnoreCase).Success || Regex.Match(c.Name, term, RegexOptions.IgnoreCase).Success || Regex.Match(SanitizeClimbTerm(c.Name), term, RegexOptions.IgnoreCase).Success select new AvailableClimb { ID = c.ID, Name = c.Name, Thumb = c.AvatarRelativeUrl, Grade = c.GradeLocal }).ToList(); if (matchClimbs.Count == 0) { matchClimbs.Add(new AvailableClimb() { ID = Guid.Empty, Name = "No climbs found - add one now!", Thumb = string.Empty, Grade = string.Empty }); } return(Json(matchClimbs)); }
public async Task GetVisitSessionByDeviceAndBrowserPair_ShouldReturnAllVisitsFromSession() { _mockEntityHelper = new Mock <IEntityHelper>(); _mockEntityHelper.Setup(s => s.GetVisitSubset(visit2, new List <string> { ipAddress } )).ReturnsAsync(new List <Visit> { visit0, visit1, visit2, visit3 }); VisitsService visitsService = new VisitsService(_mockEntityHelper.Object); var visitSession = await visitsService.GetVisitSessionByDeviceAndBrowserPair(visit2); Assert.Equal(visit2.IpAddress.Organization?.Name, visitSession.Organization); var visitSessionBlocks = visitSession.VisitSessionBlocks; Assert.Single(visitSessionBlocks); Assert.Equal(browser.Name, visitSessionBlocks[0].Browser); Assert.Equal(device.OperatingSystem, visitSessionBlocks[0].Device); Assert.Equal(4, visitSessionBlocks[0].Visits.Count); Assert.Equal(ipAddress, visitSessionBlocks[0].Visits[0].IpAddress); Assert.Equal("", visitSessionBlocks[0].Visits[0].Location); Assert.Equal(pageTitle, visitSessionBlocks[0].Visits[0].PageTitle); Assert.Equal(urlCompact, visitSessionBlocks[0].Visits[0].PageUrl); Assert.Equal("q=\"austin tech happy hour\" 2009", visitSessionBlocks[0].Visits[0].CameFrom); Assert.Equal("\"austin tech happy hour\" 2009, austin tech happy hour 2009", visitSessionBlocks[0].Visits[0].CombinedTerms); Assert.Equal(visit0, visitSessionBlocks[0].Visits[0].Visit); Assert.Equal(ipAddress, visitSessionBlocks[0].Visits[1].IpAddress); Assert.Equal("", visitSessionBlocks[0].Visits[1].Location); Assert.Equal(pageTitle, visitSessionBlocks[0].Visits[1].PageTitle); Assert.Equal("2008/20080911ATHH/?g2_page=2", visitSessionBlocks[0].Visits[1].PageUrl); Assert.Equal(cameFrom1, visitSessionBlocks[0].Visits[1].CameFrom); Assert.Null(visitSessionBlocks[0].Visits[1].CombinedTerms); Assert.Equal(visit1, visitSessionBlocks[0].Visits[1].Visit); Assert.Equal(ipAddress, visitSessionBlocks[0].Visits[2].IpAddress); Assert.Equal("", visitSessionBlocks[0].Visits[2].Location); Assert.Equal(pageTitle, visitSessionBlocks[0].Visits[2].PageTitle); Assert.Equal(urlCompact, visitSessionBlocks[0].Visits[2].PageUrl); Assert.Equal("q=\"austin tech happy hour\" 2009", visitSessionBlocks[0].Visits[2].CameFrom); Assert.Equal("\"austin tech happy hour\" 2009, austin tech happy hour 2009", visitSessionBlocks[0].Visits[2].CombinedTerms); Assert.Equal(visit2, visitSessionBlocks[0].Visits[2].Visit); Assert.Equal(ipAddress, visitSessionBlocks[0].Visits[3].IpAddress); Assert.Equal("", visitSessionBlocks[0].Visits[3].Location); Assert.Equal(pageTitle, visitSessionBlocks[0].Visits[3].PageTitle); Assert.Equal(urlCompact, visitSessionBlocks[0].Visits[3].PageUrl); Assert.Equal(cameFrom3, visitSessionBlocks[0].Visits[3].CameFrom); Assert.Null(visitSessionBlocks[0].Visits[3].CombinedTerms); Assert.Equal(visit3, visitSessionBlocks[0].Visits[3].Visit); }
public void ThrowException_WhenPassedVisitIsNull() { // Arrange var efRepositoryMock = new Mock <IEfRepository <Visit> >(); var commitMock = new Mock <ISaveContext>(); var visitsService = new VisitsService(efRepositoryMock.Object, commitMock.Object); efRepositoryMock.Setup(r => r.Update(It.IsAny <Visit>())); // Act & Assert Assert.ThrowsException <ArgumentNullException>(() => visitsService.Update(null)); }
public void CreateServiceInstance_WhenParametersAreNotNull() { // Arrange var efRepositoryMock = new Mock <IEfRepository <Visit> >(); var commitMock = new Mock <ISaveContext>(); // Act var visitsService = new VisitsService(efRepositoryMock.Object, commitMock.Object); // Assert Assert.IsNotNull(visitsService); Assert.IsInstanceOfType(visitsService, typeof(IVisitsService)); }
public void ReturnNullVisit_WhenPassedGuidIsNull() { // Arrange var efRepositoryMock = new Mock <IEfRepository <Visit> >(); var commitMock = new Mock <ISaveContext>(); var visitsService = new VisitsService(efRepositoryMock.Object, commitMock.Object); // Act Visit result = visitsService.GetById(null); // Assert Assert.IsNull(result); }
public ActionResult DeleteLoggedClimb(Guid id, Guid loggedClimbID) { var checkIn = new VisitsService().GetCheckInById(id); if (checkIn != null && ModelState.IsValid) { new VisitsService().DeleteLoggedClimb(checkIn, loggedClimbID); return(Json(new { Success = true })); } else { return(Json(new { Success = false })); } }
public async Task GetSubsequentSessionVisits_ShouldNotReturnVisitsNewerThanCertainTime() { _mockEntityHelper = new Mock <IEntityHelper>(); _mockEntityHelper.Setup(s => s.GetVisitSubset(visit2, new List <string> { ipAddress } )).ReturnsAsync(new List <Visit> { visit03, visit02, visit01, visit0, visit1, visit2, visit3, visit4, visit5, visit6 }); VisitsService visitsService = new VisitsService(_mockEntityHelper.Object); List <Visit> subsequentSessionVisits = await visitsService.GetSubsequentSessionVisits(visit2, new List <string> { ipAddress }); Assert.Equal(visit2, subsequentSessionVisits[0]); Assert.Equal(visit3, subsequentSessionVisits[1]); }
public async Task GetPrecedingSessionVisitsSessionVisits_ShouldReturnVisitsFromSessionEarlierThanGivenVisit() { _mockEntityHelper = new Mock <IEntityHelper>(); _mockEntityHelper.Setup(s => s.GetVisitSubset(visit2, new List <string> { ipAddress } )).ReturnsAsync(new List <Visit> { visit0, visit1, visit2, visit3 }); VisitsService visitsService = new VisitsService(_mockEntityHelper.Object); List <Visit> precedingSessionVisits = await visitsService.GetPrecedingSessionVisits(visit2, new List <string> { ipAddress }); Assert.Equal(visit0, precedingSessionVisits[0]); Assert.Equal(visit1, precedingSessionVisits[1]); }
public void CallRepositoryUpdateAndCommitOnce_WhenPassedVisitIsNotNull() { // Arrange var efRepositoryMock = new Mock <IEfRepository <Visit> >(); var commitMock = new Mock <ISaveContext>(); var visitsService = new VisitsService(efRepositoryMock.Object, commitMock.Object); var visit = new Visit(); efRepositoryMock.Setup(r => r.Update(visit)); commitMock.Setup(c => c.Commit()); // Act visitsService.Update(visit); // Assert efRepositoryMock.Verify(r => r.Update(visit), Times.Once); commitMock.Verify(c => c.Commit(), Times.Once); }
public ActionResult AddVisitPhotoMedia(Guid id, string mediaName) { if (!IsAuthenticated(ControllerContext.HttpContext)) { return(new HttpStatusCodeResult(401, "Operation requires authenticated access")); } var visit = new VisitsService().GetCheckInById(id); if (visit == default(CheckIn)) { return(new HttpStatusCodeResult(400, "Cannot find visit")); } var media = SaveMediaFromStream(true, mediaName, visit.LocationID); new VisitsService().AddMedia(visit, media); var by = CfPerfCache.GetClimber(CfIdentity.UserID); return(Json(new cf.Dtos.Mobile.V1.MediaDto(media, by))); }
public void ReturnVisit_WhenPassedGuidHasValue() { // Arrange var efRepositoryMock = new Mock <IEfRepository <Visit> >(); var commitMock = new Mock <ISaveContext>(); var visitsService = new VisitsService(efRepositoryMock.Object, commitMock.Object); Guid?id = Guid.NewGuid(); efRepositoryMock.Setup(r => r.GetById(id.Value)).Returns(new Visit() { Id = id.Value }); // Act var result = visitsService.GetById(id.Value); // Assert Assert.IsNotNull(result); }
public Message LogClimb(string epochUtc, string climbID, string outcome, string experience, string gradeOpinion, string rating, string comment) { SvcContext ctx = InflateContext(); if (ctx.Invalid) { return(ctx.ContextMessage); } try { var milliseconds = long.Parse(epochUtc); var loggedUtc = new DateTime(1970, 01, 01).AddMilliseconds(milliseconds); var cID = Guid.ParseExact(climbID, "N"); var climb = geoSvc.GetClimbByID(cID); var loc = CfCacheIndex.Get(climb.LocationID); var visit = new VisitsService().GetVisitByLocationAndUtc(loc, loggedUtc); var log = visitsSvc.LogClimb(visit, new LoggedClimb() { ClimbID = climb.ID, Comment = comment, Experince = byte.Parse(experience), Outcome = byte.Parse(outcome), GradeOpinion = byte.Parse(gradeOpinion), Rating = byte.Parse(rating), Utc = loggedUtc }); var dto = new LoggedClimbDetailDto(log, climb.GradeLocal, climb.Avatar, ""); return(ReturnAsJson(dto)); } catch (Exception ex) { return(Failed("Log climb failed : " + ex.Message + " " + ex.Source)); } }
public Message DeleteVisit(string id) { SvcContext ctx = InflateContext(); if (ctx.Invalid) { return(ctx.ContextMessage); } try { var ciSvc = new VisitsService(); var checkInID = Guid.ParseExact(id, "N"); var ci = ciSvc.GetCheckInById(checkInID); ciSvc.DeleteCheckIn(ci); return(ReturnAsJson(new { Success = true })); } catch (Exception ex) { return(Failed("Operation failed : " + ex.Message)); } }