From 2f91cce1c29ac4b9b49ca389b565c66199985f2d Mon Sep 17 00:00:00 2001 From: crupest Date: Thu, 18 Jun 2020 17:49:02 +0800 Subject: feat(back): Add last modified to timeline. --- Timeline.Tests/IntegratedTests/TimelineTest.cs | 72 +++++++++++++++++++++----- 1 file changed, 60 insertions(+), 12 deletions(-) (limited to 'Timeline.Tests/IntegratedTests/TimelineTest.cs') diff --git a/Timeline.Tests/IntegratedTests/TimelineTest.cs b/Timeline.Tests/IntegratedTests/TimelineTest.cs index b6a56e94..6736fecd 100644 --- a/Timeline.Tests/IntegratedTests/TimelineTest.cs +++ b/Timeline.Tests/IntegratedTests/TimelineTest.cs @@ -78,10 +78,12 @@ namespace Timeline.Tests.IntegratedTests return $"timelines/t{id}/{(subpath ?? "")}"; } + public delegate string TimelineUrlGenerator(int userId, string subpath = null); + public static IEnumerable TimelineUrlGeneratorData() { - yield return new[] { new Func(GeneratePersonalTimelineUrl) }; - yield return new[] { new Func(GenerateOrdinaryTimelineUrl) }; + yield return new[] { new TimelineUrlGenerator(GeneratePersonalTimelineUrl) }; + yield return new[] { new TimelineUrlGenerator(GenerateOrdinaryTimelineUrl) }; } private static string GeneratePersonalTimelineUrlByName(string name, string subpath = null) @@ -545,7 +547,7 @@ namespace Timeline.Tests.IntegratedTests [Theory] [MemberData(nameof(TimelineUrlGeneratorData))] - public async Task Description_Should_Work(Func generator) + public async Task Description_Should_Work(TimelineUrlGenerator generator) { using var client = await CreateClientAsUser(); @@ -585,7 +587,7 @@ namespace Timeline.Tests.IntegratedTests [Theory] [MemberData(nameof(TimelineUrlGeneratorData))] - public async Task Member_Should_Work(Func generator) + public async Task Member_Should_Work(TimelineUrlGenerator generator) { var getUrl = generator(1, null); using var client = await CreateClientAsUser(); @@ -682,7 +684,7 @@ namespace Timeline.Tests.IntegratedTests [Theory] [MemberData(nameof(TimelineUrlGeneratorData))] - public async Task Visibility_Test(Func generator) + public async Task Visibility_Test(TimelineUrlGenerator generator) { var userUrl = generator(1, "posts"); var adminUrl = generator(0, "posts"); @@ -765,7 +767,7 @@ namespace Timeline.Tests.IntegratedTests [Theory] [MemberData(nameof(TimelineUrlGeneratorData))] - public async Task Permission_Post_Create(Func generator) + public async Task Permission_Post_Create(TimelineUrlGenerator generator) { using (var client = await CreateClientAsUser()) { @@ -817,7 +819,7 @@ namespace Timeline.Tests.IntegratedTests [Theory] [MemberData(nameof(TimelineUrlGeneratorData))] - public async Task Permission_Post_Delete(Func generator) + public async Task Permission_Post_Delete(TimelineUrlGenerator generator) { async Task CreatePost(int userNumber) { @@ -885,7 +887,7 @@ namespace Timeline.Tests.IntegratedTests [Theory] [MemberData(nameof(TimelineUrlGeneratorData))] - public async Task TextPost_ShouldWork(Func generator) + public async Task TextPost_ShouldWork(TimelineUrlGenerator generator) { { using var client = await CreateClientAsUser(); @@ -963,7 +965,7 @@ namespace Timeline.Tests.IntegratedTests [Theory] [MemberData(nameof(TimelineUrlGeneratorData))] - public async Task GetPost_Should_Ordered(Func generator) + public async Task GetPost_Should_Ordered(TimelineUrlGenerator generator) { using var client = await CreateClientAsUser(); @@ -991,7 +993,7 @@ namespace Timeline.Tests.IntegratedTests [Theory] [MemberData(nameof(TimelineUrlGeneratorData))] - public async Task CreatePost_InvalidModel(Func generator) + public async Task CreatePost_InvalidModel(TimelineUrlGenerator generator) { using var client = await CreateClientAsUser(); @@ -1035,7 +1037,7 @@ namespace Timeline.Tests.IntegratedTests [Theory] [MemberData(nameof(TimelineUrlGeneratorData))] - public async Task ImagePost_ShouldWork(Func generator) + public async Task ImagePost_ShouldWork(TimelineUrlGenerator generator) { var imageData = ImageHelper.CreatePngWithSize(100, 200); @@ -1119,7 +1121,7 @@ namespace Timeline.Tests.IntegratedTests [Theory] [MemberData(nameof(TimelineUrlGeneratorData))] - public async Task ImagePost_400(Func generator) + public async Task ImagePost_400(TimelineUrlGenerator generator) { using var client = await CreateClientAsUser(); @@ -1145,5 +1147,51 @@ namespace Timeline.Tests.IntegratedTests .And.HaveCommonBody(ErrorCodes.TimelineController.PostNoData); } } + + [Theory] + [MemberData(nameof(TimelineUrlGeneratorData))] + public async Task LastModified(TimelineUrlGenerator generator) + { + using var client = await CreateClientAsUser(); + + DateTime lastModified; + + { + var res = await client.GetAsync(generator(1)); + lastModified = res.Should().HaveStatusCode(200) + .And.HaveJsonBody() + .Which.LastModified; + } + + await Task.Delay(1000); + + { + var res = await client.PatchAsJsonAsync(generator(1), new TimelinePatchRequest { Description = "123" }); + lastModified = res.Should().HaveStatusCode(200) + .And.HaveJsonBody() + .Which.LastModified.Should().BeAfter(lastModified).And.Subject.Value; + } + + { + var res = await client.GetAsync(generator(1)); + res.Should().HaveStatusCode(200) + .And.HaveJsonBody() + .Which.LastModified.Should().Be(lastModified); + } + + await Task.Delay(1000); + + { + var res = await client.PutAsync(generator(1, "members/user2"), null); + res.Should().HaveStatusCode(200); + } + + { + var res = await client.GetAsync(generator(1)); + res.Should().HaveStatusCode(200) + .And.HaveJsonBody() + .Which.LastModified.Should().BeAfter(lastModified); + } + } } } -- cgit v1.2.3