public ControlTestHelper(bool debug = true, Action <DotvvmConfiguration> config = null, Action <IServiceCollection> services = null) { fileLoader = new FakeMarkupFileLoader(null); this.configuration = DotvvmTestHelper.CreateConfiguration(s => { s.AddSingleton <IMarkupFileLoader>(fileLoader); services?.Invoke(s); }); this.configuration.Markup.AddCodeControls("tc", exampleControl: typeof(FakeHeadResourceLink)); this.configuration.ApplicationPhysicalPath = Path.GetTempPath(); this.configuration.Debug = debug; config?.Invoke(this.configuration); presenter = (DotvvmPresenter)this.configuration.ServiceProvider.GetRequiredService <IDotvvmPresenter>(); }
public void ResourceManager_DependentResources() { var configuration = DotvvmTestHelper.CreateConfiguration(); var manager = new ResourceManager(configuration.Resources); manager.AddRequiredResource(ResourceConstants.DotvvmResourceName); var resourcesInCorrectOrder = manager.GetResourcesInOrder().ToList(); Assert.AreEqual(configuration.Resources.FindResource(ResourceConstants.KnockoutJSResourceName), resourcesInCorrectOrder[0]); Assert.AreEqual(configuration.Resources.FindResource(ResourceConstants.PolyfillResourceName), resourcesInCorrectOrder[1]); Assert.AreEqual(configuration.Resources.FindResource(ResourceConstants.DotvvmResourceName + ".internal"), resourcesInCorrectOrder[2]); Assert.AreEqual(configuration.Resources.FindResource(ResourceConstants.DotvvmResourceName), resourcesInCorrectOrder[3]); }
public void ResourceManager_ConfigurationDeserialization() { //define var config1 = DotvvmTestHelper.CreateConfiguration(); config1.Resources.Register("rs1", new ScriptResource(new FileResourceLocation("file.js"))); config1.Resources.Register("rs2", new StylesheetResource(new UrlResourceLocation("http://c.c/"))); config1.Resources.Register("rs3", new StylesheetResource(new EmbeddedResourceLocation(typeof(DotvvmConfiguration).GetTypeInfo().Assembly, "DotVVM.Framework.Resources.Scripts.knockout-latest.js", "../file.js"))); config1.Resources.Register("rs4", new InlineScriptResource("CODE", ResourceRenderPosition.Head)); config1.Resources.Register("rs5", new NullResource()); config1.Resources.Register("rs6", new ScriptResource( new UrlResourceLocation("http://d.d/")) { LocationFallback = new ResourceLocationFallback("condition", new FileResourceLocation("file1.js")) }); config1.Resources.Register("rs7", new PolyfillResource() { RenderPosition = ResourceRenderPosition.Head }); config1.Resources.Register("rs8", new ScriptResource(new JQueryGlobalizeResourceLocation(CultureInfo.GetCultureInfo("en-US")))); // serialize & deserialize JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto }; var config2 = JsonConvert.DeserializeObject <DotvvmConfiguration>(JsonConvert.SerializeObject(config1, settings), settings); //test Assert.IsTrue(config2.Resources.FindResource("rs1") is ScriptResource rs1 && rs1.Location is FileResourceLocation rs1loc && rs1loc.FilePath == "file.js"); Assert.IsTrue(config2.Resources.FindResource("rs2") is StylesheetResource rs2 && rs2.Location is UrlResourceLocation rs2loc && rs2loc.Url == "http://c.c/"); Assert.IsTrue(config2.Resources.FindResource("rs3") is StylesheetResource rs3 && rs3.Location is EmbeddedResourceLocation rs3loc && rs3loc.Assembly.GetName().Name == "DotVVM.Framework" && rs3loc.Name == "DotVVM.Framework.Resources.Scripts.knockout-latest.js" && rs3loc.DebugFilePath == "../file.js"); Assert.IsTrue(config2.Resources.FindResource("rs4") is InlineScriptResource rs4 && rs4.RenderPosition == ResourceRenderPosition.Head && rs4.Code == "CODE"); Assert.IsTrue(config2.Resources.FindResource("rs5") is NullResource); Assert.IsTrue(config2.Resources.FindResource("rs6") is ScriptResource rs6 && rs6.Location is UrlResourceLocation rs6loc && rs6loc.Url == "http://d.d/" && rs6.LocationFallback.JavascriptCondition == "condition" && rs6.LocationFallback.AlternativeLocations.Single() is FileResourceLocation rs6loc2 && rs6loc2.FilePath == "file1.js"); Assert.IsTrue(config2.Resources.FindResource("rs7") is PolyfillResource rs7 && rs7.RenderPosition == ResourceRenderPosition.Head); Assert.IsTrue(config2.Resources.FindResource("rs8") is ScriptResource rs8 && rs8.Location is JQueryGlobalizeResourceLocation rs8loc); }
public string CompileBinding(Func<Dictionary<string, Expression>, Expression> expr, Type[] contexts) { var context = DataContextStack.Create(contexts.FirstOrDefault() ?? typeof(object), extensionParameters: new BindingExtensionParameter[]{ new BindingPageInfoExtensionParameter() }); for (int i = 1; i < contexts.Length; i++) { context = DataContextStack.Create(contexts[i], context); } var expressionTree = expr(BindingExpressionBuilder.GetParameters(context).ToDictionary(e => e.Name, e => (Expression)e)); var configuration = DotvvmTestHelper.CreateConfiguration(); var jsExpression = new JsParenthesizedExpression(configuration.ServiceProvider.GetRequiredService<JavascriptTranslator>().CompileToJavascript(expressionTree, context)); jsExpression.AcceptVisitor(new KnockoutObservableHandlingVisitor(true)); JsTemporaryVariableResolver.ResolveVariables(jsExpression); return JavascriptTranslator.FormatKnockoutScript(jsExpression.Expression); }
public void ResourceManager_ConfigurationOldDeserialization() { var json = string.Format(@" {{ 'resources': {{ 'scripts': {{ '{0}': {{ 'url': 'different url', 'globalObjectName': '$'}} }}, 'stylesheets': {{ 'newResource': {{ 'url': 'test' }} }} }} }}", ResourceConstants.GlobalizeResourceName); var configuration = DotvvmTestHelper.CreateConfiguration(); JsonConvert.PopulateObject(json.Replace("'", "\""), configuration); Assert.IsTrue(configuration.Resources.FindResource(ResourceConstants.GlobalizeResourceName) is ScriptResource); Assert.IsTrue(configuration.Resources.FindResource("newResource") is StylesheetResource); }
public void PropertyPath_GetPropertyPath() { var viewModel = new SampleViewModel { Context = new TestDotvvmRequestContext { Configuration = DotvvmTestHelper.CreateConfiguration(), ModelState = new ModelState() } }; viewModel.Context.ModelState.ValidationTarget = viewModel; var error = viewModel.AddModelError(vm => vm.Users[0].Post.PostText, "Testing validation error."); Assert.AreEqual("Users()[0]().Post().PostText", error.PropertyPath); }
public void IntegrityCheck_ShouldSucceed() { //Arrange var configuration = DotvvmTestHelper.CreateConfiguration(); configuration.Resources.Register("jquery", new ScriptResource { Location = new UrlResourceLocation(_jqueryUri), VerifyResourceIntegrity = true, IntegrityHash = _integrityHash }); var jquery = configuration.Resources.FindResource("jquery") as ScriptResource; //Act string scriptTag = RenderResource(configuration, jquery); //Assert Assert.IsTrue(scriptTag.Contains("integrity")); Assert.IsTrue(scriptTag.Contains(_integrityHash)); }
public void RouteTable_Deserialization() { var config1 = DotvvmTestHelper.CreateConfiguration(); config1.RouteTable.Add("route1", "url1", "file1.dothtml", new { a = "ccc" }); config1.RouteTable.Add("route2", "url2/{int:posint}", "file1.dothtml", new { a = "ccc" }); // Add unknwon constraint, simulate user defined constraint that is not known to the VS Extension var r = new DotvvmRoute("url3", "file1.dothtml", new { }, () => null, config1); typeof(RouteBase).GetProperty("Url").SetMethod.Invoke(r, new[] { "url3/{a:unsuppotedConstraint}" }); config1.RouteTable.Add("route3", r); var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto }; var config2 = JsonConvert.DeserializeObject<DotvvmConfiguration>(JsonConvert.SerializeObject(config1, settings), settings); Assert.AreEqual(config2.RouteTable["route1"].Url, "url1"); Assert.AreEqual(config2.RouteTable["route2"].Url, "url2/{int:posint}"); Assert.AreEqual(config2.RouteTable["route3"].Url, "url3/{a:unsuppotedConstraint}"); }
public string CompileBinding(string expression, Type[] contexts, Type expectedType) { var context = DataContextStack.Create(contexts.FirstOrDefault() ?? typeof(object), extensionParameters: new BindingExtensionParameter[] { new BindingPageInfoExtensionParameter() }); for (int i = 1; i < contexts.Length; i++) { context = DataContextStack.Create(contexts[i], context); } var parser = new BindingExpressionBuilder(); var expressionTree = TypeConversion.ImplicitConversion(parser.Parse(expression, context, BindingParserOptions.Create <ValueBindingExpression>()), expectedType, true, true); var configuration = DotvvmTestHelper.CreateConfiguration(); var jsExpression = new JsParenthesizedExpression(configuration.ServiceLocator.GetService <JavascriptTranslator>().CompileToJavascript(expressionTree, context)); jsExpression.AcceptVisitor(new KnockoutObservableHandlingVisitor(true)); JsTemporaryVariableResolver.ResolveVariables(jsExpression); return(JavascriptTranslator.FormatKnockoutScript(jsExpression.Expression)); }
public void PropertyPath_GetPropertyPath() { var viewModel = new SampleViewModel { Context = new TestDotvvmRequestContext { Configuration = DotvvmTestHelper.CreateConfiguration(), ModelState = new ModelState() } }; var error = new ViewModelValidationError { ErrorMessage = "Testing validation error.", PropertyPath = PropertyPath.BuildPath <SampleViewModel>(vm => vm.Users[0].Post.PostText, viewModel.Context.Configuration) }; viewModel.Context.ModelState.Errors.Add(error); Assert.AreEqual("Users()[0].Post().PostText", error.PropertyPath); }
public void TestInit() { configuration = DotvvmTestHelper.CreateConfiguration(); configuration.Markup.AddCodeControls("cc", typeof(ClassWithInnerElementProperty)); }
private IViewModelValidator CreateValidator() => DotvvmTestHelper.CreateConfiguration().ServiceLocator.GetService <IViewModelValidator>();
public virtual void Initialize() { Configuration = DotvvmTestHelper.CreateConfiguration(); BindingService = Configuration.ServiceProvider.GetRequiredService <BindingCompilationService>(); }
public void INIT() { this.configuration = DotvvmTestHelper.CreateConfiguration(); this.bindingService = configuration.ServiceProvider.GetRequiredService <BindingCompilationService>(); }
private IViewModelValidator CreateValidator() => DotvvmTestHelper.CreateConfiguration().ServiceProvider.GetRequiredService <IViewModelValidator>();
public void TestInit() { configuration = DotvvmTestHelper.CreateConfiguration(); configuration.Markup.AddCodeControls("cc", typeof(ClassWithInnerElementProperty)); controlTreeResolver = configuration.ServiceProvider.GetRequiredService <IControlTreeResolver>(); }
public void INIT() { this.configuration = DotvvmTestHelper.CreateConfiguration(); this.bindingService = configuration.ServiceLocator.GetService <BindingCompilationService>(); }
public void INIT() { this.configuration = DotvvmTestHelper.CreateConfiguration(); configuration.RegisterApiClient(typeof(TestApiClient), "http://server/api", "./apiscript.js", "_testApi"); this.bindingService = configuration.ServiceProvider.GetRequiredService <BindingCompilationService>(); }
private DotvvmConfiguration ApplyPatches(params JObject[] patches) => ApplyPatches(DotvvmTestHelper.CreateConfiguration(), patches);