public void CacheHitActivateTest() { var hitCache = new Mock <IHitCacheImplementation>(); var visitorId = visitorDelegate.VisitorId; visitorDelegate.Config.HitCacheImplementation = hitCache.Object; var defaultStrategy = new DefaultStrategy(visitorDelegate); var flag = new FlagDTO { CampaignId = "campaignId", CampaignType = "ab", IsReference = true, Key = "key", Value = "value", VariationGroupId = "varGrID", VariationId = "varID" }; var hitData = new HitCacheDTOV1 { Version = 1, Data = new HitCacheData { VisitorId = visitorDelegate.VisitorId, AnonymousId = visitorDelegate.AnonymousId, Type = HitCacheType.ACTIVATE, Content = flag, Time = DateTime.Now } }; var hitDataJson = JObject.FromObject(hitData); defaultStrategy.CacheHit(flag); hitCache.Verify(x => x.CacheHit(visitorId, It.Is <JObject>(y => y["Data"]["Type"].Value <int>() == ((int)HitCacheType.ACTIVATE) && y["Data"]["Content"].Value <JObject>().ToString() == JObject.FromObject(flag).ToString() )), Times.Once()); var error = new Exception("CacheHit error"); hitCache.Setup(x => x.CacheHit(visitorId, It.IsAny <JObject>())).Throws(error); defaultStrategy.CacheHit(flag); fsLogManagerMock.Verify(x => x.Error(error.Message, "CacheHit"), Times.Once()); }
protected virtual JObject BuildHitCacheData(object data, HitCacheType type) { var hitData = new HitCacheDTOV1 { Version = 1, Data = new HitCacheData { VisitorId = Visitor.VisitorId, AnonymousId = Visitor.AnonymousId, Type = type, Content = data, Time = DateTime.Now } }; return(JObject.FromObject(hitData)); }
public void CacheHitTest() { var hitCache = new Mock <IHitCacheImplementation>(); var visitorId = visitorDelegate.VisitorId; visitorDelegate.Config.HitCacheImplementation = hitCache.Object; var defaultStrategy = new DefaultStrategy(visitorDelegate); var hit = new Screen("Home"); var hitData = new HitCacheDTOV1 { Version = 1, Data = new HitCacheData { VisitorId = visitorDelegate.VisitorId, AnonymousId = visitorDelegate.AnonymousId, Type = HitCacheType.ACTIVATE, Content = hit, Time = DateTime.Now } }; var hitDataJson = JObject.FromObject(hitData); defaultStrategy.CacheHit(hit); hitCache.Verify(x => x.CacheHit(visitorId, It.Is <JObject>(y => y["Data"]["Type"].Value <int>() == ((int)HitCacheType.SCREENVIEW) && y["Data"]["Content"].Value <JObject>().ToString() == JObject.FromObject(hit).ToString() )), Times.Once()); var error = new Exception("CacheHit error"); hitCache.Setup(x => x.CacheHit(visitorId, It.IsAny <JObject>())).Throws(error); defaultStrategy.CacheHit(hit); fsLogManagerMock.Verify(x => x.Error(error.Message, "CacheHit"), Times.Once()); }
public void LookupHitsTest() { var hitCache = new Mock <IHitCacheImplementation>(); var visitorId = visitorDelegate.VisitorId; visitorDelegate.Config.HitCacheImplementation = hitCache.Object; var defaultStrategy = new DefaultStrategy(visitorDelegate); var screenHit = new Screen(string.Concat(Enumerable.Repeat("Home", 1000000))); var hitData = new HitCacheDTOV1 { Version = 1, Data = new HitCacheData { VisitorId = visitorDelegate.VisitorId, AnonymousId = visitorDelegate.AnonymousId, Type = HitCacheType.SCREENVIEW, Content = screenHit, Time = DateTime.Now } }; var pageHit = new Page(string.Concat(Enumerable.Repeat("Home", 1000000))); var hitData2 = new HitCacheDTOV1 { Version = 1, Data = new HitCacheData { VisitorId = visitorDelegate.VisitorId, AnonymousId = visitorDelegate.AnonymousId, Type = HitCacheType.PAGEVIEW, Content = pageHit, Time = DateTime.Now } }; var batchHit = new Batch() { Hits = new Collection <HitAbstract>() { pageHit, screenHit }, }; var hitData3 = new HitCacheDTOV1 { Version = 1, Data = new HitCacheData { VisitorId = visitorDelegate.VisitorId, AnonymousId = visitorDelegate.AnonymousId, Type = HitCacheType.BATCH, Content = batchHit, Time = DateTime.Now } }; var transactionHit = new Transaction("transactionID", "aff"); var hitData4 = new HitCacheDTOV1 { Version = 1, Data = new HitCacheData { VisitorId = visitorDelegate.VisitorId, AnonymousId = visitorDelegate.AnonymousId, Type = HitCacheType.TRANSACTION, Content = transactionHit, Time = DateTime.Now } }; var eventHit = new Event(EventCategory.USER_ENGAGEMENT, "aff"); var hitData5 = new HitCacheDTOV1 { Version = 1, Data = new HitCacheData { VisitorId = visitorDelegate.VisitorId, AnonymousId = visitorDelegate.AnonymousId, Type = HitCacheType.EVENT, Content = eventHit, Time = DateTime.Now } }; var itemHit = new Item("transID", "name", "code"); var hitData6 = new HitCacheDTOV1 { Version = 1, Data = new HitCacheData { VisitorId = visitorDelegate.VisitorId, AnonymousId = visitorDelegate.AnonymousId, Type = HitCacheType.ITEM, Content = itemHit, Time = DateTime.Now } }; var flag = new FlagDTO { CampaignId = "campaignCacheHitId", CampaignType = "ab", IsReference = true, Key = "key", Value = "value", VariationGroupId = "varGrID", VariationId = "varID" }; var hitData7 = new HitCacheDTOV1 { Version = 1, Data = new HitCacheData { VisitorId = visitorDelegate.VisitorId, AnonymousId = visitorDelegate.AnonymousId, Type = HitCacheType.ACTIVATE, Content = flag, Time = DateTime.Now } }; var array = new JArray() { JObject.FromObject(hitData), JObject.FromObject(hitData2), JObject.FromObject(hitData3), JObject.FromObject(hitData4), JObject.FromObject(hitData5), JObject.FromObject(hitData6), JObject.FromObject(hitData7), }; hitCache.Setup(x => x.LookupHits(visitorId)).Returns(Task.FromResult(array)); defaultStrategy.LookupHits(); trackingManagerMock.Verify(x => x.SendActive(visitorDelegate, It.Is <FlagDTO>( y => y.CampaignId == flag.CampaignId && y.CampaignType == flag.CampaignType && y.IsReference == flag.IsReference && y.Key == flag.Key && y.Value == flag.Value && y.VariationGroupId == flag.VariationGroupId && y.VariationId == flag.VariationId)), Times.Once()); Func <HitAbstract, bool> checkHit = (HitAbstract hitAbstract) => { switch (hitAbstract.Type) { case HitType.PAGEVIEW: var page = (Page)hitAbstract; return(page.DocumentLocation == pageHit.DocumentLocation); case HitType.SCREENVIEW: var screen = (Screen)hitAbstract; return(screen.DocumentLocation == screenHit.DocumentLocation); case HitType.TRANSACTION: var transaction = (Transaction)hitAbstract; return(transaction.TransactionId == transactionHit.TransactionId && transaction.Affiliation == transactionHit.Affiliation); case HitType.ITEM: var item = (Item)hitAbstract; return(item.TransactionId == itemHit.TransactionId && item.Code == itemHit.Code && item.Name == itemHit.Name); case HitType.EVENT: var eventObject = (Event)hitAbstract; return(eventObject.Category == eventHit.Category && eventObject.Action == eventHit.Action); case HitType.BATCH: var batch = (Batch)hitAbstract; return(batch.Hits.Count == 2); default: break; } return(false); }; trackingManagerMock.Verify(x => x.SendHit(It.Is <Batch>(y => y.Hits.Any(checkHit))), Times.Exactly(4)); }