Provides context variables setter
Inheritance: IContextVariablesSetter
		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<IWebContextProvider>();
			_context = new Mock<IWebContext>();
			_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");

			// Language-country code used in test but not suppored in LanguageManager for now
			Thread.CurrentThread.CurrentCulture = new CultureInfo("ru-RU");

			_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(IWebContextProvider)))).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);
		}