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..86bfa270 100644 --- a/GitFyle.Core.Api.Tests.Acceptance/Apis/Repositories/RepositoriesApiTests.Logic.cs +++ b/GitFyle.Core.Api.Tests.Acceptance/Apis/Repositories/RepositoriesApiTests.Logic.cs @@ -18,66 +18,80 @@ public partial class RepositoriesApiTests public async Task ShouldPostRepositoryAsync() { // 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); + 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] 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] @@ -85,7 +99,9 @@ public async Task ShouldPutRepositoryAsync() { // given Source randomSource = await PostRandomSourceAsync(); - Repository modifiedRepository = await ModifyRandomRepository(sourceId: randomSource.Id); + + Repository modifiedRepository = + await ModifyRandomRepository(sourceId: randomSource.Id); // when await this.gitFyleCoreApiBroker.PutRepositoryAsync(modifiedRepository); diff --git a/GitFyle.Core.Api.Tests.Acceptance/Apis/Repositories/RepositoriesApiTests.cs b/GitFyle.Core.Api.Tests.Acceptance/Apis/Repositories/RepositoriesApiTests.cs index bba6ea98..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) @@ -49,9 +49,15 @@ 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(); + private static string GetRandomString() => + new MnemonicString(wordCount: GetRandomNumber()).GetValue(); + private async ValueTask PostRandomRepository(Guid sourceId) { Repository randomRepository = CreateRandomRepository(sourceId); @@ -65,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) @@ -81,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) @@ -106,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);