From 863a3a63acac216a28c2b05e78413a6f41b3e1fc Mon Sep 17 00:00:00 2001 From: Greg Hays Date: Mon, 16 Jun 2025 14:56:44 -0700 Subject: [PATCH 1/2] MINOR CODE RUB: Repository Acceptance Post-Put * Closes #317 --- .../RepositoriesApiTests.Logic.cs | 27 ++++++++++++------- .../Apis/Repositories/RepositoriesApiTests.cs | 3 +++ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/GitFyle.Core.Api.Tests.Acceptance/Apis/Repositories/RepositoriesApiTests.Logic.cs b/GitFyle.Core.Api.Tests.Acceptance/Apis/Repositories/RepositoriesApiTests.Logic.cs index ce328c17..0b04c7ea 100644 --- a/GitFyle.Core.Api.Tests.Acceptance/Apis/Repositories/RepositoriesApiTests.Logic.cs +++ b/GitFyle.Core.Api.Tests.Acceptance/Apis/Repositories/RepositoriesApiTests.Logic.cs @@ -2,6 +2,7 @@ // Copyright (c) The Standard Organization: A coalition of the Good-Hearted Engineers // ---------------------------------------------------------------------------------- +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -18,22 +19,29 @@ public partial class RepositoriesApiTests public async Task ShouldPostRepositoryAsync() { // given - Source randomSource = await PostRandomSourceAsync(); - Repository randomRepository = await PostRandomRepository(sourceId: randomSource.Id); + DateTime postDateTime = DateTime.UtcNow; + Source randomSource = CreateRandomSource(postDateTime); + Source inputSource = randomSource; + Repository randomRepository = CreateRandomRepository(inputSource.Id); Repository inputRepository = randomRepository; Repository expectedRepository = inputRepository.DeepClone(); // when + await this.gitFyleCoreApiBroker.PostSourceAsync(inputSource); + inputRepository.SourceId = inputSource.Id; + expectedRepository.SourceId = inputSource.Id; + await this.gitFyleCoreApiBroker.PostRepositoryAsync(inputRepository); + Repository actualRepository = await this.gitFyleCoreApiBroker.GetRepositoryByIdAsync(inputRepository.Id); // then actualRepository.Should().BeEquivalentTo(expectedRepository); await this.gitFyleCoreApiBroker.DeleteRepositoryByIdAsync(actualRepository.Id); - await this.gitFyleCoreApiBroker.DeleteSourceByIdAsync(randomSource.Id); - } + await this.gitFyleCoreApiBroker.DeleteSourceByIdAsync(inputSource.Id); + } - [Fact] + [Fact] public async Task ShouldGetRepositoryByIdAsync() { // given @@ -83,11 +91,12 @@ public async Task ShouldGetAllRepositoriesAsync() [Fact] public async Task ShouldPutRepositoryAsync() { - // given + // given . when Source randomSource = await PostRandomSourceAsync(); - Repository modifiedRepository = await ModifyRandomRepository(sourceId: randomSource.Id); - - // when + + Repository modifiedRepository = + await ModifyRandomRepository(sourceId: randomSource.Id); + await this.gitFyleCoreApiBroker.PutRepositoryAsync(modifiedRepository); Repository actualRepository = diff --git a/GitFyle.Core.Api.Tests.Acceptance/Apis/Repositories/RepositoriesApiTests.cs b/GitFyle.Core.Api.Tests.Acceptance/Apis/Repositories/RepositoriesApiTests.cs index bba6ea98..9066f607 100644 --- a/GitFyle.Core.Api.Tests.Acceptance/Apis/Repositories/RepositoriesApiTests.cs +++ b/GitFyle.Core.Api.Tests.Acceptance/Apis/Repositories/RepositoriesApiTests.cs @@ -49,6 +49,9 @@ private async ValueTask ModifyRandomRepository(Guid sourceId) return randomRepository; } + private static DateTimeOffset GetRandomDateTimeOffset() => + new DateTimeRange(earliestDate: new DateTime()).GetValue(); + private static int GetRandomNumber() => new IntRange(min: 2, max: 10).GetValue(); From 978f7f1a0fe75a09916be2f7a4d326296116cc85 Mon Sep 17 00:00:00 2001 From: Greg Hays Date: Mon, 23 Jun 2025 11:59:34 -0700 Subject: [PATCH 2/2] CODE RUB: Refactor Comment Resolution --- .../RepositoriesApiTests.Logic.cs | 51 +++++++++++-------- .../Apis/Repositories/RepositoriesApiTests.cs | 23 +++++---- .../GitFyleCoreApiBroker.Repositories.cs | 4 +- 3 files changed, 45 insertions(+), 33 deletions(-) diff --git a/GitFyle.Core.Api.Tests.Acceptance/Apis/Repositories/RepositoriesApiTests.Logic.cs b/GitFyle.Core.Api.Tests.Acceptance/Apis/Repositories/RepositoriesApiTests.Logic.cs index 0b04c7ea..86bfa270 100644 --- a/GitFyle.Core.Api.Tests.Acceptance/Apis/Repositories/RepositoriesApiTests.Logic.cs +++ b/GitFyle.Core.Api.Tests.Acceptance/Apis/Repositories/RepositoriesApiTests.Logic.cs @@ -2,7 +2,6 @@ // Copyright (c) The Standard Organization: A coalition of the Good-Hearted Engineers // ---------------------------------------------------------------------------------- -using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -19,8 +18,7 @@ public partial class RepositoriesApiTests public async Task ShouldPostRepositoryAsync() { // given - DateTime postDateTime = DateTime.UtcNow; - Source randomSource = CreateRandomSource(postDateTime); + Source randomSource = CreateRandomSource(); Source inputSource = randomSource; Repository randomRepository = CreateRandomRepository(inputSource.Id); Repository inputRepository = randomRepository; @@ -39,64 +37,73 @@ public async Task ShouldPostRepositoryAsync() actualRepository.Should().BeEquivalentTo(expectedRepository); await this.gitFyleCoreApiBroker.DeleteRepositoryByIdAsync(actualRepository.Id); await this.gitFyleCoreApiBroker.DeleteSourceByIdAsync(inputSource.Id); - } + } - [Fact] + [Fact] public async Task ShouldGetRepositoryByIdAsync() { // given - Source randomSource = await PostRandomSourceAsync(); - Repository randomRepository = await PostRandomRepository(sourceId: randomSource.Id); + Source randomSource = CreateRandomSource(); + Source inputSource = randomSource; + Repository randomRepository = CreateRandomRepository(inputSource.Id); Repository inputRepository = randomRepository; Repository expectedRepository = inputRepository.DeepClone(); // when + await this.gitFyleCoreApiBroker.PostSourceAsync(inputSource); + randomRepository.SourceId = inputSource.Id; + expectedRepository.SourceId = inputSource.Id; + await this.gitFyleCoreApiBroker.PostRepositoryAsync(randomRepository); + Repository actualRepository = - await this.gitFyleCoreApiBroker.GetRepositoryByIdAsync(inputRepository.Id); + await this.gitFyleCoreApiBroker.GetRepositoryByIdAsync(randomRepository.Id); // then actualRepository.Should().BeEquivalentTo(expectedRepository); await this.gitFyleCoreApiBroker.DeleteRepositoryByIdAsync(actualRepository.Id); - await this.gitFyleCoreApiBroker.DeleteSourceByIdAsync(randomSource.Id); + await this.gitFyleCoreApiBroker.DeleteSourceByIdAsync(inputSource.Id); } [Fact] public async Task ShouldGetAllRepositoriesAsync() { // given - Source randomSource = await PostRandomSourceAsync(); + Source randomSource = CreateRandomSource(); - List inputRepositories = - await PostRandomRepositoriesAsync(sourceId: randomSource.Id); + List randomRepositories = + CreateRandomRepositories(randomSource.Id); - IEnumerable expectedRepositories = inputRepositories; + List expectedRepositories = + randomRepositories; // when - IEnumerable actualRepositories = + List actualRepositories = await this.gitFyleCoreApiBroker.GetAllRepositoriesAsync(); // then - foreach (Repository expectedRepository in expectedRepositories) + foreach (Repository expectedRepository in actualRepositories) { Repository actualRepository = - actualRepositories.Single(repository => repository.Id == expectedRepository.Id); + actualRepositories.Single( + product => product.Id == expectedRepository.Id); actualRepository.Should().BeEquivalentTo(expectedRepository); - await this.gitFyleCoreApiBroker.DeleteRepositoryByIdAsync(actualRepository.Id); - } - await this.gitFyleCoreApiBroker.DeleteSourceByIdAsync(randomSource.Id); + await this.gitFyleCoreApiBroker + .DeleteRepositoryByIdAsync(actualRepository.Id); + } } [Fact] public async Task ShouldPutRepositoryAsync() { - // given . when + // given Source randomSource = await PostRandomSourceAsync(); - + Repository modifiedRepository = await ModifyRandomRepository(sourceId: randomSource.Id); - + + // when await this.gitFyleCoreApiBroker.PutRepositoryAsync(modifiedRepository); Repository actualRepository = diff --git a/GitFyle.Core.Api.Tests.Acceptance/Apis/Repositories/RepositoriesApiTests.cs b/GitFyle.Core.Api.Tests.Acceptance/Apis/Repositories/RepositoriesApiTests.cs index 9066f607..4f63ff29 100644 --- a/GitFyle.Core.Api.Tests.Acceptance/Apis/Repositories/RepositoriesApiTests.cs +++ b/GitFyle.Core.Api.Tests.Acceptance/Apis/Repositories/RepositoriesApiTests.cs @@ -33,11 +33,11 @@ private async Task> PostRandomRepositoriesAsync(Guid sourceId) return repositories; } - private static IQueryable CreateRandomRepositories(Guid sourceId) + private static List CreateRandomRepositories(Guid sourceId) { return CreateRepositoryFiller(sourceId) .Create(GetRandomNumber()) - .AsQueryable(); + .ToList(); } private async ValueTask ModifyRandomRepository(Guid sourceId) @@ -55,6 +55,9 @@ private static DateTimeOffset GetRandomDateTimeOffset() => private static int GetRandomNumber() => new IntRange(min: 2, max: 10).GetValue(); + private static string GetRandomString() => + new MnemonicString(wordCount: GetRandomNumber()).GetValue(); + private async ValueTask PostRandomRepository(Guid sourceId) { Repository randomRepository = CreateRandomRepository(sourceId); @@ -68,11 +71,12 @@ private static Repository CreateRandomRepository(Guid sourceId) => private static Filler CreateRepositoryFiller(Guid sourceId) { + DateTimeOffset now = DateTimeOffset.UtcNow; string someUser = Guid.NewGuid().ToString(); var filler = new Filler(); filler.Setup() - .OnType().Use(DateTimeOffset.UtcNow) + .OnType().Use(now) .OnProperty(repository => repository.SourceId).Use(sourceId) .OnProperty(repository => repository.CreatedBy).Use(someUser) .OnProperty(repository => repository.UpdatedBy).Use(someUser) @@ -84,22 +88,23 @@ private static Filler CreateRepositoryFiller(Guid sourceId) private async ValueTask PostRandomSourceAsync() { - Source randomSource = CreateRandomSource(DateTimeOffset.UtcNow); + Source randomSource = CreateRandomSource(); await this.gitFyleCoreApiBroker.PostSourceAsync(randomSource); return randomSource; } - private static Source CreateRandomSource(DateTimeOffset dateTimeOffset) => - CreateSourceFiller(dateTimeOffset).Create(); + private static Source CreateRandomSource() => + CreateSourceFiller().Create(); - private static Filler CreateSourceFiller(DateTimeOffset dateTimeOffset) + private static Filler CreateSourceFiller() { + DateTimeOffset now = DateTimeOffset.UtcNow; string someUser = Guid.NewGuid().ToString(); var filler = new Filler(); filler.Setup() - .OnType().Use(dateTimeOffset) + .OnType().Use(now) .OnProperty(source => source.Url).Use(new RandomUrl().GetValue()) .OnProperty(source => source.CreatedBy).Use(someUser) .OnProperty(source => source.UpdatedBy).Use(someUser) @@ -109,4 +114,4 @@ private static Filler CreateSourceFiller(DateTimeOffset dateTimeOffset) return filler; } } -} +} \ No newline at end of file diff --git a/GitFyle.Core.Api.Tests.Acceptance/Brokers/GitFyleCoreApiBroker.Repositories.cs b/GitFyle.Core.Api.Tests.Acceptance/Brokers/GitFyleCoreApiBroker.Repositories.cs index b9a89f57..bb5679d8 100644 --- a/GitFyle.Core.Api.Tests.Acceptance/Brokers/GitFyleCoreApiBroker.Repositories.cs +++ b/GitFyle.Core.Api.Tests.Acceptance/Brokers/GitFyleCoreApiBroker.Repositories.cs @@ -19,8 +19,8 @@ public async ValueTask PostRepositoryAsync(Repository repository) => public async ValueTask GetRepositoryByIdAsync(Guid repositoryId) => await this.apiFactoryClient.GetContentAsync($"{RepositoryRelativeUrl}/{repositoryId}"); - public async ValueTask> GetAllRepositoriesAsync() => - await this.apiFactoryClient.GetContentAsync>(RepositoryRelativeUrl); + public async ValueTask> GetAllRepositoriesAsync() => + await this.apiFactoryClient.GetContentAsync>(RepositoryRelativeUrl); public async ValueTask PutRepositoryAsync(Repository repository) => await this.apiFactoryClient.PutContentAsync(RepositoryRelativeUrl, repository);