public void TrackOutcome_ValidOutcome_ShouldRegisterOutcome([Frozen] ID outcomeDefinitionId, [Frozen] IAccountsSettingsService accountsSettingsService, [NoAutoProperties] AccountTrackerService trackerService, ITracker tracker, Contact contact, CurrentInteraction interaction)
        {
            tracker.IsActive.Returns(true);
            tracker.Contact.Returns(contact);
            tracker.Interaction.Returns(interaction);
            tracker.Session.Returns(Substitute.For <Session>());
            tracker.Session.CustomData.Returns(new Dictionary <string, object>());

            using (new TrackerSwitcher(tracker))
            {
                trackerService.TrackOutcome(outcomeDefinitionId);

                tracker.GetContactOutcomes().Should().Contain(o => o.DefinitionId == outcomeDefinitionId);
            }
        }
        public void TrackOutcome_InactiveTracker_ShouldNotTrack([Frozen] ID outcomeDefinitionId, [Frozen] IAccountsSettingsService accountsSettingsService, [NoAutoProperties] AccountTrackerService trackerService, ITracker tracker)
        {
            // Arrange
            tracker.IsActive.Returns(false);
            tracker.Session.Returns(Substitute.For <Session>());
            tracker.Session.CustomData.Returns(new Dictionary <string, object>());

            using (new TrackerSwitcher(tracker))
            {
                // Act
                trackerService.TrackOutcome(outcomeDefinitionId);

                // Assert
                tracker.GetContactOutcomes().Should().BeEmpty();
            }
        }