public void ModeName_Returns_The_Current_Mode_As_A_String()
        {
            var accessor           = Substitute.For <IHttpContextAccessor>();
            var pageBuilderFeature = Substitute.For <IPageBuilderFeature>();

            pageBuilderFeature.EditMode.Returns(true);
            var previewFeature = Substitute.For <IPreviewFeature>();

            previewFeature.Enabled.Returns(true);
            var kenticoFeature = Substitute.For <IFeatureSet>();

            kenticoFeature.GetFeature <IPageBuilderFeature>().Returns(pageBuilderFeature);
            kenticoFeature.GetFeature <IPreviewFeature>().Returns(previewFeature);

            var http = Substitute.For <HttpContext>();

            http.Items = new Dictionary <object, object>
            {
                { "Kentico.Features", kenticoFeature }
            };

            accessor.HttpContext.Returns(http);

            var context = new XperiencePageBuilderContext(accessor);

            context.ModeName().Should().Be(nameof(PageBuilderMode.Edit));
        }
        public void IsLivePreviewMode_Will_Be_True_If_EditMode_Is_False_And_PreviewMode_Is_True(
            bool previewMode, bool editMode, bool livePreviewMode)
        {
            var accessor           = Substitute.For <IHttpContextAccessor>();
            var pageBuilderFeature = Substitute.For <IPageBuilderFeature>();

            pageBuilderFeature.EditMode.Returns(editMode);
            var previewFeature = Substitute.For <IPreviewFeature>();

            previewFeature.Enabled.Returns(previewMode);
            var kenticoFeature = Substitute.For <IFeatureSet>();

            kenticoFeature.GetFeature <IPageBuilderFeature>().Returns(pageBuilderFeature);
            kenticoFeature.GetFeature <IPreviewFeature>().Returns(previewFeature);

            var http = Substitute.For <HttpContext>();

            http.Items = new Dictionary <object, object>
            {
                { "Kentico.Features", kenticoFeature }
            };

            accessor.HttpContext.Returns(http);

            var context = new XperiencePageBuilderContext(accessor);

            context.IsLivePreviewMode.Should().Be(livePreviewMode);
        }
        public void IsPreviewMode_Will_Be_False_If_There_Is_No_HttpContext()
        {
            var accessor = Substitute.For <IHttpContextAccessor>();

            accessor.HttpContext.ReturnsNull();

            var context = new XperiencePageBuilderContext(accessor);

            context.IsPreviewMode.Should().BeFalse();
        }
        public void IsPreviewMode_Will_Be_False_If_There_Is_No_KenticoFeatures_FeatureSet()
        {
            var accessor = Substitute.For <IHttpContextAccessor>();

            var http = Substitute.For <HttpContext>();

            http.Items = new Dictionary <object, object>
            {
                { "Kentico.Features", null }
            };

            accessor.HttpContext.Returns(http);

            var context = new XperiencePageBuilderContext(accessor);

            context.IsPreviewMode.Should().BeFalse();
        }
        public void IsPreviewMode_Will_Be_True_If_PreviewFeature_Is_Enabled()
        {
            var accessor       = Substitute.For <IHttpContextAccessor>();
            var previewFeature = Substitute.For <IPreviewFeature>();

            previewFeature.Enabled.Returns(true);
            var kenticoFeature = Substitute.For <IFeatureSet>();

            kenticoFeature.GetFeature <IPreviewFeature>().Returns(previewFeature);

            var http = Substitute.For <HttpContext>();

            http.Items = new Dictionary <object, object>
            {
                { "Kentico.Features", kenticoFeature }
            };

            accessor.HttpContext.Returns(http);

            var context = new XperiencePageBuilderContext(accessor);

            context.IsPreviewMode.Should().BeTrue();
        }
        public void IsEditMode_Will_Be_False_If_PageBuilderFeature_Is_Not_In_EditMode()
        {
            var accessor           = Substitute.For <IHttpContextAccessor>();
            var pageBuilderFeature = Substitute.For <IPageBuilderFeature>();

            pageBuilderFeature.EditMode.Returns(false);
            var kenticoFeature = Substitute.For <IFeatureSet>();

            kenticoFeature.GetFeature <IPageBuilderFeature>().Returns(pageBuilderFeature);

            var http = Substitute.For <HttpContext>();

            http.Items = new Dictionary <object, object>
            {
                { "Kentico.Features", kenticoFeature }
            };

            accessor.HttpContext.Returns(http);

            var context = new XperiencePageBuilderContext(accessor);

            context.IsEditMode.Should().BeFalse();
        }