Skip to content

Commit 1f6e9bc

Browse files
committed
Moved xunit specific TestComponentBase to xunit project
1 parent 9096830 commit 1f6e9bc

12 files changed

Lines changed: 92 additions & 194 deletions

File tree

src/bunit.core/RazorTesting/RazorTest.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ public abstract class RazorTest : TestContextBase, ITestContext, IComponent
2424
/// </summary>
2525
[Parameter] public string? Skip { get; set; }
2626

27+
/// <summary>
28+
/// Gets or sets the timeout of the test, in milliseconds; if zero or negative, means the test case has no timeout.
29+
/// </summary>
30+
[Parameter] public int Timeout { get; set; } = 0;
31+
2732
/// <summary>
2833
/// Run the test logic of the <see cref="RazorTest"/>.
2934
/// </summary>

src/bunit.core/TestContextBase.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ public ITestRenderer Renderer
2626
}
2727

2828
/// <inheritdoc/>
29-
public virtual TestServiceProvider Services { get; } = new TestServiceProvider();
30-
29+
public virtual TestServiceProvider Services { get; }
3130
/// <inheritdoc/>
3231
public IObservable<RenderEvent> RenderEvents => Renderer.RenderEvents;
3332

@@ -36,6 +35,7 @@ public ITestRenderer Renderer
3635
/// </summary>
3736
public TestContextBase()
3837
{
38+
Services = new TestServiceProvider();
3939
Services.AddSingleton<ITestRenderer>(srv => new TestRenderer(srv, srv.GetService<ILoggerFactory>() ?? NullLoggerFactory.Instance));
4040
}
4141

src/bunit.web.tests/Components/TestComponentBaseTest/CorrectImplicitRazorTestContextAvailable.razor

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -75,17 +75,6 @@
7575
}
7676
}
7777

78-
@code {
79-
[Fact(DisplayName = "When running c# only test in razor file, all razor test context specific methods throws")]
80-
public void MyTestMethod()
81-
{
82-
Should.Throw<InvalidOperationException>(() => GetComponentUnderTest());
83-
Should.Throw<InvalidOperationException>(() => GetComponentUnderTest<IComponent>());
84-
Should.Throw<InvalidOperationException>(() => GetFragment());
85-
Should.Throw<InvalidOperationException>(() => GetFragment<IComponent>());
86-
}
87-
}
88-
8978
<SnapshotTest Description="Snapshot tests should have own context" Setup="s => s.Services.AddSingleton<ITestDep>(new Dep3())">
9079
<TestInput><SimpleWithDeps /></TestInput>
9180
<ExpectedOutput><p>@nameof(Dep3)</p></ExpectedOutput>

src/bunit.web.tests/Components/TestComponentBaseTest/GettingCutAndFragmentFromRazorTestContextTest.razor

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,23 @@
1212
@code{
1313
void CallingGetMultipleTimesReturnsSameInstance(Fixture f)
1414
{
15-
var cut1 = GetComponentUnderTest<Wrapper>();
16-
var cut2 = GetComponentUnderTest<Wrapper>();
15+
var cut1 = f.GetComponentUnderTest<Wrapper>();
16+
var cut2 = f.GetComponentUnderTest<Wrapper>();
1717

1818
Assert.True(ReferenceEquals(cut1, cut2), "Getting CUT multiple times should return the same instance");
1919
Assert.Equal("CUT", cut1.Markup);
2020

21-
var firstFragmentNoId1 = GetFragment();
22-
var firstFragmentId1 = GetFragment("first");
23-
var firstFragmentNoId2 = GetFragment();
24-
var firstFragmentId2 = GetFragment("first");
21+
var firstFragmentNoId1 = f.GetFragment();
22+
var firstFragmentId1 = f.GetFragment("first");
23+
var firstFragmentNoId2 = f.GetFragment();
24+
var firstFragmentId2 = f.GetFragment("first");
2525
Assert.True(ReferenceEquals(firstFragmentNoId1, firstFragmentId1), "Getting first fragment with and without id should return the same instance");
2626
Assert.True(ReferenceEquals(firstFragmentNoId1, firstFragmentNoId2), "Getting first fragment multiple times should return the same instance");
2727
Assert.True(ReferenceEquals(firstFragmentId1, firstFragmentId2), "Getting first fragment multiple times should return the same instance");
2828
Assert.Equal("first", firstFragmentNoId1.Markup);
2929

30-
var secondFragmentId1 = GetFragment<Wrapper>("second");
31-
var secondFragmentId2 = GetFragment<Wrapper>("second");
30+
var secondFragmentId1 = f.GetFragment<Wrapper>("second");
31+
var secondFragmentId2 = f.GetFragment<Wrapper>("second");
3232

3333
Assert.True(ReferenceEquals(secondFragmentId1, secondFragmentId2), "Getting fragment multiple times should return the same instance");
3434
Assert.Equal("second", secondFragmentId2.Markup);
@@ -46,15 +46,15 @@
4646
@code{
4747
void CallingGenericGetAfterNonGenericGetThrows(Fixture f)
4848
{
49-
GetComponentUnderTest();
49+
f.GetComponentUnderTest();
5050

5151
// It should not be possible to call the generic GetComponentUnderTest after the non-generic has been called
52-
Assert.Throws<InvalidOperationException>(() => GetComponentUnderTest<Wrapper>());
52+
Assert.Throws<InvalidOperationException>(() => f.GetComponentUnderTest<Wrapper>());
5353

54-
GetFragment();
54+
f.GetFragment();
5555

5656
// It should not be possible to call the generic GetFragment after the non-generic has been called
57-
Assert.Throws<InvalidOperationException>(() => GetFragment<Wrapper>());
57+
Assert.Throws<InvalidOperationException>(() => f.GetFragment<Wrapper>());
5858
}
5959
}
6060

@@ -69,8 +69,8 @@
6969
@code{
7070
void CallingGetCutOrGetFragmentWithWrongGenericTypeThrows(Fixture f)
7171
{
72-
Assert.Throws<ComponentNotFoundException>(() => GetComponentUnderTest<Simple1>());
73-
Assert.Throws<ComponentNotFoundException>(() => GetFragment<Simple1>());
72+
Assert.Throws<ComponentNotFoundException>(() => f.GetComponentUnderTest<Simple1>());
73+
Assert.Throws<ComponentNotFoundException>(() => f.GetFragment<Simple1>());
7474
}
7575
}
7676

@@ -85,9 +85,9 @@
8585
@code{
8686
void CallingGetCutOrGetFragmentWithIncompatibleGenericTypeThrows(Fixture f)
8787
{
88-
GetComponentUnderTest<Wrapper>();
89-
GetFragment<Wrapper>();
90-
Assert.Throws<InvalidOperationException>(() => GetComponentUnderTest<Simple1>());
91-
Assert.Throws<InvalidOperationException>(() => GetFragment<Simple1>());
88+
f.GetComponentUnderTest<Wrapper>();
89+
f.GetFragment<Wrapper>();
90+
Assert.Throws<InvalidOperationException>(() => f.GetComponentUnderTest<Simple1>());
91+
Assert.Throws<InvalidOperationException>(() => f.GetFragment<Simple1>());
9292
}
9393
}

src/bunit.web.tests/Components/TestComponentBaseTest/LifeCycleTrackerTest.razor

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,19 @@
55
<Wrapper>
66
@if (shouldRenderTracker)
77
{
8-
<LifeCycleTracker Number="renderTrigger" /> @*@ref="tracker" />*@
8+
<LifeCycleTracker Number="renderTrigger" />
99
}
1010
</Wrapper>
1111
</ComponentUnderTest>
1212
</Fixture>
1313
@code {
1414
bool shouldRenderTracker = true;
1515
int renderTrigger = 0;
16-
//LifeCycleTracker tracker = default!; // set during initial render by framework - should not be null!
1716

1817
void Test(Fixture fixture)
1918
{
20-
var cut = GetComponentUnderTest<Wrapper>();
21-
var callLog = cut.FindComponent<LifeCycleTracker>().Instance.CallLog;// tracker.CallLog;
19+
var cut = fixture.GetComponentUnderTest<Wrapper>();
20+
var callLog = cut.FindComponent<LifeCycleTracker>().Instance.CallLog;
2221

2322
// assert first render called expected methods
2423
callLog["SetParametersAsync"].ShouldBe(1);
Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,29 @@
1-
@inherits XunitTestComponentBase<Simple>
1+
@inherits TestComponentBase
22

3-
<Fixture Test="x => { }" Description="My First Test">
3+
<Fixture Test="x => { }" Description="My First Fixture Test">
44
<ComponentUnderTest>
55
<Simple1>ASDF</Simple1>
66
</ComponentUnderTest>
77
</Fixture>
88

9-
<Fixture Test="x => { }" Description="My second Test">
9+
<Fixture Test="x => { }" Description="My Second Fixture Test">
1010
<ComponentUnderTest>
1111
<Simple1>ASDF</Simple1>
1212
</ComponentUnderTest>
1313
</Fixture>
1414

1515
<SnapshotTest>
16-
<TestInput><Simple1></Simple1></TestInput>
17-
<ExpectedOutput><h1>asdf</h1></ExpectedOutput>
16+
<TestInput><Simple1/></TestInput>
17+
<ExpectedOutput><Simple1 /></ExpectedOutput>
1818
</SnapshotTest>
1919

20-
<Fixture Test="x => { }" Description="My Second Test" Skip="NOT NOW">
20+
<Fixture Test="x => { }" Description="My Third Fixture Test" Skip="NOT NOW">
2121
<ComponentUnderTest>
2222
<Simple1>ASDF</Simple1>
2323
</ComponentUnderTest>
2424
</Fixture>
2525

26-
27-
<SnapshotTest Description="ASDF" Skip="wwwbb">
26+
<SnapshotTest Description="Second snapshot test" Skip="wwwbb">
2827
<TestInput><Simple1></Simple1></TestInput>
29-
<ExpectedOutput><h1>asdf</h1></ExpectedOutput>
28+
<ExpectedOutput><h1>a</h1></ExpectedOutput>
3029
</SnapshotTest>

src/bunit.web.tests/TestComponentBase.cs

Lines changed: 0 additions & 70 deletions
This file was deleted.

src/bunit.web.tests/XunitTestComponentBase.cs

Lines changed: 0 additions & 63 deletions
This file was deleted.

src/bunit.web/RazorTesting/SnapshotTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ protected override async Task Run()
6262
var diffs = inputNodes.CompareTo(expectedNodes);
6363

6464
if (diffs.Count > 0)
65-
throw new HtmlEqualException(diffs, expectedNodes, inputNodes, Description);
65+
throw new HtmlEqualException(diffs, expectedNodes, inputNodes, Description ?? "Snapshot test failed.");
6666
}
6767

6868
/// <inheritdoc/>

src/bunit.xunit/RazorTheoryDiscoverer.cs

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)