Example #1
0
        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());
        }
Example #2
0
        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));
        }
Example #3
0
        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());
        }
Example #4
0
        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));
        }