AdjustTest.Pcl.TestActivityHandler.TestCheckAttributionState C# (CSharp) Method

TestCheckAttributionState() public method

public TestCheckAttributionState ( ) : void
return void
        public void TestCheckAttributionState()
        {
            LogConfig.SetupLogging(logDelegate: msg => System.Diagnostics.Debug.WriteLine(msg),
                logLevel: null);

            //AdjustFactory.setTimerStart(500);
            AdjustFactory.SetSessionInterval(new TimeSpan(0,0,0,0,4000));
            /***
             * // if it's a new session
             * if (ActivityState.SubSessionCount <= 1) { return; }
             *
             * // if there is already an attribution saved and there was no attribution being asked
             * if (Attribution != null && !ActivityState.AskingAttribution) { return; }
             *
             * AttributionHandler.AskAttribution();
             */

            // create the config to start the session
            AdjustConfig config = new AdjustConfig(appToken: "123456789012", environment: AdjustConfig.EnvironmentSandbox);

            config.AttributionChanged = (adjustAttribution) => MockLogger.Test("AttributionChanged: {0}", adjustAttribution);

            // start activity handler with config
            ActivityHandler activityHandler = GetActivityHandler(config);

            DeviceUtil.Sleep(3000);

            // test init values
            InitTests();

            // subsession count is 1
            // attribution is null,
            // askingAttribution is false by default,
            // -> Not called

            // test first session start
            CheckFirstSession();

            // test that get attribution wasn't called
            Assert.NotTest("AttributionHandler AskAttribution");

            // subsession count increased to 2
            // attribution is still null,
            // askingAttribution is still false,
            // -> Called

            // trigger a new sub session
            activityHandler.TrackSubsessionStart();
            DeviceUtil.Sleep(2000);

            CheckSubsession(sessionCount:1, subsessionCount: 2,
                timerAlreadyStarted: true, askAttributionIsCalled: true);

            // subsession count increased to 3
            // attribution is still null,
            // askingAttribution is set to true,
            // -> Called

            // set asking attribution
            activityHandler.SetAskingAttribution(true);
            DeviceUtil.Sleep(1000);
            Assert.Debug("Wrote Activity state: ec:0 sc:1 ssc:2");

            // trigger a new session
            activityHandler.TrackSubsessionStart();
            DeviceUtil.Sleep(2000);

            CheckSubsession(sessionCount: 1, subsessionCount: 3,
                timerAlreadyStarted: true, askAttributionIsCalled: true);

            // subsession is reset to 1 with new session
            // attribution is still null,
            // askingAttribution is set to true,
            // -> Not called

            DeviceUtil.Sleep(3000); // 5 seconds = 2 + 3
            activityHandler.TrackSubsessionStart();
            DeviceUtil.Sleep(2000);

            CheckSubsession(sessionCount: 2, subsessionCount: 1,
                timerAlreadyStarted: true, askAttributionIsCalled: false);

            // subsession count increased to 2
            // attribution is set,
            // askingAttribution is set to true,
            // -> Called
            var jsonAttribution = "{ " +
                        "\"tracker_token\" : \"ttValue\" , " +
                        "\"tracker_name\"  : \"tnValue\" , " +
                        "\"network\"       : \"nValue\" , " +
                        "\"campaign\"      : \"cpValue\" , " +
                        "\"adgroup\"       : \"aValue\" , " +
                        "\"creative\"      : \"ctValue\" , " +
                        "\"click_label\"   : \"clValue\" }";

            var attribution = AdjustAttribution.FromJsonString(jsonAttribution);

            // update the attribution
            Assert.IsTrue(activityHandler.UpdateAttribution(attribution));

            DeviceUtil.Sleep(1000);
            // attribution was updated
            Assert.Debug("Wrote Attribution: tt:ttValue tn:tnValue net:nValue cam:cpValue adg:aValue cre:ctValue cl:clValue");

            // trigger a new sub session
            activityHandler.TrackSubsessionStart();
            DeviceUtil.Sleep(2000);

            CheckSubsession(2, 2, true, true);
            // subsession count is reset to 1
            // attribution is set,
            // askingAttribution is set to true,
            // -> Not called

            DeviceUtil.Sleep(3000); // 5 seconds = 2 + 3
            activityHandler.TrackSubsessionStart();
            DeviceUtil.Sleep(2000);

            CheckSubsession(sessionCount: 3, subsessionCount: 1,
                timerAlreadyStarted: true, askAttributionIsCalled: false);

            // subsession increased to 2
            // attribution is set,
            // askingAttribution is set to false
            // -> Not called

            activityHandler.SetAskingAttribution(false);
            DeviceUtil.Sleep(1000);
            Assert.Debug("Wrote Activity state: ec:0 sc:3 ssc:1");

            // trigger a new sub session
            activityHandler.TrackSubsessionStart();
            DeviceUtil.Sleep(2000);

            CheckSubsession(sessionCount: 3, subsessionCount: 2,
                timerAlreadyStarted: true, askAttributionIsCalled: false);

            // subsession is reset to 1
            // attribution is set,
            // askingAttribution is set to false
            // -> Not called

            DeviceUtil.Sleep(3000); // 5 seconds = 2 + 3
            activityHandler.TrackSubsessionStart();
            DeviceUtil.Sleep(2000);

            CheckSubsession(sessionCount: 4, subsessionCount: 1,
                timerAlreadyStarted: true, askAttributionIsCalled: false);
        }