|
8 | 8 |
|
9 | 9 | using Moq; |
10 | 10 | using Xunit; |
11 | | -using React.Exceptions; |
12 | 11 | using React.Router; |
13 | | -using React.Tests.Core; |
14 | 12 |
|
15 | 13 | namespace React.Tests.Router |
16 | 14 | { |
17 | 15 | public class ReactRouterComponentTest |
18 | 16 | { |
19 | | - [Fact] |
20 | | - public void RenderJavaScriptShouldNotIncludeContextOrPath() |
| 17 | + [Theory] |
| 18 | + [InlineData(true, true)] |
| 19 | + [InlineData(true, false)] |
| 20 | + [InlineData(false, true)] |
| 21 | + [InlineData(false, false)] |
| 22 | + public void RenderJavaScriptShouldNotIncludeContextOrPath(bool clientOnly, bool useServerSideRendering) |
21 | 23 | { |
22 | 24 | var environment = new Mock<IReactEnvironment>(); |
23 | 25 | var config = new Mock<IReactSiteConfiguration>(); |
| 26 | + config.Setup(x => x.UseServerSideRendering).Returns(useServerSideRendering); |
24 | 27 | var reactIdGenerator = new Mock<IReactIdGenerator>(); |
25 | 28 |
|
26 | 29 | var component = new ReactRouterComponent(environment.Object, config.Object, reactIdGenerator.Object, "Foo", "container", "/bar") |
27 | 30 | { |
28 | | - Props = new { hello = "World" } |
| 31 | + Props = new { hello = "World" }, |
| 32 | + ClientOnly = clientOnly, |
29 | 33 | }; |
30 | 34 | var result = component.RenderJavaScript(false); |
31 | 35 |
|
32 | | - Assert.Equal( |
33 | | - @"ReactDOM.hydrate(React.createElement(Foo, {""hello"":""World""}), document.getElementById(""container""))", |
34 | | - result |
35 | | - ); |
| 36 | + if (clientOnly || !useServerSideRendering) |
| 37 | + { |
| 38 | + Assert.Equal( |
| 39 | + @"ReactDOM.render(React.createElement(Foo, {""hello"":""World""}), document.getElementById(""container""))", |
| 40 | + result |
| 41 | + ); |
| 42 | + } |
| 43 | + else |
| 44 | + { |
| 45 | + Assert.Equal( |
| 46 | + @"ReactDOM.hydrate(React.createElement(Foo, {""hello"":""World""}), document.getElementById(""container""))", |
| 47 | + result |
| 48 | + ); |
| 49 | + } |
| 50 | + |
36 | 51 | } |
37 | 52 |
|
38 | | - [Fact] |
39 | | - public void RenderJavaScriptShouldHandleWaitForContentLoad() |
| 53 | + [Theory] |
| 54 | + [InlineData(true, true)] |
| 55 | + [InlineData(true, false)] |
| 56 | + [InlineData(false, true)] |
| 57 | + [InlineData(false, false)] |
| 58 | + public void RenderJavaScriptShouldHandleWaitForContentLoad(bool clientOnly, bool useServerSideRendering) |
40 | 59 | { |
41 | 60 | var environment = new Mock<IReactEnvironment>(); |
42 | 61 | var config = new Mock<IReactSiteConfiguration>(); |
| 62 | + config.Setup(x => x.UseServerSideRendering).Returns(useServerSideRendering); |
43 | 63 | var reactIdGenerator = new Mock<IReactIdGenerator>(); |
44 | 64 |
|
45 | 65 | var component = new ReactRouterComponent(environment.Object, config.Object, reactIdGenerator.Object, "Foo", "container", "/bar") |
46 | 66 | { |
47 | | - Props = new { hello = "World" } |
| 67 | + Props = new { hello = "World" }, |
| 68 | + ClientOnly = clientOnly |
48 | 69 | }; |
49 | 70 | var result = component.RenderJavaScript(true); |
50 | 71 |
|
51 | | - Assert.Equal( |
52 | | - @"window.addEventListener('DOMContentLoaded', function() {ReactDOM.hydrate(React.createElement(Foo, {""hello"":""World""}), document.getElementById(""container""))});", |
53 | | - result |
54 | | - ); |
| 72 | + if (clientOnly || !useServerSideRendering) |
| 73 | + { |
| 74 | + Assert.Equal( |
| 75 | + @"window.addEventListener('DOMContentLoaded', function() {ReactDOM.render(React.createElement(Foo, {""hello"":""World""}), document.getElementById(""container""))});", |
| 76 | + result |
| 77 | + ); |
| 78 | + } |
| 79 | + else |
| 80 | + { |
| 81 | + Assert.Equal( |
| 82 | + @"window.addEventListener('DOMContentLoaded', function() {ReactDOM.hydrate(React.createElement(Foo, {""hello"":""World""}), document.getElementById(""container""))});", |
| 83 | + result |
| 84 | + ); |
| 85 | + } |
55 | 86 | } |
56 | 87 | } |
57 | 88 | } |
|
0 commit comments