Skip to content

Commit 1f06bfd

Browse files
authored
Merge pull request #25 from nanotaboada/feature/github-actions
chore: upgrade GitHub Actions workflow
2 parents 3b26f88 + 7b022a1 commit 1f06bfd

File tree

2 files changed

+46
-22
lines changed

2 files changed

+46
-22
lines changed

.github/workflows/dotnet.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ jobs:
1616

1717
steps:
1818
- name: Checkout repository
19-
uses: actions/checkout@v3
19+
uses: actions/checkout@v4
2020
- name: Setup .NET 7
21-
uses: actions/setup-dotnet@v3
21+
uses: actions/setup-dotnet@v4
2222
with:
2323
dotnet-version: 7.0.x
2424
- name: Restore dependencies
@@ -28,6 +28,6 @@ jobs:
2828
- name: Run unit tests and collect coverage
2929
run: dotnet test --no-build --collect:"XPlat Code Coverage"
3030
- name: Upload coverage reports to Codecov
31-
uses: codecov/codecov-action@v3
31+
uses: codecov/codecov-action@v4
3232
with:
3333
token: ${{ secrets.CODECOV_TOKEN }}

Dotnet.AspNetCore.Samples.WebApi.Tests/PlayerServiceTests.cs

+43-19
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,10 @@ public async Task GivenRetrieveAsync_WhenInvoked_ThenShouldReturnAllPlayers()
6767
// Arrange
6868
var players = PlayerDataBuilder.SeedWithDeserializedJson();
6969
var context = CreatePlayerContext();
70-
var logger = new Mock<ILogger<PlayerService>>();
71-
var memoryCache = new MemoryCache(new MemoryCacheOptions());
70+
var logger = CreateLoggerMock();
71+
var memoryCache = CreateMemoryCacheMock(It.IsAny<object>());
7272

73-
var service = new PlayerService(context, logger.Object, memoryCache);
73+
var service = new PlayerService(context, logger, memoryCache);
7474

7575
// Act
7676
var result = await service.RetrieveAsync();
@@ -84,11 +84,12 @@ public async Task GivenRetrieveAsync_WhenInvoked_ThenShouldReturnAllPlayers()
8484
public async Task GivenRetrieveAsync_WhenInvokedTwice_ThenSecondExecutionTimeShouldBeLessThanFirst()
8585
{
8686
// Arrange
87+
var players = PlayerDataBuilder.SeedWithDeserializedJson();
8788
var context = CreatePlayerContext();
88-
var logger = new Mock<ILogger<PlayerService>>();
89-
var memoryCache = new MemoryCache(new MemoryCacheOptions());
89+
var logger = CreateLoggerMock();
90+
var memoryCache = CreateMemoryCacheMock(players);
9091

91-
var service = new PlayerService(context, logger.Object, memoryCache);
92+
var service = new PlayerService(context, logger, memoryCache);
9293

9394
// Act
9495
var first = await ExecutionTimeAsync(() => service.RetrieveAsync());
@@ -98,27 +99,17 @@ public async Task GivenRetrieveAsync_WhenInvokedTwice_ThenSecondExecutionTimeSho
9899
second.Should().BeLessThan(first);
99100
}
100101

101-
private async Task<long> ExecutionTimeAsync(Func<Task> awaitable)
102-
{
103-
var stopwatch = new Stopwatch();
104-
stopwatch.Start();
105-
await awaitable();
106-
stopwatch.Stop();
107-
108-
return stopwatch.ElapsedMilliseconds;
109-
}
110-
111102
[Fact]
112103
[Trait("Category", "Retrieve")]
113104
public async Task GivenRetrieveByIdAsync_WhenInvokedWithPlayerId_ThenShouldReturnThePlayer()
114105
{
115106
// Arrange
116107
var player = PlayerDataBuilder.SeedOneById(10);
117108
var context = CreatePlayerContext();
118-
var logger = new Mock<ILogger<PlayerService>>();
119-
var memoryCache = new MemoryCache(new MemoryCacheOptions());
109+
var logger = CreateLoggerMock();
110+
var memoryCache = CreateMemoryCacheMock(It.IsAny<object>());
120111

121-
var service = new PlayerService(context, logger.Object, memoryCache);
112+
var service = new PlayerService(context, logger, memoryCache);
122113

123114
// Act
124115
var result = await service.RetrieveByIdAsync(10);
@@ -127,4 +118,37 @@ public async Task GivenRetrieveByIdAsync_WhenInvokedWithPlayerId_ThenShouldRetur
127118
result.Should().BeOfType<Player>();
128119
result.Should().BeEquivalentTo(player);
129120
}
121+
122+
private async Task<long> ExecutionTimeAsync(Func<Task> awaitable)
123+
{
124+
var stopwatch = new Stopwatch();
125+
126+
stopwatch.Start();
127+
await awaitable();
128+
stopwatch.Stop();
129+
130+
return stopwatch.ElapsedMilliseconds;
131+
}
132+
133+
private static ILogger<PlayerService> CreateLoggerMock()
134+
{
135+
var mock = new Mock<ILogger<PlayerService>>();
136+
137+
return mock.Object;
138+
}
139+
140+
private static IMemoryCache CreateMemoryCacheMock(object? value)
141+
{
142+
var mock = new Mock<IMemoryCache>();
143+
144+
mock
145+
.Setup(x => x.TryGetValue(It.IsAny<object>(), out value))
146+
.Returns(true);
147+
148+
mock
149+
.Setup(x => x.CreateEntry(It.IsAny<object>()))
150+
.Returns(Mock.Of<ICacheEntry>);
151+
152+
return mock.Object;
153+
}
130154
}

0 commit comments

Comments
 (0)