public void RenderHtmlShouldThrowExceptionIfComponentDoesNotExist() { var environment = new Mock<IReactEnvironment>(); environment.Setup(x => x.Execute<bool>("typeof Foo !== 'undefined'")).Returns(false); var component = new ReactComponent(environment.Object, null, "Foo", "container"); Assert.Throws<ReactInvalidComponentException>(() => { component.RenderHtml(); }); }
public void RenderHtmlShouldThrowExceptionIfComponentDoesNotExist() { var environment = new Mock<IReactEnvironment>(); environment.Setup(x => x.HasVariable("Foo")).Returns(false); var component = new ReactComponent(environment.Object, "Foo", "container"); Assert.Throws<ReactInvalidComponentException>(() => { component.RenderHtml(); }); }
public void RenderHtmlShouldCallRenderComponent() { var environment = new Mock<IReactEnvironment>(); environment.Setup(x => x.HasVariable("Foo")).Returns(true); var component = new ReactComponent(environment.Object, "Foo", "container") { Props = new { hello = "World" } }; component.RenderHtml(); environment.Verify(x => x.Execute<string>(@"React.renderComponentToString(Foo({""hello"":""World""}))")); }
public void RenderHtmlShouldCallRenderComponent() { var environment = new Mock<IReactEnvironment>(); environment.Setup(x => x.Execute<bool>("typeof Foo !== 'undefined'")).Returns(true); var config = new Mock<IReactSiteConfiguration>(); var component = new ReactComponent(environment.Object, config.Object, "Foo", "container") { Props = new { hello = "World" } }; component.RenderHtml(); environment.Verify(x => x.Execute<string>(@"React.renderToString(React.createElement(Foo, {""hello"":""World""}))")); }
public override IReactComponent CreateComponent(string tag, string text) { ReactComponent res = null; if (ComponentCreators.TryGetValue(tag, out var creator)) { res = creator(tag, text, this); } else { res = defaultCreator(tag, text, this); } res.GameObject.name = $"<{tag}>"; return(res); }
public void RenderHtmlShouldThrowExceptionIfComponentDoesNotExist() { var environment = new Mock <IReactEnvironment>(); environment.Setup(x => x.Execute <bool>("typeof Foo !== 'undefined'")).Returns(false); var config = new Mock <IReactSiteConfiguration>(); config.Setup(x => x.UseServerSideRendering).Returns(true); var component = new ReactComponent(environment.Object, config.Object, "Foo", "container"); Assert.Throws <ReactInvalidComponentException>(() => { component.RenderHtml(); }); }
public void RenderJavaScriptShouldCallRenderComponent() { var environment = new Mock<IReactEnvironment>(); var component = new ReactComponent(environment.Object, "Foo", "container") { Props = new { hello = "World" } }; var result = component.RenderJavaScript(); Assert.Equal( @"React.renderComponent(Foo({""hello"":""World""}), document.getElementById(""container""))", result ); }
public void RenderHtmlShouldWrapComponentInDiv() { var environment = new Mock<IReactEnvironment>(); environment.Setup(x => x.HasVariable("Foo")).Returns(true); environment.Setup(x => x.Execute<string>(@"React.renderComponentToString(Foo({""hello"":""World""}))")) .Returns("[HTML]"); var component = new ReactComponent(environment.Object, "Foo", "container") { Props = new { hello = "World" } }; var result = component.RenderHtml(); Assert.Equal(@"<div id=""container"">[HTML]</div>", result); }
public void RenderJavaScriptShouldCallRenderComponent() { var environment = new Mock <IReactEnvironment>(); var config = new Mock <IReactSiteConfiguration>(); var component = new ReactComponent(environment.Object, config.Object, "Foo", "container") { Props = new { hello = "World" } }; var result = component.RenderJavaScript(); Assert.Equal( @"ReactDOM.render(React.createElement(Foo, {""hello"":""World""}), document.getElementById(""container""))", result ); }
public void RenderHtmlShouldWrapComponentInDiv() { var environment = new Mock <IReactEnvironment>(); environment.Setup(x => x.Execute <bool>("typeof Foo !== 'undefined'")).Returns(true); environment.Setup(x => x.Execute <string>(@"React.renderComponentToString(Foo({""hello"":""World""}))")) .Returns("[HTML]"); var component = new ReactComponent(environment.Object, "Foo", "container") { Props = new { hello = "World" } }; var result = component.RenderHtml(); Assert.AreEqual(@"<div id=""container"">[HTML]</div>", result); }
public void RenderHtmlShouldWrapComponentInDiv() { var environment = new Mock<IReactEnvironment>(); environment.Setup(x => x.Execute<bool>("typeof Foo !== 'undefined'")).Returns(true); environment.Setup(x => x.Execute<string>(@"React.renderToString(React.createElement(Foo, {""hello"":""World""}))")) .Returns("[HTML]"); var config = new Mock<IReactSiteConfiguration>(); var component = new ReactComponent(environment.Object, config.Object, "Foo", "container") { Props = new { hello = "World" } }; var result = component.RenderHtml(); Assert.AreEqual(@"<div id=""container"">[HTML]</div>", result); }
public void RenderHtmlShouldNotRenderClientSideAttributes() { var environment = new Mock <IReactEnvironment>(); environment.Setup(x => x.Execute <bool>("typeof Foo !== 'undefined'")).Returns(true); var config = new Mock <IReactSiteConfiguration>(); var component = new ReactComponent(environment.Object, config.Object, "Foo", "container") { Props = new { hello = "World" } }; component.RenderHtml(renderServerOnly: true); environment.Verify(x => x.Execute <string>(@"ReactDOMServer.renderToStaticMarkup(React.createElement(Foo, {""hello"":""World""}))")); }
public void RenderJavaScriptShouldCallRenderComponent() { var environment = new Mock <IReactEnvironment>(); var config = CreateDefaultConfigMock(); var reactIdGenerator = new Mock <IReactIdGenerator>(); var component = new ReactComponent(environment.Object, config.Object, reactIdGenerator.Object, "Foo", "container") { Props = new { hello = "World" } }; var result = component.RenderJavaScript(false); Assert.Equal( @"ReactDOM.hydrate(React.createElement(Foo, {""hello"":""World""}), document.getElementById(""container""))", result ); }
public void RenderHtmlShouldNotRenderComponentHtml() { var environment = new Mock <IReactEnvironment>(); environment.Setup(x => x.Execute <bool>("typeof Foo !== 'undefined'")).Returns(true); environment.Setup(x => x.Execute <string>(@"React.renderToString(React.createElement(Foo, {""hello"":""World""}))")) .Returns("[HTML]"); var config = new Mock <IReactSiteConfiguration>(); var component = new ReactComponent(environment.Object, config.Object, "Foo", "container") { Props = new { hello = "World" } }; var result = component.RenderHtml(renderContainerOnly: true); Assert.Equal(@"<div id=""container""></div>", result); environment.Verify(x => x.Execute(It.IsAny <string>()), Times.Never); }
public void RenderHtmlShouldAddClassToElement() { var config = new Mock <IReactSiteConfiguration>(); var environment = new Mock <IReactEnvironment>(); environment.Setup(x => x.Execute <bool>("typeof Foo !== 'undefined'")).Returns(true); environment.Setup(x => x.Execute <string>(@"ReactDOMServer.renderToString(React.createElement(Foo, {""hello"":""World""}))")) .Returns("[HTML]"); var component = new ReactComponent(environment.Object, config.Object, "Foo", "container") { Props = new { hello = "World" }, ContainerClass = "test-class" }; var result = component.RenderHtml(); Assert.AreEqual(@"<div id=""container"" class=""test-class"">[HTML]</div>", result); }
public void RenderHtmlShouldWrapComponentInCustomElement() { var config = new Mock <IReactSiteConfiguration>(); var environment = new Mock <IReactEnvironment>(); environment.Setup(x => x.Execute <bool>("typeof Foo !== 'undefined'")).Returns(true); environment.Setup(x => x.Execute <string>(@"React.renderToString(React.createElement(Foo, {""hello"":""World""}))")) .Returns("[HTML]"); var component = new ReactComponent(environment.Object, config.Object, "Foo", "container") { Props = new { hello = "World" }, ContainerTag = "span" }; var result = component.RenderHtml(); Assert.AreEqual(@"<span id=""container"">[HTML]</span>", result); }
public void RenderHtmlShouldCallRenderComponent() { var environment = new Mock <IReactEnvironment>(); environment.Setup(x => x.Execute <bool>("typeof Foo !== 'undefined'")).Returns(true); var config = new Mock <IReactSiteConfiguration>(); config.Setup(x => x.UseServerSideRendering).Returns(true); var reactIdGenerator = new Mock <IReactIdGenerator>(); var component = new ReactComponent(environment.Object, config.Object, reactIdGenerator.Object, "Foo", "container") { Props = new { hello = "World" } }; component.RenderHtml(); environment.Verify(x => x.Execute <string>(@"ReactDOMServer.renderToString(React.createElement(Foo, {""hello"":""World""}))")); }
public void RenderHtmlShouldWrapComponentInDiv() { var environment = new Mock <IReactEnvironment>(); environment.Setup(x => x.Execute <bool>("typeof Foo !== 'undefined'")).Returns(true); environment.Setup(x => x.Execute <string>(@"ReactDOMServer.renderToString(React.createElement(Foo, {""hello"":""World""}))")) .Returns("[HTML]"); var config = new Mock <IReactSiteConfiguration>(); config.Setup(x => x.UseServerSideRendering).Returns(true); var reactIdGenerator = new Mock <IReactIdGenerator>(); var component = new ReactComponent(environment.Object, config.Object, reactIdGenerator.Object, "Foo", "container") { Props = new { hello = "World" } }; var result = component.RenderHtml(); Assert.Equal(@"<div id=""container"">[HTML]</div>", result); }
public void RenderHtmlShouldNotWrapComponentWhenServerSideOnly() { var config = CreateDefaultConfigMock(); config.Setup(x => x.UseServerSideRendering).Returns(true); var environment = new Mock <IReactEnvironment>(); environment.Setup(x => x.Execute <bool>("typeof Foo !== 'undefined'")).Returns(true); environment.Setup(x => x.Execute <string>(@"ReactDOMServer.renderToStaticMarkup(React.createElement(Foo, {""hello"":""World""}))")) .Returns("[HTML]"); var reactIdGenerator = new Mock <IReactIdGenerator>(); var component = new ReactComponent(environment.Object, config.Object, reactIdGenerator.Object, "Foo", "container") { Props = new { hello = "World" }, }; var result = component.RenderHtml(false, true); Assert.Equal(@"[HTML]", result); }
public void RenderJavaScriptShouldCallRenderComponentWithReactDomRenderWhenSsrDisabled() { var environment = new Mock <IReactEnvironment>(); var config = CreateDefaultConfigMock(); config.SetupGet(x => x.UseServerSideRendering).Returns(false); var reactIdGenerator = new Mock <IReactIdGenerator>(); var component = new ReactComponent(environment.Object, config.Object, reactIdGenerator.Object, "Foo", "container") { ClientOnly = false, Props = new { hello = "World" } }; var result = component.RenderJavaScript(); Assert.Equal( @"ReactDOM.render(React.createElement(Foo, {""hello"":""World""}), document.getElementById(""container""))", result ); }
public void RenderJavaScriptShouldHandleWaitForContentLoad() { var environment = new Mock <IReactEnvironment>(); var config = CreateDefaultConfigMock(); config.SetupGet(x => x.UseServerSideRendering).Returns(false); var reactIdGenerator = new Mock <IReactIdGenerator>(); var component = new ReactComponent(environment.Object, config.Object, reactIdGenerator.Object, "Foo", "container") { ClientOnly = false, Props = new { hello = "World" } }; using (var writer = new StringWriter()) { component.RenderJavaScript(writer, waitForDOMContentLoad: true); Assert.Equal( @"window.addEventListener('DOMContentLoaded', function() {ReactDOM.render(React.createElement(Foo, {""hello"":""World""}), document.getElementById(""container""))});", writer.ToString() ); } }
public void RenderHtmlShouldNotRenderClientSideAttributes() { var environment = new Mock<IReactEnvironment>(); environment.Setup(x => x.Execute<bool>("typeof Foo !== 'undefined'")).Returns(true); var config = new Mock<IReactSiteConfiguration>(); config.Setup(x => x.UseServerSideRendering).Returns(true); var component = new ReactComponent(environment.Object, config.Object, "Foo", "container") { Props = new { hello = "World" } }; component.RenderHtml(renderServerOnly: true); environment.Verify(x => x.Execute<string>(@"ReactDOMServer.renderToStaticMarkup(React.createElement(Foo, {""hello"":""World""}))")); }
public void GeneratesContainerIdIfNotProvided() { var environment = new Mock<IReactEnvironment>(); var config = new Mock<IReactSiteConfiguration>(); var component = new ReactComponent(environment.Object, config.Object, "Foo", null); StringAssert.StartsWith("react_", component.ContainerId); }