Exemple #1
0
        public void ShouldLoadFilesThatDoNotRequireTransform()
        {
            var jsEngine = new Mock <IJsEngine>();

            jsEngine.Setup(x => x.Evaluate <int>("1 + 1")).Returns(2);

            var config = new Mock <IReactSiteConfiguration>();

            config.Setup(x => x.ScriptsWithoutTransform).Returns(new List <string> {
                "First.js", "Second.js"
            });
            config.Setup(x => x.LoadReact).Returns(true);

            var fileSystem = new Mock <IFileSystem>();

            fileSystem.Setup(x => x.ReadAsString(It.IsAny <string>())).Returns <string>(path => "CONTENTS_" + path);

            var registration = new JavaScriptEngineFactory.Registration
            {
                Factory  = () => jsEngine.Object,
                Priority = 1
            };
            var factory = new JavaScriptEngineFactory(new[] { registration }, config.Object, fileSystem.Object);

            factory.GetEngineForCurrentThread();

            jsEngine.Verify(x => x.Execute("CONTENTS_First.js"));
            jsEngine.Verify(x => x.Execute("CONTENTS_Second.js"));
        }
Exemple #2
0
        public void ShouldCatchErrorsWhileLoadingScripts()
        {
            var config = new Mock <IReactSiteConfiguration>();

            config.Setup(x => x.ScriptsWithoutTransform).Returns(new List <string> {
                "foo.js"
            });
            config.Setup(x => x.LoadReact).Returns(true);
            var fileSystem = new Mock <IFileSystem>();

            fileSystem.Setup(x => x.ReadAsString("foo.js")).Returns("FAIL PLZ");

            var jsEngine = new Mock <IJsEngine>();

            jsEngine.Setup(x => x.Evaluate <int>("1 + 1")).Returns(2);
            jsEngine.Setup(x => x.Execute("FAIL PLZ")).Throws(new JsRuntimeException("Fail")
            {
                LineNumber   = 42,
                ColumnNumber = 911,
            });
            var registration = new JavaScriptEngineFactory.Registration
            {
                Factory  = () => jsEngine.Object,
                Priority = 1
            };
            var factory = new JavaScriptEngineFactory(new[] { registration }, config.Object, fileSystem.Object);

            var ex = Assert.Throws <ReactScriptLoadException>(() => factory.GetEngineForCurrentThread());

            Assert.AreEqual("Error while loading \"foo.js\": Fail\r\nLine: 42\r\nColumn: 911", ex.Message);
        }
		private JavaScriptEngineFactory CreateFactory()
		{
			var registration = new JavaScriptEngineFactory.Registration
			{
				Factory = () =>
				{
					var mockJsEngine = new Mock<IJsEngine>();
					mockJsEngine.Setup(x => x.Evaluate<int>("1 + 1")).Returns(2);
					return mockJsEngine.Object;
				},
				Priority = 1
			};
			return new JavaScriptEngineFactory(new[] { registration });
		}
Exemple #4
0
        private JavaScriptEngineFactory CreateFactory()
        {
            var registration = new JavaScriptEngineFactory.Registration
            {
                Factory = () =>
                {
                    var mockJsEngine = new Mock <IJsEngine>();
                    mockJsEngine.Setup(x => x.Evaluate <int>("1 + 1")).Returns(2);
                    return(mockJsEngine.Object);
                },
                Priority = 1
            };

            return(new JavaScriptEngineFactory(new[] { registration }));
        }
        private JavaScriptEngineFactory CreateFactory()
        {
            var config       = new Mock <IReactSiteConfiguration>();
            var fileSystem   = new Mock <IFileSystem>();
            var registration = new JavaScriptEngineFactory.Registration
            {
                Factory = () =>
                {
                    var mockJsEngine = new Mock <IJsEngine>();
                    mockJsEngine.Setup(x => x.Evaluate <int>("1 + 1")).Returns(2);
                    return(mockJsEngine.Object);
                },
                Priority = 1
            };

            return(new JavaScriptEngineFactory(new[] { registration }, config.Object, fileSystem.Object));
        }
		private JavaScriptEngineFactory CreateFactory()
		{
			var config = new Mock<IReactSiteConfiguration>();
			config.Setup(x => x.ScriptsWithoutTransform).Returns(new List<string>());
			config.Setup(x => x.LoadReact).Returns(true);
			var fileSystem = new Mock<IFileSystem>();
			var registration = new JavaScriptEngineFactory.Registration
			{
				Factory = () =>
				{
					var mockJsEngine = new Mock<IJsEngine>();
					mockJsEngine.Setup(x => x.Evaluate<int>("1 + 1")).Returns(2);
					return mockJsEngine.Object;
				},
				Priority = 1
			};
			return new JavaScriptEngineFactory(new[] { registration }, config.Object, fileSystem.Object);
		}
Exemple #7
0
        public void ShouldHandleLoadingExternalReactVersion()
        {
            var jsEngine = new Mock <IJsEngine>();

            jsEngine.Setup(x => x.Evaluate <int>("1 + 1")).Returns(2);
            jsEngine.Setup(x => x.CallFunction <bool>("ReactNET_initReact")).Returns(true);
            var config = new Mock <IReactSiteConfiguration>();

            config.Setup(x => x.ScriptsWithoutTransform).Returns(new List <string>());
            config.Setup(x => x.LoadReact).Returns(false);
            var fileSystem   = new Mock <IFileSystem>();
            var registration = new JavaScriptEngineFactory.Registration
            {
                Factory  = () => jsEngine.Object,
                Priority = 1
            };
            var factory = new JavaScriptEngineFactory(new[] { registration }, config.Object, fileSystem.Object);

            factory.GetEngineForCurrentThread();

            jsEngine.Verify(x => x.CallFunction <bool>("ReactNET_initReact"));
        }
Exemple #8
0
        public void ShouldThrowIfReactVersionNotLoaded()
        {
            var jsEngine = new Mock <IJsEngine>();

            jsEngine.Setup(x => x.Evaluate <int>("1 + 1")).Returns(2);
            jsEngine.Setup(x => x.CallFunction <bool>("ReactNET_initReact")).Returns(false);
            var config = new Mock <IReactSiteConfiguration>();

            config.Setup(x => x.ScriptsWithoutTransform).Returns(new List <string>());
            config.Setup(x => x.LoadReact).Returns(false);
            var fileSystem   = new Mock <IFileSystem>();
            var registration = new JavaScriptEngineFactory.Registration
            {
                Factory  = () => jsEngine.Object,
                Priority = 1
            };
            var factory = new JavaScriptEngineFactory(new[] { registration }, config.Object, fileSystem.Object);

            Assert.Throws <ReactNotInitialisedException>(() =>
            {
                factory.GetEngineForCurrentThread();
            });
        }
		public void ShouldLoadFilesThatDoNotRequireTransform()
		{
			var jsEngine = new Mock<IJsEngine>();
			jsEngine.Setup(x => x.Evaluate<int>("1 + 1")).Returns(2);

			var config = new Mock<IReactSiteConfiguration>();
			config.Setup(x => x.ScriptsWithoutTransform).Returns(new List<string> { "First.js", "Second.js" });
			config.Setup(x => x.LoadReact).Returns(true);

			var fileSystem = new Mock<IFileSystem>();
			fileSystem.Setup(x => x.ReadAsString(It.IsAny<string>())).Returns<string>(path => "CONTENTS_" + path);

			var registration = new JavaScriptEngineFactory.Registration
			{
				Factory = () => jsEngine.Object,
				Priority = 1
			};
			var factory = new JavaScriptEngineFactory(new[] { registration }, config.Object, fileSystem.Object);

			factory.GetEngineForCurrentThread();

			jsEngine.Verify(x => x.Execute("CONTENTS_First.js"));
			jsEngine.Verify(x => x.Execute("CONTENTS_Second.js"));
		}
		public void ShouldCatchErrorsWhileLoadingScripts()
		{
			var config = new Mock<IReactSiteConfiguration>();
			config.Setup(x => x.ScriptsWithoutTransform).Returns(new List<string> {"foo.js"});
			config.Setup(x => x.LoadReact).Returns(true);
			var fileSystem = new Mock<IFileSystem>();
			fileSystem.Setup(x => x.ReadAsString("foo.js")).Returns("FAIL PLZ");

			var jsEngine = new Mock<IJsEngine>();
			jsEngine.Setup(x => x.Evaluate<int>("1 + 1")).Returns(2);
			jsEngine.Setup(x => x.Execute("FAIL PLZ")).Throws(new JsRuntimeException("Fail")
			{
				LineNumber = 42,
				ColumnNumber = 911,
			});
			var registration = new JavaScriptEngineFactory.Registration
			{
				Factory = () => jsEngine.Object,
				Priority = 1
			};
			var factory = new JavaScriptEngineFactory(new[] { registration }, config.Object, fileSystem.Object);

			var ex = Assert.Throws<ReactScriptLoadException>(() => factory.GetEngineForCurrentThread());
			Assert.AreEqual("Error while loading \"foo.js\": Fail\r\nLine: 42\r\nColumn: 911", ex.Message);
		}
		public void ShouldThrowIfReactVersionNotLoaded()
		{
			var jsEngine = new Mock<IJsEngine>();
			jsEngine.Setup(x => x.Evaluate<int>("1 + 1")).Returns(2);
			jsEngine.Setup(x => x.CallFunction<bool>("ReactNET_initReact")).Returns(false);
			var config = new Mock<IReactSiteConfiguration>();
			config.Setup(x => x.ScriptsWithoutTransform).Returns(new List<string>());
			config.Setup(x => x.LoadReact).Returns(false);
			var fileSystem = new Mock<IFileSystem>();
			var registration = new JavaScriptEngineFactory.Registration
			{
				Factory = () => jsEngine.Object,
				Priority = 1
			};
			var factory = new JavaScriptEngineFactory(new[] { registration }, config.Object, fileSystem.Object);

			Assert.Throws<ReactNotInitialisedException>(() =>
			{
				factory.GetEngineForCurrentThread();
			});
		}
		public void ShouldHandleLoadingExternalReactVersion()
		{
			var jsEngine = new Mock<IJsEngine>();
			jsEngine.Setup(x => x.Evaluate<int>("1 + 1")).Returns(2);
			jsEngine.Setup(x => x.CallFunction<bool>("ReactNET_initReact")).Returns(true);
			var config = new Mock<IReactSiteConfiguration>();
			config.Setup(x => x.ScriptsWithoutTransform).Returns(new List<string>());
			config.Setup(x => x.LoadReact).Returns(false);
			var fileSystem = new Mock<IFileSystem>();
			var registration = new JavaScriptEngineFactory.Registration
			{
				Factory = () => jsEngine.Object,
				Priority = 1
			};
			var factory = new JavaScriptEngineFactory(new[] { registration }, config.Object, fileSystem.Object);

			factory.GetEngineForCurrentThread();

			jsEngine.Verify(x => x.CallFunction<bool>("ReactNET_initReact"));
		}