public void Initialize()
        {
            _dataCollector = new Mock<IDataCollector>();
            _setter = new ContextVariablesSetter(_dataCollector.Object, true);
            _containerProvider = new Mock<IDIContainerProvider>();

            _environment = new Mock<IEnvironment>();
            _languageManagerProvider = new Mock<ILanguageManagerProvider>();
            _languageManager = new Mock<ILanguageManager>();
            _contextProvider = new Mock<IAcspNetContextProvider>();
            _context = new Mock<IAcspNetContext>();
            _stringTable = new Mock<IStringTable>();
            _stopwatchProvider = new Mock<IStopwatchProvider>();

            _dataCollector.SetupGet(x => x.TitleVariableName).Returns("Title");

            _environment.SetupGet(x => x.TemplatesPath).Returns("Templates");
            _environment.SetupGet(x => x.SiteStyle).Returns("Main");

            _languageManager.SetupGet(x => x.Language).Returns("ru");
            _languageManagerProvider.Setup(x => x.Get()).Returns(_languageManager.Object);

            _context.SetupGet(x => x.SiteUrl).Returns("http://localhost/mysite/");
            _context.SetupGet(x => x.VirtualPath).Returns("/mysite");
            _contextProvider.Setup(x => x.Get()).Returns(_context.Object);
            _context.SetupGet(x => x.Request.PathBase).Returns(new PathString("/mysite"));

            _stopwatchProvider.Setup(x => x.StopAndGetMeasurement()).Returns(new TimeSpan(0, 0, 1, 15, 342));

            _containerProvider.Setup(x => x.Resolve(It.Is<Type>(d => d == typeof(IEnvironment)))).Returns(_environment.Object);
            _containerProvider.Setup(x => x.Resolve(It.Is<Type>(d => d == typeof(ILanguageManagerProvider)))).Returns(_languageManagerProvider.Object);
            _containerProvider.Setup(x => x.Resolve(It.Is<Type>(d => d == typeof(IAcspNetContextProvider)))).Returns(_contextProvider.Object);
            _containerProvider.Setup(x => x.Resolve(It.Is<Type>(d => d == typeof(IStringTable)))).Returns(_stringTable.Object);
            _containerProvider.Setup(x => x.Resolve(It.Is<Type>(d => d == typeof(IStopwatchProvider)))).Returns(_stopwatchProvider.Object);
        }
        public void SetVariables_TitleDefaultPageWithQueryString_AddedTitleFromStringTable()
        {
            // Assign

            _setter = new ContextVariablesSetter(_dataCollector.Object, false);
            _stringTable.Setup(x => x.GetItem(It.Is<string>(d => d == ContextVariablesSetter.SiteTitleStringTableVariableName)))
                .Returns("Test!");
            _context.SetupGet(x => x.Request.Path).Returns(new PathString("/?=lang=ru"));

            // Act
            _setter.SetVariables(_containerProvider.Object);

            // Assert
            _dataCollector.Verify(x => x.Add(It.Is<string>(d => d == "Title"), It.Is<string>(d => d == "Test!")));
        }
        public void SetVariables_TitleSpecificActionNoTitleInDataCollector_TitleAddedAfterDataInDataCollector()
        {
            // Assign

            _setter = new ContextVariablesSetter(_dataCollector.Object, false);
            _stringTable.Setup(x => x.GetItem(It.Is<string>(d => d == ContextVariablesSetter.SiteTitleStringTableVariableName)))
                .Returns("Test!");
            _context.SetupGet(x => x.Request.Path).Returns(new PathString("/foo"));
            _dataCollector.Setup(x => x.IsDataExist(It.Is<string>(d => d == "Title"))).Returns(true);

            // Act
            _setter.SetVariables(_containerProvider.Object);

            // Assert
            _dataCollector.Verify(x => x.Add(It.Is<string>(d => d == "Title"), It.Is<string>(d => d == " - Test!")));
        }
        public void SetVariables_TitleNoTitleInStringTable_AddNotInvoked()
        {
            // Assign
            _setter = new ContextVariablesSetter(_dataCollector.Object, false);

            // Act
            _setter.SetVariables(_containerProvider.Object);

            // Assert
            _dataCollector.Verify(x => x.Add(It.Is<string>(d => d == "Title"), It.IsAny<string>()), Times.Never);
        }