From b9120d3eb25fc7c2231d152de1b670484424b4a7 Mon Sep 17 00:00:00 2001 From: Stevan Freeborn <65925598+StevanFreeborn@users.noreply.github.com> Date: Mon, 2 Sep 2024 20:52:45 -0500 Subject: [PATCH] tests: add unit tests --- .../SanctionsSearch.Worker.Tests.csproj | 3 +- .../GetPagedRecordsResponseExtensionsTests.cs | 28 +++++++++++++++++ .../Unit/OnspringOptionsTests.cs | 31 +++++++++++++++++++ .../Unit/RecordFieldValueExtensionsTests.cs | 30 ++++++++++++++++++ src/SanctionsSearch.Worker.Tests/Usings.cs | 6 ++-- .../Extensions/RecordFieldValueExtensions.cs | 15 ++++++--- .../Services/OnspringService.cs | 20 ++++++------ src/SanctionsSearch.Worker/Usings.cs | 2 +- 8 files changed, 117 insertions(+), 18 deletions(-) create mode 100644 src/SanctionsSearch.Worker.Tests/Unit/GetPagedRecordsResponseExtensionsTests.cs create mode 100644 src/SanctionsSearch.Worker.Tests/Unit/OnspringOptionsTests.cs create mode 100644 src/SanctionsSearch.Worker.Tests/Unit/RecordFieldValueExtensionsTests.cs diff --git a/src/SanctionsSearch.Worker.Tests/SanctionsSearch.Worker.Tests.csproj b/src/SanctionsSearch.Worker.Tests/SanctionsSearch.Worker.Tests.csproj index 64da083..1c126fe 100644 --- a/src/SanctionsSearch.Worker.Tests/SanctionsSearch.Worker.Tests.csproj +++ b/src/SanctionsSearch.Worker.Tests/SanctionsSearch.Worker.Tests.csproj @@ -31,7 +31,8 @@ ./TestResults/coverage/ cobertura [SanctionsSearch.Worker]* - [SanctionsSearch.Worker]SanctionsSearch.Worker.Migrations* + [SanctionsSearch.Worker]SanctionsSearch.Worker.Migrations*,[SanctionsSearch.Worker]SanctionsSearch.Worker.Setup*,[SanctionsSearch.Worker]SanctionsSearch.Worker.Workers* + **/Program.cs diff --git a/src/SanctionsSearch.Worker.Tests/Unit/GetPagedRecordsResponseExtensionsTests.cs b/src/SanctionsSearch.Worker.Tests/Unit/GetPagedRecordsResponseExtensionsTests.cs new file mode 100644 index 0000000..eb8c594 --- /dev/null +++ b/src/SanctionsSearch.Worker.Tests/Unit/GetPagedRecordsResponseExtensionsTests.cs @@ -0,0 +1,28 @@ +namespace SanctionsSearch.Worker.Tests.Unit; + +public class GetPagedRecordsResponseExtensionsTests +{ + [Fact] + public void HasMorePages_WhenPageNumberIsLessThanTotalPages_ReturnsTrue() + { + var response = new GetPagedRecordsResponse + { + PageNumber = 1, + TotalPages = 2 + }; + + response.HasMorePages().Should().BeTrue(); + } + + [Fact] + public void HasMorePages_WhenPageNumberIsEqualToTotalPages_ReturnsFalse() + { + var response = new GetPagedRecordsResponse + { + PageNumber = 2, + TotalPages = 2 + }; + + response.HasMorePages().Should().BeFalse(); + } +} \ No newline at end of file diff --git a/src/SanctionsSearch.Worker.Tests/Unit/OnspringOptionsTests.cs b/src/SanctionsSearch.Worker.Tests/Unit/OnspringOptionsTests.cs new file mode 100644 index 0000000..4502182 --- /dev/null +++ b/src/SanctionsSearch.Worker.Tests/Unit/OnspringOptionsTests.cs @@ -0,0 +1,31 @@ +namespace SanctionsSearch.Worker.Tests.Unit; + +public class OnspringOptionsTests +{ + [Fact] + public void OnspringOptions_WhenCreated_ShouldHaveDefaultValues() + { + var onspringOptions = new OnspringOptions(); + + var searchRequestOptions = onspringOptions.SearchRequestOptions; + var searchResultOptions = onspringOptions.SearchResultOptions; + + onspringOptions.BaseUrl.Should().Be("https://api.onspring.com"); + onspringOptions.ApiKey.Should().Be(string.Empty); + onspringOptions.SearchIntervalInMinutes.Should().Be(1); + searchRequestOptions.AppId.Should().Be(0); + searchRequestOptions.NameFieldId.Should().Be(0); + searchRequestOptions.StatusFieldId.Should().Be(0); + searchRequestOptions.AwaitingProcessingStatusId.Should().Be(Guid.Empty); + searchRequestOptions.ProcessingStatusId.Should().Be(Guid.Empty); + searchRequestOptions.ProcessedSuccessStatusId.Should().Be(Guid.Empty); + searchRequestOptions.ProcessedErrorStatusId.Should().Be(Guid.Empty); + searchRequestOptions.ErrorFieldId.Should().Be(0); + searchResultOptions.AppId.Should().Be(0); + searchResultOptions.SearchRequestFieldId.Should().Be(0); + searchResultOptions.NameFieldId.Should().Be(0); + searchResultOptions.AddressFieldId.Should().Be(0); + searchResultOptions.TypeFieldId.Should().Be(0); + searchResultOptions.ProgramsFieldId.Should().Be(0); + } +} \ No newline at end of file diff --git a/src/SanctionsSearch.Worker.Tests/Unit/RecordFieldValueExtensionsTests.cs b/src/SanctionsSearch.Worker.Tests/Unit/RecordFieldValueExtensionsTests.cs new file mode 100644 index 0000000..af8c90e --- /dev/null +++ b/src/SanctionsSearch.Worker.Tests/Unit/RecordFieldValueExtensionsTests.cs @@ -0,0 +1,30 @@ +namespace SanctionsSearch.Worker.Extensions; + +public class RecordFieldValueExtensionsTests +{ + [Fact] + public void GetStringValue_WhenRecordFieldValueTypeIsString_ReturnsValue() + { + var value = "value"; + + var recordFieldValue = new StringFieldValue(1, value); + + recordFieldValue.GetStringValue().Should().Be(value); + } + + [Fact] + public void GetStringValue_WhenRecordFieldValueTypeIsNotString_ReturnsEmptyString() + { + var recordFieldValue = new IntegerFieldValue(1, 1); + + recordFieldValue.GetStringValue().Should().BeEmpty(); + } + + [Fact] + public void GetStringValue_WhenRecordFieldValueValueIsNull_ReturnsEmptyString() + { + var recordFieldValue = new StringFieldValue(1, null); + + recordFieldValue.GetStringValue().Should().BeEmpty(); + } +} \ No newline at end of file diff --git a/src/SanctionsSearch.Worker.Tests/Usings.cs b/src/SanctionsSearch.Worker.Tests/Usings.cs index 900d184..2e0fc0e 100644 --- a/src/SanctionsSearch.Worker.Tests/Usings.cs +++ b/src/SanctionsSearch.Worker.Tests/Usings.cs @@ -8,15 +8,17 @@ global using FluentAssertions; global using Microsoft.Data.Sqlite; global using Microsoft.EntityFrameworkCore; global using Microsoft.Extensions.Logging; -global using Microsoft.Extensions.Options; global using Moq; +global using Onspring.API.SDK.Models; + global using RichardSzalay.MockHttp; +global using SanctionsSearch.Worker.Extensions; global using SanctionsSearch.Worker.Interfaces; global using SanctionsSearch.Worker.Models; global using SanctionsSearch.Worker.Options; global using SanctionsSearch.Worker.Persistence; global using SanctionsSearch.Worker.Services; -global using SanctionsSearch.Worker.Tests.Faker; +global using SanctionsSearch.Worker.Tests.Faker; \ No newline at end of file diff --git a/src/SanctionsSearch.Worker/Extensions/RecordFieldValueExtensions.cs b/src/SanctionsSearch.Worker/Extensions/RecordFieldValueExtensions.cs index 18ccf77..67a19d7 100644 --- a/src/SanctionsSearch.Worker/Extensions/RecordFieldValueExtensions.cs +++ b/src/SanctionsSearch.Worker/Extensions/RecordFieldValueExtensions.cs @@ -2,8 +2,15 @@ namespace SanctionsSearch.Worker.Extensions; static class RecordFieldValueExtensions { - public static string GetStringValue(this RecordFieldValue recordFieldValue) => - recordFieldValue.Type is not ResultValueType.String - ? string.Empty - : recordFieldValue.AsString() ?? string.Empty; + public static string GetStringValue(this RecordFieldValue recordFieldValue) + { + try + { + return recordFieldValue.AsString() ?? string.Empty; + } + catch + { + return string.Empty; + } + } } \ No newline at end of file diff --git a/src/SanctionsSearch.Worker/Services/OnspringService.cs b/src/SanctionsSearch.Worker/Services/OnspringService.cs index ae7c4ce..bf61d25 100644 --- a/src/SanctionsSearch.Worker/Services/OnspringService.cs +++ b/src/SanctionsSearch.Worker/Services/OnspringService.cs @@ -105,11 +105,11 @@ class OnspringService( FieldId = _options.SearchRequestOptions.StatusFieldId, Value = _options.SearchRequestOptions.ProcessedErrorStatusId }, - new StringFieldValue() - { - FieldId = _options.SearchRequestOptions.ErrorFieldId, - Value = "Unable to save all search results" - } + new StringFieldValue() + { + FieldId = _options.SearchRequestOptions.ErrorFieldId, + Value = "Unable to save all search results" + } ] } : new ResultRecord() @@ -122,11 +122,11 @@ class OnspringService( FieldId = _options.SearchRequestOptions.StatusFieldId, Value = _options.SearchRequestOptions.ProcessedSuccessStatusId }, - new StringFieldValue() - { - FieldId = _options.SearchRequestOptions.ErrorFieldId, - Value = string.Empty - } + new StringFieldValue() + { + FieldId = _options.SearchRequestOptions.ErrorFieldId, + Value = string.Empty + } ] }; diff --git a/src/SanctionsSearch.Worker/Usings.cs b/src/SanctionsSearch.Worker/Usings.cs index 52b95dd..16f078e 100644 --- a/src/SanctionsSearch.Worker/Usings.cs +++ b/src/SanctionsSearch.Worker/Usings.cs @@ -29,4 +29,4 @@ global using SanctionsSearch.Worker.Workers; global using Serilog; global using Serilog.Context; global using Serilog.Exceptions; -global using Serilog.Formatting.Compact; +global using Serilog.Formatting.Compact; \ No newline at end of file