Bump the all-dependencies group with 4 updates#231
Closed
dependabot[bot] wants to merge 1 commit into
Closed
GitHub Actions / Test report
succeeded
Jan 26, 2026 in 0s
276 passed, 0 failed and 18 skipped
✅ tests/Elzik.Breef.Api.Tests.Functional/TestResults/test-results.trx
8 tests were completed in 66s with 8 passed, 0 failed and 0 skipped.
| Test suite | Passed | Failed | Skipped | Time |
|---|---|---|---|---|
| Elzik.Breef.Api.Tests.Functional.Breefs.BreefTestsDocker | 2✅ | 52s | ||
| Elzik.Breef.Api.Tests.Functional.Breefs.BreefTestsNative | 2✅ | 4s | ||
| Elzik.Breef.Api.Tests.Functional.ExceptionHandlingTests | 2✅ | 2s | ||
| Elzik.Breef.Api.Tests.Functional.Health.HealthTestsDocker | 1✅ | 516ms | ||
| Elzik.Breef.Api.Tests.Functional.Health.HealthTestsNative | 1✅ | 2s |
✅ Elzik.Breef.Api.Tests.Functional.Breefs.BreefTestsDocker
✅ EndToEndHappyPath
✅ Unauthorised
✅ Elzik.Breef.Api.Tests.Functional.Breefs.BreefTestsNative
✅ EndToEndHappyPath
✅ Unauthorised
✅ Elzik.Breef.Api.Tests.Functional.ExceptionHandlingTests
✅ Breefs_WithCallerFixableError_ReturnsExpectedProblemDetails
✅ Breefs_WithNonCallerFixableError_ReturnsGenericProblemDetails
✅ Elzik.Breef.Api.Tests.Functional.Health.HealthTestsDocker
✅ Health_Called_ReturnsOK
✅ Elzik.Breef.Api.Tests.Functional.Health.HealthTestsNative
✅ Health_Called_ReturnsOK
✅ tests/Elzik.Breef.Api.Tests.Integration/TestResults/test-results.trx
11 tests were completed in 1s with 11 passed, 0 failed and 0 skipped.
| Test suite | Passed | Failed | Skipped | Time |
|---|---|---|---|---|
| Elzik.Breef.Api.Tests.Integration.BreefApiOptionsTests | 2✅ | 158ms | ||
| Elzik.Breef.Api.Tests.Integration.FileBasedContentSummarisationInstructionProviderTests | 9✅ | 118ms |
✅ Elzik.Breef.Api.Tests.Integration.BreefApiOptionsTests
✅ WhenValidated_MissingApiKey_ShouldFailValidation
✅ WhenValidated_WithValidApiKey_ShouldPassValidation
✅ Elzik.Breef.Api.Tests.Integration.FileBasedContentSummarisationInstructionProviderTests
✅ GetInstructions_ExtractTypeNameNotFound_Throws
✅ Instantiated_AllRequiredFilesPresent_Succeeds
✅ Instantiated_DirectoryMissing_Throws
✅ Instantiated_EmptyInstructionFile_Throws(instructionContent: " \n\t ")
✅ Instantiated_EmptyInstructionFile_Throws(instructionContent: "")
✅ Instantiated_InvalidRequiredExtractTypeNames_Throws(requiredExtractTypeNames: [])
✅ Instantiated_InvalidRequiredExtractTypeNames_Throws(requiredExtractTypeNames: null)
✅ Instantiated_RequiredInstructionMissing_Throws
✅ Instantiated_SomeRequiredFilesMissing_Throws
✅ tests/Elzik.Breef.Infrastructure.Tests.Integration/TestResults/test-results.trx
57 tests were completed in 11s with 39 passed, 0 failed and 18 skipped.
✅ Elzik.Breef.Infrastructure.Tests.Integration.AiContentSummariserTests
✅ Summarise_WithValidContent_ReturnsSummary(testExtractedContentFile: "BbcNewsPage-ExpectedContent.txt")
✅ Summarise_WithValidContent_ReturnsSummary(testExtractedContentFile: "TestHtmlPage-ExpectedContent.txt")
✅ Elzik.Breef.Infrastructure.Tests.Integration.AiServiceOptionsTests
✅ WhenValidated_AllFieldsValid_ShouldPassValidation
✅ WhenValidated_InvalidEndpointUrl_ShouldFailValidation
✅ WhenValidated_MissingApiKey_ShouldFailValidation
✅ WhenValidated_MissingEndpointUrl_ShouldFailValidation
✅ WhenValidated_MissingModelId_ShouldFailValidation
✅ WhenValidated_MissingProvider_ShouldFailValidation
✅ Elzik.Breef.Infrastructure.Tests.Integration.ContentExtractors.HtmlContentExtractorTests
✅ CanHandle_AnyString_CanHandle
✅ Extract_WithValidUrl_ExtractsContent(testFileName: "BbcNewsPage.html", expectedFileName: "BbcNewsPage-ExpectedContent.txt", expectedTitle: "Artificial Intelligence: Plan to 'unleash AI' acro"···, expectedPreviewImageUrl: "https://ichef.bbci.co.uk/ace/standard/1280/cpsprod"···)
✅ Extract_WithValidUrl_ExtractsContent(testFileName: "TestHtmlPage.html", expectedFileName: "TestHtmlPage-ExpectedContent.txt", expectedTitle: "Test HTML Page", expectedPreviewImageUrl: "https://test-large-image.jpg")
✅ Extract_WithValidUrl_ExtractsContent(testFileName: "TestHtmlPageNoContent.html", expectedFileName: "TestHtmlPageNoContent-ExpectedContent.txt", expectedTitle: "Test HTML Page", expectedPreviewImageUrl: "https://test-large-image.jpg")
✅ Extract_WithValidUrl_ExtractsContent(testFileName: "TestHtmlPageNoImages.html", expectedFileName: "TestHtmlPage-ExpectedContent.txt", expectedTitle: "Test HTML Page", expectedPreviewImageUrl: null)
✅ Extract_WithValidUrl_ExtractsContent(testFileName: "TestHtmlPageNoTitle.html", expectedFileName: "TestHtmlPage-ExpectedContent.txt", expectedTitle: "https://mock.url", expectedPreviewImageUrl: "https://test-large-image.jpg")
✅ Elzik.Breef.Infrastructure.Tests.Integration.ContentExtractors.Reddit.Client.RawRedditPostClientTests
⚪ GetPost_PostWithGalleryDataNumericIds_HandlesDeserialization
⚪ GetPost_ValidPostId_ReturnsRedditPost
✅ Elzik.Breef.Infrastructure.Tests.Integration.ContentExtractors.Reddit.Client.RawSubredditClientTests
⚪ GetAboutSubreddit_ValidSubreddit_ReturnsAboutSubreddit
⚪ GetNewInSubreddit_ValidSubreddit_ReturnsNewInSubreddit
✅ Elzik.Breef.Infrastructure.Tests.Integration.ContentExtractors.Reddit.Client.RedditPostClientTests
⚪ GetPost_ValidPostId_ReturnsExpectedRedditPost
✅ Elzik.Breef.Infrastructure.Tests.Integration.ContentExtractors.Reddit.RedditPostContentExtractorTests
✅ CanHandle_VariousInvalidUrls_ReturnsFalse(invalidUrl: "https://old.reddit.com/r/programming/comments/abc1"···)
✅ CanHandle_VariousInvalidUrls_ReturnsFalse(invalidUrl: "https://reddit.com/r/programming")
✅ CanHandle_VariousInvalidUrls_ReturnsFalse(invalidUrl: "https://reddit.com/r/programming/comments")
✅ CanHandle_VariousInvalidUrls_ReturnsFalse(invalidUrl: "https://reddit.com/r/programming/comments/abc123/t"···)
✅ CanHandle_VariousInvalidUrls_ReturnsFalse(invalidUrl: "https://reddit.com/r/programming/hot")
✅ CanHandle_VariousInvalidUrls_ReturnsFalse(invalidUrl: "https://reddit.com/user/username/comments/abc123/t"···)
✅ CanHandle_VariousInvalidUrls_ReturnsFalse(invalidUrl: "https://youtube.com/r/programming/comments/abc123/"···)
✅ CanHandle_VariousValidUrls_ReturnsTrue(validUrl: "https://REDDIT.COM/r/AskReddit/comments/ghi789")
✅ CanHandle_VariousValidUrls_ReturnsTrue(validUrl: "https://REDDIT.COM/r/AskReddit/comments/ghi789/que"···)
✅ CanHandle_VariousValidUrls_ReturnsTrue(validUrl: "https://reddit.com/r/pics/comments/jkl012/")
✅ CanHandle_VariousValidUrls_ReturnsTrue(validUrl: "https://reddit.com/r/pics/comments/jkl012/image/")
✅ CanHandle_VariousValidUrls_ReturnsTrue(validUrl: "https://reddit.com/r/programming/comments/abc123")
✅ CanHandle_VariousValidUrls_ReturnsTrue(validUrl: "https://reddit.com/r/programming/comments/abc123/t"···)
✅ CanHandle_VariousValidUrls_ReturnsTrue(validUrl: "https://www.reddit.com/r/funny/comments/def456")
✅ CanHandle_VariousValidUrls_ReturnsTrue(validUrl: "https://www.reddit.com/r/funny/comments/def456/jok"···)
⚪ ExtractAsync_InvalidUrls_ThrowsInvalidOperationException(invalidUrl: "https://not-reddit.com/r/programming/comments/abc1"···)
⚪ ExtractAsync_InvalidUrls_ThrowsInvalidOperationException(invalidUrl: "https://reddit.com")
⚪ ExtractAsync_InvalidUrls_ThrowsInvalidOperationException(invalidUrl: "https://reddit.com/r/programming")
⚪ ExtractAsync_InvalidUrls_ThrowsInvalidOperationException(invalidUrl: "https://reddit.com/r/programming/posts/abc123/titl"···)
⚪ ExtractAsync_InvalidUrls_ThrowsInvalidOperationException(invalidUrl: "not-a-url")
⚪ ExtractAsync_NonExistentPost_ThrowsExpectedException
⚪ ExtractAsync_PostAndSubredditWithoutImage_UsesRedditFallback
⚪ ExtractAsync_PostWithImage_UsesPostImage
⚪ ExtractAsync_PostWithoutImage_UsesSubredditFallback
⚪ ExtractAsync_RealRedditPost_ReturnsValidExtract(url: "https://reddit.com/r/learnprogramming/comments/1kq"···)
⚪ ExtractAsync_RealRedditPost_ReturnsValidExtract(url: "https://www.reddit.com/r/learnprogramming/comments"···)
⚪ ExtractAsync_RealRedditPost_ReturnsValidExtract(url: "https://www.reddit.com/r/learnprogramming/comments"···)
⚪ ExtractAsync_ValidPost_ContentContainsCompleteRedditStructure
✅ Elzik.Breef.Infrastructure.Tests.Integration.Wallabag.WallabagAuthClientTests
✅ GetTokenAsync_FromTestWallabagAccount_ReturnsToken
✅ Elzik.Breef.Infrastructure.Tests.Integration.Wallabag.WallabagClientTests
✅ PostEntryAsync_WithValidEntry_PostsEntry(previewImageUrl: "https://wallabag.elzik.co.uk/img/logo-wallabag.svg")
✅ PostEntryAsync_WithValidEntry_PostsEntry(previewImageUrl: null)
✅ Elzik.Breef.Infrastructure.Tests.Integration.Wallabag.WallabagOptionsTests
✅ WhenValidated_InvalidBaseUrl_ShouldFailValidation
✅ WhenValidated_MissingBaseUrl_ShouldFailValidation
✅ WhenValidated_MissingClientId_ShouldFailValidation
✅ WhenValidated_MissingClientSecret_ShouldFailValidation
✅ WhenValidated_MissingPassword_ShouldFailValidation
✅ WhenValidated_MissingUsername_ShouldFailValidation
✅ WhenValidated_WithValidOptions_ShouldPassValidation
✅ tests/Elzik.Breef.Infrastructure.Tests.Unit/TestResults/test-results.trx
218 tests were completed in 2s with 218 passed, 0 failed and 0 skipped.
✅ Elzik.Breef.Infrastructure.Tests.Unit.ContentExtractors.ContentExtractorBaseTests
✅ Constructor_InvalidExtractorNameWithoutSuffix_ThrowsInvalidOperationException
✅ Constructor_ValidExtractorName_DoesNotThrow
✅ ExtractAsync_ExtractorNameEndingWithExtractor_RemovesSuffixCorrectly
✅ ExtractAsync_MultipleExtractorTypes_SetsDifferentExtractTypes
✅ ExtractAsync_WhenCalled_PreservesExtractDataFromCore
✅ ExtractAsync_WhenCalled_SetsExtractTypeCorrectly
✅ ExtractAsync_WhenCreateUntypedExtractAsyncReturnsNull_ThrowsInvalidOperationException
✅ Elzik.Breef.Infrastructure.Tests.Unit.ContentExtractors.ContentExtractorStrategyTests
✅ CanHandle_AnyString_CanHandle
✅ ExtractAsync_Extractor1CanHandle_UsesExtractor1
✅ ExtractAsync_Extractor2CanHandle_UsesExtractor2
✅ ExtractAsync_NoSpecificExtractorCanHandle_UsesDefaultExtractor
✅ ExtractAsync_OnlyDefaultExtractorExists_UsesDefaultExtractor
✅ Instantiated_DefaultExtractorInSpecificExtractors_Throws
✅ Instantiated_NullDefaultExtractor_Throws
✅ Instantiated_NullSpecificExtractors_Throws
✅ Elzik.Breef.Infrastructure.Tests.Unit.ContentExtractors.Reddit.Client.Raw.FlexibleStringConverterTests
✅ Read_BooleanValue_ThrowsJsonException
✅ Read_DirectNull_CallsConverter
✅ Read_LargeIntegerValue_ReturnsStringRepresentation
✅ Read_NullValue_ReturnsNull
✅ Read_NumericValue_ReturnsStringRepresentation
✅ Read_StringValue_ReturnsString
✅ Read_WithGalleryItemModel_HandlesNumericId
✅ Read_WithRedditPostStructure_HandlesGalleryDataWithNumericIds
✅ Write_DirectNull_CallsConverter
✅ Write_NullValue_WritesNull
✅ Write_StringValue_WritesStringValue
✅ Elzik.Breef.Infrastructure.Tests.Unit.ContentExtractors.Reddit.Client.RawNewInSubredditTransformerTests
✅ Transform_ChildrenWithNullData_SkipsNullDataChildren
✅ Transform_ChildrenWithNullIds_SkipsNullIdChildren
✅ Transform_ConcurrentPostFetching_CallsClientConcurrently
✅ Transform_EmptyChildren_ReturnsEmptyNewInSubreddit
✅ Transform_NullChildren_ReturnsEmptyNewInSubreddit
✅ Transform_NullData_ReturnsEmptyNewInSubreddit
✅ Transform_NullRawNewInSubreddit_ThrowsArgumentNullException
✅ Transform_SinglePost_ReturnsNewInSubredditWithOnePost
✅ Transform_ValidRawNewInSubreddit_ReturnsExpectedStructure
✅ Elzik.Breef.Infrastructure.Tests.Unit.ContentExtractors.Reddit.Client.RawRedditPostTransformerTests
✅ Instantiated_NullOptions_ThrowsArgumentNullException
✅ Instantiated_NullOptionsValue_ThrowsInvalidOperationException
✅ Transform_CommentsWithEmptyStringReplies_ReturnsEmptyList
✅ Transform_CommentsWithNonT1Kind_SkipsComment
✅ Transform_CommentsWithNullChildren_ReturnsEmptyList
✅ Transform_CommentsWithNullListingData_ReturnsEmptyList
✅ Transform_EmptyRedditPost_ThrowsArgumentException
✅ Transform_InvalidRedditOptionsBaseAddress_ThrowsInvalidOperationException
✅ Transform_NullRawRedditPost_ThrowsArgumentNullException
✅ Transform_PostListingWithNoChildren_ThrowsArgumentException
✅ Transform_PostWithDefaultThumbnail_IgnoresThumbnail
✅ Transform_PostWithDirectImageUrl_ExtractsImageCorrectly
✅ Transform_PostWithGallery_ExtractsFirstImageCorrectly
✅ Transform_PostWithHtmlEncodedGalleryUrl_DecodesUrlCorrectly
✅ Transform_PostWithHtmlEncodedPreviewUrl_DecodesUrlCorrectly
✅ Transform_PostWithInvalidGalleryMetadata_SkipsInvalidImages
✅ Transform_PostWithInvalidThumbnails_IgnoresInvalidThumbnails
✅ Transform_PostWithMultipleImageSources_PrioritizesCorrectly
✅ Transform_PostWithMultiplePreviewImages_SelectsLargestImage
✅ Transform_PostWithNonImageUrl_ReturnsNullImageUrl
✅ Transform_PostWithNsfwThumbnail_IgnoresThumbnail
✅ Transform_PostWithNullTitle_ThrowsInvalidOperationException
✅ Transform_PostWithPreviewImage_ExtractsImageCorrectly
✅ Transform_PostWithThumbnailOnly_ExtractsThumbnailCorrectly
✅ Transform_PostWithUrlOverriddenByDest_UsesOverriddenUrl
✅ Transform_ValidRedditPost_ReturnsExpectedStructure
✅ Elzik.Breef.Infrastructure.Tests.Unit.ContentExtractors.Reddit.Client.RedditDateTimeConverterTests
✅ Read_InvalidToken_ThrowsJsonException
✅ Read_ValidUnixTimestamp_ReturnsExpectedDateTime(timestamp: 1747678685, expectedUtc: "2025-05-19T18:18:05Z")
✅ Read_ValidUnixTimestamp_ReturnsExpectedDateTime(timestamp: 1747678685, expectedUtc: "2025-05-19T18:18:05Z")
✅ Write_AllDateTimeKinds_ProducesValidUnixTimestamp(kind: Local)
✅ Write_AllDateTimeKinds_ProducesValidUnixTimestamp(kind: Unspecified)
✅ Write_AllDateTimeKinds_ProducesValidUnixTimestamp(kind: Utc)
✅ Write_LocalDateTime_ConvertsToUtcAndWritesCorrectUnixTimestamp
✅ Write_UnspecifiedDateTime_TreatsAsUtcAndWritesCorrectUnixTimestamp
✅ Write_UtcDateTime_WritesCorrectUnixTimestamp
✅ Elzik.Breef.Infrastructure.Tests.Unit.ContentExtractors.Reddit.Client.RedditPostClientTests
✅ GetPost_EmptyRawPost_ThrowsArgumentException
✅ GetPost_PostWithEmptyStringReplies_HandlesGracefully
✅ GetPost_PostWithJsonElementReplies_HandlesGracefully
✅ GetPost_PostWithMixedCommentTypes_OnlyProcessesComments
✅ GetPost_PostWithNoChildren_ThrowsArgumentException
✅ GetPost_PostWithNullFields_HandlesNullsGracefully
✅ GetPost_PostWithNullReplies_HandlesGracefully
✅ GetPost_PostWithoutTitle_ThrowsInvalidOperationException
✅ GetPost_ValidRedditPost_ReturnsTransformedPost
✅ Elzik.Breef.Infrastructure.Tests.Unit.ContentExtractors.Reddit.Client.SubredditClientTests
✅ GetNewInSubreddit_ValidSubredditName_ReturnsTransformedResult
✅ Elzik.Breef.Infrastructure.Tests.Unit.ContentExtractors.Reddit.RedditOptionsTests
✅ RedditOptions_AdditionalBaseAddresses_ShouldBeEmptyByDefault
✅ RedditOptions_AllBaseAddresses_ShouldIncludeDefaultAndAdditional
✅ RedditOptions_AllDomains_ShouldExtractDomainsFromValidUrls
✅ RedditOptions_AllDomains_ShouldSkipInvalidUrls
✅ RedditOptions_ConfigurationBinding_ShouldBindAdditionalBaseAddresses
✅ RedditOptions_ConfigurationBinding_ShouldOverrideDefault
✅ RedditOptions_DefaultBaseAddress_ShouldBeRedditCom
✅ RedditOptions_DefaultConfiguration_ShouldIncludeBothWwwAndNonWwwReddit
✅ RedditOptions_EmptyConfiguration_ShouldUseDefault
✅ RedditOptions_FallbackImageUrl_ShouldBeRedditLogo
✅ Elzik.Breef.Infrastructure.Tests.Unit.ContentExtractors.Reddit.RedditPostContentExtractorTests
✅ CanHandle_CustomRedditInstance_ReturnsTrue(url: "https://alt.reddit.instance.com/r/programming/comm"···)
✅ CanHandle_CustomRedditInstance_ReturnsTrue(url: "https://custom.reddit.com/r/programming/comments/a"···)
✅ CanHandle_InvalidRedditPostUrl_ReturnsFalse(url: "https://not-reddit.com/r/programming/comments/abc1"···)
✅ CanHandle_InvalidRedditPostUrl_ReturnsFalse(url: "https://reddit.com")
✅ CanHandle_InvalidRedditPostUrl_ReturnsFalse(url: "https://reddit.com/r")
✅ CanHandle_InvalidRedditPostUrl_ReturnsFalse(url: "https://reddit.com/r/programming")
✅ CanHandle_InvalidRedditPostUrl_ReturnsFalse(url: "https://reddit.com/r/programming/comments")
✅ CanHandle_InvalidRedditPostUrl_ReturnsFalse(url: "https://reddit.com/r/programming/comments/abc123/t"···)
✅ CanHandle_InvalidRedditPostUrl_ReturnsFalse(url: "https://reddit.com/r/programming/comments/abc123/t"···)
✅ CanHandle_InvalidRedditPostUrl_ReturnsFalse(url: "https://reddit.com/r/programming/posts/abc123/titl"···)
✅ CanHandle_InvalidRedditPostUrl_ReturnsFalse(url: "https://reddit.com/user/username/comments/abc123/t"···)
✅ CanHandle_InvalidRedditPostUrl_ReturnsFalse(url: "https://www2.reddit.com/r/programming/comments/abc"···)
✅ CanHandle_InvalidRedditPostUrl_ReturnsFalse(url: "not-a-url")
✅ CanHandle_UnknownRedditInstance_ReturnsFalse(url: "https://unknown.reddit.com/r/programming/comments/"···)
✅ CanHandle_UnknownRedditInstance_ReturnsFalse(url: "https://www.unknown.reddit.com/r/programming/comme"···)
✅ CanHandle_ValidRedditPostUrl_ReturnsTrue(url: "https://reddit.com/r/programming/comments/abc123")
✅ CanHandle_ValidRedditPostUrl_ReturnsTrue(url: "hTTpS://rEDDiT.cOm/R/pRoGrAmMiNg/CoMmEnTs/AbC123")
✅ CanHandle_ValidRedditPostUrl_ReturnsTrue(url: "https://reddit.com/r/programming/comments/abc123/")
✅ CanHandle_ValidRedditPostUrl_ReturnsTrue(url: "https://reddit.com/r/programming/comments/abc123/t"···)
✅ CanHandle_ValidRedditPostUrl_ReturnsTrue(url: "https://reddit.com/r/programming/comments/abc123/t"···)
✅ CanHandle_ValidRedditPostUrl_ReturnsTrue(url: "hTTpS://rEDDiT.cOm/R/pRoGrAmMiNg/CoMmEnTs/AbC123/T"···)
✅ CanHandle_ValidRedditPostUrl_ReturnsTrue(url: "https://www.reddit.com/r/programming/comments/abc1"···)
✅ CanHandle_ValidRedditPostUrl_ReturnsTrue(url: "https://www.reddit.com/r/programming/comments/abc1"···)
✅ CanHandle_ValidRedditPostUrl_ReturnsTrue(url: "https://www.reddit.com/r/programming/comments/abc1"···)
✅ CanHandle_ValidRedditPostUrl_ReturnsTrue(url: "https://www.reddit.com/r/programming/comments/abc1"···)
✅ ExtractAsync_DifferentSubreddits_CallsSubredditImageExtractorWithCorrectName(url: "https://www.reddit.com/r/AskReddit/comments/jkl012", expectedSubreddit: "AskReddit")
✅ ExtractAsync_DifferentSubreddits_CallsSubredditImageExtractorWithCorrectName(url: "https://www.reddit.com/r/AskReddit/comments/jkl012"···, expectedSubreddit: "AskReddit")
✅ ExtractAsync_DifferentSubreddits_CallsSubredditImageExtractorWithCorrectName(url: "https://www.reddit.com/r/funny/comments/def456", expectedSubreddit: "funny")
✅ ExtractAsync_DifferentSubreddits_CallsSubredditImageExtractorWithCorrectName(url: "https://www.reddit.com/r/funny/comments/def456/jok"···, expectedSubreddit: "funny")
✅ ExtractAsync_DifferentSubreddits_CallsSubredditImageExtractorWithCorrectName(url: "https://www.reddit.com/r/programming/comments/abc1"···, expectedSubreddit: "programming")
✅ ExtractAsync_DifferentSubreddits_CallsSubredditImageExtractorWithCorrectName(url: "https://www.reddit.com/r/programming/comments/abc1"···, expectedSubreddit: "programming")
✅ ExtractAsync_DifferentSubreddits_CallsSubredditImageExtractorWithCorrectName(url: "https://www.reddit.com/r/todayilearned/comments/gh"···, expectedSubreddit: "todayilearned")
✅ ExtractAsync_DifferentSubreddits_CallsSubredditImageExtractorWithCorrectName(url: "https://www.reddit.com/r/todayilearned/comments/gh"···, expectedSubreddit: "todayilearned")
✅ ExtractAsync_InvalidUrl_ThrowsInvalidOperationException(invalidUrl: " ")
✅ ExtractAsync_InvalidUrl_ThrowsInvalidOperationException(invalidUrl: "")
✅ ExtractAsync_InvalidUrl_ThrowsInvalidOperationException(invalidUrl: "not-a-url")
✅ ExtractAsync_InvalidUrl_ThrowsWithMeaningfulErrorMessage
✅ ExtractAsync_PostWithEmptyImage_UsesSubredditFallbackImage
✅ ExtractAsync_PostWithImage_ReturnsExtractWithPostImage
✅ ExtractAsync_PostWithoutImage_UsesSubredditFallbackImage
✅ ExtractAsync_PostWithVariousImageUrls_DoesNotUseFallback(imageUrl: "https://external-preview.redd.it/external-image.gi"···)
✅ ExtractAsync_PostWithVariousImageUrls_DoesNotUseFallback(imageUrl: "https://i.redd.it/gallery-image.jpg")
✅ ExtractAsync_PostWithVariousImageUrls_DoesNotUseFallback(imageUrl: "https://imgur.com/direct-link.webp")
✅ ExtractAsync_PostWithVariousImageUrls_DoesNotUseFallback(imageUrl: "https://preview.redd.it/preview-image.png")
✅ ExtractAsync_PostWithVariousImageUrls_DoesNotUseFallback(imageUrl: "https://reddit.com/thumbnail.bmp")
✅ ExtractAsync_PostWithWhitespaceImage_UsesSubredditFallbackImage
✅ ExtractAsync_SubredditImageExtractorThrows_PropagatesException
✅ ExtractAsync_UnsupportedHost_ThrowsWithMeaningfulErrorMessage
✅ ExtractAsync_UnsupportedUrl_ThrowsInvalidOperationException(unsupportedUrl: "https://reddit.com")
✅ ExtractAsync_UnsupportedUrl_ThrowsInvalidOperationException(unsupportedUrl: "https://reddit.com/r/programming")
✅ ExtractAsync_UnsupportedUrl_ThrowsInvalidOperationException(unsupportedUrl: "https://reddit.com/r/programming/comments")
✅ ExtractAsync_UnsupportedUrl_ThrowsInvalidOperationException(unsupportedUrl: "https://reddit.com/r/programming/comments/abc123/t"···)
✅ ExtractAsync_UnsupportedUrl_ThrowsInvalidOperationException(unsupportedUrl: "https://reddit.com/r/programming/posts/abc123/titl"···)
✅ ExtractAsync_UnsupportedUrl_ThrowsWithMeaningfulErrorMessage
✅ ExtractAsync_ValidUrl_CallsRedditPostClientWithCorrectPostId(url: "https://www.reddit.com/r/programming/comments/abc1"···)
✅ ExtractAsync_ValidUrl_CallsRedditPostClientWithCorrectPostId(url: "https://www.reddit.com/r/programming/comments/abc1"···)
✅ ExtractAsync_ValidUrl_ReturnsCorrectOriginalUrl
✅ ExtractAsync_ValidUrl_ReturnsCorrectTitle
✅ ExtractAsync_ValidUrl_ReturnsSerializedPostAsContent
✅ Elzik.Breef.Infrastructure.Tests.Unit.ContentExtractors.Reddit.SubredditExtractorTests
✅ CanHandle_CustomRedditInstance_ReturnsTrue(url: "https://alt.reddit.instance.com/r/testsubreddit/")
✅ CanHandle_CustomRedditInstance_ReturnsTrue(url: "https://custom.reddit.com/r/testsubreddit/")
✅ CanHandle_InvalidSubredditUrl_ReturnsFalse(url: "https://not-reddit.com/r/testsubreddit/")
✅ CanHandle_InvalidSubredditUrl_ReturnsFalse(url: "https://reddit.com")
✅ CanHandle_InvalidSubredditUrl_ReturnsFalse(url: "https://reddit.com/r")
✅ CanHandle_InvalidSubredditUrl_ReturnsFalse(url: "https://reddit.com/r/testsubreddit/more")
✅ CanHandle_InvalidSubredditUrl_ReturnsFalse(url: "https://www2.reddit.com/r/testsubreddit/")
✅ CanHandle_InvalidSubredditUrl_ReturnsFalse(url: "not-a-url")
✅ CanHandle_UnknownRedditInstance_ReturnsFalse(url: "https://unknown.reddit.com/r/testsubreddit/")
✅ CanHandle_UnknownRedditInstance_ReturnsFalse(url: "https://www.unknown.reddit.com/r/testsubreddit/")
✅ CanHandle_ValidSubredditUrl_ReturnsTrue(url: "https://reddit.com/r/testsubreddit")
✅ CanHandle_ValidSubredditUrl_ReturnsTrue(url: "https://reddit.com/r/testsubreddit/")
✅ CanHandle_ValidSubredditUrl_ReturnsTrue(url: "hTTpS://rEDdiT.cOm/R/tEsTsUbReDdIt/")
✅ CanHandle_ValidSubredditUrl_ReturnsTrue(url: "https://www.reddit.com/r/testsubreddit/")
✅ ExtractAsync_AvailableContent_ReturnsExpectedContent
✅ ExtractAsync_AvailableContent_ReturnsExpectedTitle
✅ ExtractAsync_ImageKeyExistsAndIsAccessible_ReturnsImageUrl(imageKey: "banner_background_image")
✅ ExtractAsync_ImageKeyExistsAndIsAccessible_ReturnsImageUrl(imageKey: "banner_img")
✅ ExtractAsync_ImageKeyExistsAndIsAccessible_ReturnsImageUrl(imageKey: "community_icon")
✅ ExtractAsync_ImageKeyExistsAndIsAccessible_ReturnsImageUrl(imageKey: "icon_img")
✅ ExtractAsync_ImageKeyExistsAndIsAccessible_ReturnsImageUrl(imageKey: "mobile_banner_image")
✅ ExtractAsync_ImageUrlIsInvalid_UsesFallbackImageUrl(invalidType: "empty")
✅ ExtractAsync_ImageUrlIsInvalid_UsesFallbackImageUrl(invalidType: "invalid-uri")
✅ ExtractAsync_ImageUrlIsInvalid_UsesFallbackImageUrl(invalidType: "non-http")
✅ ExtractAsync_ImageUrlIsInvalid_UsesFallbackImageUrl(invalidType: "null")
✅ ExtractAsync_ImageUrlIsInvalid_UsesFallbackImageUrl(invalidType: "whitespace")
✅ ExtractAsync_NoImageKeysExist_UsesFallbackImageUrl
✅ ExtractAsync_TryGetReturnsFalse_UsesFallbackImageUrl(imageKey: "banner_background_image")
✅ ExtractAsync_TryGetReturnsFalse_UsesFallbackImageUrl(imageKey: "banner_img")
✅ ExtractAsync_TryGetReturnsFalse_UsesFallbackImageUrl(imageKey: "community_icon")
✅ ExtractAsync_TryGetReturnsFalse_UsesFallbackImageUrl(imageKey: "icon_img")
✅ ExtractAsync_TryGetReturnsFalse_UsesFallbackImageUrl(imageKey: "mobile_banner_image")
✅ ExtractAsync_UrlWithQueryString_ExtractsCorrectSubredditName
✅ ExtractAsync_ValidUrl_CallsSubredditClientWithCorrectName(subredditUrl: "https://www.reddit.com/r/testsubreddit")
✅ ExtractAsync_ValidUrl_CallsSubredditClientWithCorrectName(subredditUrl: "https://www.reddit.com/r/testsubreddit/")
✅ ExtractAsync_ValidUrl_GeneratesInstanceSpecificOriginalUrl
✅ GetSubredditImageUrlAsync_FirstImageNotAccessible_ReturnsSecondImage
✅ GetSubredditImageUrlAsync_HttpDownloaderThrows_PropagatesException
✅ GetSubredditImageUrlAsync_ImageExistsButNotAccessible_ReturnsFallbackImageUrl
✅ GetSubredditImageUrlAsync_ImageKeyExistsAndIsAccessible_ReturnsImageUrl(imageKey: "banner_background_image")
✅ GetSubredditImageUrlAsync_ImageKeyExistsAndIsAccessible_ReturnsImageUrl(imageKey: "banner_img")
✅ GetSubredditImageUrlAsync_ImageKeyExistsAndIsAccessible_ReturnsImageUrl(imageKey: "community_icon")
✅ GetSubredditImageUrlAsync_ImageKeyExistsAndIsAccessible_ReturnsImageUrl(imageKey: "icon_img")
✅ GetSubredditImageUrlAsync_ImageKeyExistsAndIsAccessible_ReturnsImageUrl(imageKey: "mobile_banner_image")
✅ GetSubredditImageUrlAsync_ImageUrlIsInvalidUri_UsesFallbackImageUrl(imageKey: "banner_background_image", imageUrl: "http://")
✅ GetSubredditImageUrlAsync_ImageUrlIsInvalidUri_UsesFallbackImageUrl(imageKey: "banner_img", imageUrl: "https://")
✅ GetSubredditImageUrlAsync_ImageUrlIsInvalidUri_UsesFallbackImageUrl(imageKey: "community_icon", imageUrl: "://invalid-url")
✅ GetSubredditImageUrlAsync_ImageUrlIsInvalidUri_UsesFallbackImageUrl(imageKey: "icon_img", imageUrl: "not-a-valid-url")
✅ GetSubredditImageUrlAsync_ImageUrlIsUnsuitable_UsesFallbackImageUrl(imageKey: "banner_background_image", imageUrl: " ")
✅ GetSubredditImageUrlAsync_ImageUrlIsUnsuitable_UsesFallbackImageUrl(imageKey: "banner_background_image", imageUrl: "file:///c:/images/banner.png")
✅ GetSubredditImageUrlAsync_ImageUrlIsUnsuitable_UsesFallbackImageUrl(imageKey: "banner_img", imageUrl: "\t")
✅ GetSubredditImageUrlAsync_ImageUrlIsUnsuitable_UsesFallbackImageUrl(imageKey: "banner_img", imageUrl: "javascript:alert('xss')")
✅ GetSubredditImageUrlAsync_ImageUrlIsUnsuitable_UsesFallbackImageUrl(imageKey: "community_icon", imageUrl: "")
✅ GetSubredditImageUrlAsync_ImageUrlIsUnsuitable_UsesFallbackImageUrl(imageKey: "community_icon", imageUrl: "ftp://example.com/image.png")
✅ GetSubredditImageUrlAsync_ImageUrlIsUnsuitable_UsesFallbackImageUrl(imageKey: "icon_img", imageUrl: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEA"···)
✅ GetSubredditImageUrlAsync_ImageUrlIsUnsuitable_UsesFallbackImageUrl(imageKey: "icon_img", imageUrl: null)
✅ GetSubredditImageUrlAsync_ImageUrlIsUnsuitable_UsesFallbackImageUrl(imageKey: "mobile_banner_image", imageUrl: "\n")
✅ GetSubredditImageUrlAsync_ImageUrlIsUnsuitable_UsesFallbackImageUrl(imageKey: "mobile_banner_image", imageUrl: "mailto:test@example.com")
✅ GetSubredditImageUrlAsync_MixedValidAndInvalidUrls_UsesFirstValidHttpUrl
✅ GetSubredditImageUrlAsync_MultipleImageKeys_ReturnsFirstAccessibleImage
✅ GetSubredditImageUrlAsync_NoImageKeysExist_ReturnsFallbackImageUrl
✅ Elzik.Breef.Infrastructure.Tests.Unit.ContentSummariserTests
✅ SummariseAsync_ValidContent_Logs
✅ SummariseAsync_ValidContent_ProvidesModelInstructions
✅ SummariseAsync_ValidContent_ReturnsSummary
✅ Elzik.Breef.Infrastructure.Tests.Unit.Wallabag.WallabagBreefPublisherTests
✅ Publish_WhenCalled_ShouldReturnPublishedBreef
✅ Elzik.Breef.Infrastructure.Tests.Unit.Wallabag.WallabagDateTimeConverterTests
✅ Read_InvalidInput_Throws(testJson: "\"invalid-date\"", expectedMessage: "Unable to convert \"invalid-date\" to a Wallabag D"···)
✅ Read_InvalidInput_Throws(testJson: "12345", expectedMessage: "Expected string token.")
✅ Read_ValidDate_ReturnsExpectedDate
✅ Write_ShouldConvertDateTimeToString
Loading