public void CanConstruct() { var requestInfo = CreateRequestInfo(); var visitor = new Visitor(requestInfo.VisitorIdentifier); var visit = new Visit(visitor, requestInfo); var item = CreateItem(); var action = new VisitAction(visit, VisitActionType.ContentView, item); Assert.AreEqual(VisitActionType.ContentView, action.VisitActionType); Assert.AreSame(item, action.BehaviorMonitoredItem); Assert.AreSame(visit, action.Visit); }
public void CanConstruct() { var requestInfo = CreateRequestInfo(); var visitor = new Visitor(requestInfo.VisitorIdentifier); var visit = new Visit(visitor, requestInfo); Assert.AreSame(visitor, visit.Visitor); Assert.AreEqual(requestInfo.IPAddress, visit.IPAddress); Assert.AreEqual(requestInfo.SessionId, visit.SessionId); Assert.AreEqual(requestInfo.UrlReferrer.ToString(), visit.UrlReferrer); Assert.AreEqual(requestInfo.UserAgent, visit.UserAgent); }
public VisitAction(Visit visit, VisitActionType actionType, BehaviorMonitoredItem behaviorMonitoredItem) { if (visit == null) { throw new ArgumentNullException("visit"); } if (behaviorMonitoredItem == null) { throw new ArgumentNullException("behaviorMonitoredItem"); } Visit = visit; VisitActionType = actionType; BehaviorMonitoredItem = behaviorMonitoredItem; ActionDate = DateTime.UtcNow; }
/// <summary> /// Finds the or create visit. /// </summary> /// <param name="requestInfo">The request info.</param> /// <returns></returns> public Visit FindOrCreateVisit(RequestInfo requestInfo) { if (requestInfo == null) { throw new ArgumentNullException("requestInfo"); } var visit = Visits .OrderByDescending(v => v.Id) .FirstOrDefault(v => v.SessionId == requestInfo.SessionId); if (visit == null) { visit = new Visit(this, requestInfo); this.Visits.Add(visit); } return visit; }
public void FindsLatestVisitWhenMultipleVisitRecordsForTheSameSessionIdExist() { var visitor = new Visitor(Guid.NewGuid()); var requestInfo = CreateRequestInfo(); var firstVisit = visitor.FindOrCreateVisit(requestInfo); firstVisit.Id = 1; //simulate glitch that might cause additional visit records for the same session var secondVisit = new Visit(visitor, requestInfo) { Id = 2}; visitor.Visits.Add(secondVisit); var foundVisit = visitor.FindOrCreateVisit(requestInfo); Assert.AreSame(secondVisit, foundVisit); }