diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index a9063844..49dda01f 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -35,45 +35,4 @@
<_Parameter1>false
-
-
-
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Recyclarr.Common.TestLibrary/Recyclarr.Common.TestLibrary.csproj b/src/Recyclarr.Common.TestLibrary/Recyclarr.Common.TestLibrary.csproj
deleted file mode 100644
index 80e11f11..00000000
--- a/src/Recyclarr.Common.TestLibrary/Recyclarr.Common.TestLibrary.csproj
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/src/Recyclarr.TestLibrary/Recyclarr.TestLibrary.csproj b/src/Recyclarr.TestLibrary/Recyclarr.TestLibrary.csproj
deleted file mode 100644
index 80e11f11..00000000
--- a/src/Recyclarr.TestLibrary/Recyclarr.TestLibrary.csproj
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/src/Recyclarr.sln b/src/Recyclarr.sln
index 600bb639..3ddc94da 100644
--- a/src/Recyclarr.sln
+++ b/src/Recyclarr.sln
@@ -5,11 +5,11 @@ VisualStudioVersion = 17.3.32825.248
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Cli", "Recyclarr.Cli\Recyclarr.Cli.csproj", "{CD5C6F99-C587-4B7C-86AE-550FA4A5594A}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Cli.Tests", "Recyclarr.Cli.Tests\Recyclarr.Cli.Tests.csproj", "{217D5972-4BB7-4343-9043-C30BD9A1811E}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Cli.Tests", "tests\Recyclarr.Cli.Tests\Recyclarr.Cli.Tests.csproj", "{217D5972-4BB7-4343-9043-C30BD9A1811E}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.TestLibrary", "Recyclarr.TestLibrary\Recyclarr.TestLibrary.csproj", "{49F28A82-468F-4C48-9A59-D41B8FE26D6E}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.TestLibrary", "tests\Recyclarr.TestLibrary\Recyclarr.TestLibrary.csproj", "{49F28A82-468F-4C48-9A59-D41B8FE26D6E}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.TestLibrary.Tests", "Recyclarr.TestLibrary.Tests\Recyclarr.TestLibrary.Tests.csproj", "{BF105B2F-8E13-48AD-BF72-DF7EFEB018B6}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.TestLibrary.Tests", "tests\Recyclarr.TestLibrary.Tests\Recyclarr.TestLibrary.Tests.csproj", "{BF105B2F-8E13-48AD-BF72-DF7EFEB018B6}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Props", "Props", "{305C2AC5-803F-41B3-92D8-4AD2B2E3E130}"
ProjectSection(SolutionItems) = preProject
@@ -21,21 +21,24 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Props", "Props", "{305C2AC5
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Common", "Recyclarr.Common\Recyclarr.Common.csproj", "{18CF1FCA-7983-4423-8B7E-4A830108C624}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Common.Tests", "Recyclarr.Common.Tests\Recyclarr.Common.Tests.csproj", "{0720939D-1CA6-43D7-BBED-F8F894C4F562}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Common.Tests", "tests\Recyclarr.Common.Tests\Recyclarr.Common.Tests.csproj", "{0720939D-1CA6-43D7-BBED-F8F894C4F562}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.TrashLib.TestLibrary", "Recyclarr.TrashLib.TestLibrary\Recyclarr.TrashLib.TestLibrary.csproj", "{33226068-65E3-4890-8671-59A56BA3F6F0}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.TrashLib.TestLibrary", "tests\Recyclarr.TrashLib.TestLibrary\Recyclarr.TrashLib.TestLibrary.csproj", "{33226068-65E3-4890-8671-59A56BA3F6F0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.TrashLib", "Recyclarr.TrashLib\Recyclarr.TrashLib.csproj", "{4F6ACBA6-9A7D-487C-ACC1-787CCC90A381}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.TrashLib.Tests", "Recyclarr.TrashLib.Tests\Recyclarr.TrashLib.Tests.csproj", "{A4EC7E0D-C591-4874-B9AC-EB12A96F3E83}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.TrashLib.Tests", "tests\Recyclarr.TrashLib.Tests\Recyclarr.TrashLib.Tests.csproj", "{A4EC7E0D-C591-4874-B9AC-EB12A96F3E83}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Cli.TestLibrary", "Recyclarr.Cli.TestLibrary\Recyclarr.Cli.TestLibrary.csproj", "{77D1C695-94D4-46A9-8F12-41E54AF97750}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Cli.TestLibrary", "tests\Recyclarr.Cli.TestLibrary\Recyclarr.Cli.TestLibrary.csproj", "{77D1C695-94D4-46A9-8F12-41E54AF97750}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Gui", "Recyclarr.Gui\Recyclarr.Gui.csproj", "{53EECBC0-E0EA-4D6C-925C-5DB8C42CCB85}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Common.TestLibrary", "Recyclarr.Common.TestLibrary\Recyclarr.Common.TestLibrary.csproj", "{A92321B5-2796-467B-B5A5-2BFC41167A25}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Common.TestLibrary", "tests\Recyclarr.Common.TestLibrary\Recyclarr.Common.TestLibrary.csproj", "{A92321B5-2796-467B-B5A5-2BFC41167A25}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{18E17C53-F600-40AE-82C1-3CD1E547C307}"
+ ProjectSection(SolutionItems) = preProject
+ tests\Directory.Build.props = tests\Directory.Build.props
+ EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/src/tests/Directory.Build.props b/src/tests/Directory.Build.props
new file mode 100644
index 00000000..80c880d1
--- /dev/null
+++ b/src/tests/Directory.Build.props
@@ -0,0 +1,42 @@
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Recyclarr.Cli.TestLibrary/CliIntegrationFixture.cs b/src/tests/Recyclarr.Cli.TestLibrary/CliIntegrationFixture.cs
similarity index 100%
rename from src/Recyclarr.Cli.TestLibrary/CliIntegrationFixture.cs
rename to src/tests/Recyclarr.Cli.TestLibrary/CliIntegrationFixture.cs
diff --git a/src/Recyclarr.Cli.TestLibrary/MockSyncSettings.cs b/src/tests/Recyclarr.Cli.TestLibrary/MockSyncSettings.cs
similarity index 100%
rename from src/Recyclarr.Cli.TestLibrary/MockSyncSettings.cs
rename to src/tests/Recyclarr.Cli.TestLibrary/MockSyncSettings.cs
diff --git a/src/Recyclarr.Cli.TestLibrary/NewQp.cs b/src/tests/Recyclarr.Cli.TestLibrary/NewQp.cs
similarity index 100%
rename from src/Recyclarr.Cli.TestLibrary/NewQp.cs
rename to src/tests/Recyclarr.Cli.TestLibrary/NewQp.cs
diff --git a/src/Recyclarr.Cli.TestLibrary/Recyclarr.Cli.TestLibrary.csproj b/src/tests/Recyclarr.Cli.TestLibrary/Recyclarr.Cli.TestLibrary.csproj
similarity index 83%
rename from src/Recyclarr.Cli.TestLibrary/Recyclarr.Cli.TestLibrary.csproj
rename to src/tests/Recyclarr.Cli.TestLibrary/Recyclarr.Cli.TestLibrary.csproj
index 85012f15..3f16a94f 100644
--- a/src/Recyclarr.Cli.TestLibrary/Recyclarr.Cli.TestLibrary.csproj
+++ b/src/tests/Recyclarr.Cli.TestLibrary/Recyclarr.Cli.TestLibrary.csproj
@@ -1,7 +1,7 @@
-
+
diff --git a/src/Recyclarr.Cli.Tests/AutoMapperConfigurationTest.cs b/src/tests/Recyclarr.Cli.Tests/AutoMapperConfigurationTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/AutoMapperConfigurationTest.cs
rename to src/tests/Recyclarr.Cli.Tests/AutoMapperConfigurationTest.cs
diff --git a/src/Recyclarr.Cli.Tests/BaseCommandSetupIntegrationTest.cs b/src/tests/Recyclarr.Cli.Tests/BaseCommandSetupIntegrationTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/BaseCommandSetupIntegrationTest.cs
rename to src/tests/Recyclarr.Cli.Tests/BaseCommandSetupIntegrationTest.cs
diff --git a/src/Recyclarr.Cli.Tests/CompositionRootTest.cs b/src/tests/Recyclarr.Cli.Tests/CompositionRootTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/CompositionRootTest.cs
rename to src/tests/Recyclarr.Cli.Tests/CompositionRootTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Console/Data/optionals.json b/src/tests/Recyclarr.Cli.Tests/Console/Data/optionals.json
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Console/Data/optionals.json
rename to src/tests/Recyclarr.Cli.Tests/Console/Data/optionals.json
diff --git a/src/Recyclarr.Cli.Tests/Console/Helpers/CacheStoragePathTest.cs b/src/tests/Recyclarr.Cli.Tests/Console/Helpers/CacheStoragePathTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Console/Helpers/CacheStoragePathTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Console/Helpers/CacheStoragePathTest.cs
diff --git a/src/Recyclarr.Cli.Tests/LogJanitorTest.cs b/src/tests/Recyclarr.Cli.Tests/LogJanitorTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/LogJanitorTest.cs
rename to src/tests/Recyclarr.Cli.Tests/LogJanitorTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Migration/MigrationExecutorTest.cs b/src/tests/Recyclarr.Cli.Tests/Migration/MigrationExecutorTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Migration/MigrationExecutorTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Migration/MigrationExecutorTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Api/CustomFormatServiceTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Api/CustomFormatServiceTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Api/CustomFormatServiceTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Api/CustomFormatServiceTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Api/Data/issue_178.json b/src/tests/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Api/Data/issue_178.json
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Api/Data/issue_178.json
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Api/Data/issue_178.json
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Guide/CustomFormatCategoryParserTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Guide/CustomFormatCategoryParserTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Guide/CustomFormatCategoryParserTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Guide/CustomFormatCategoryParserTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Guide/CustomFormatDataListerTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Guide/CustomFormatDataListerTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Guide/CustomFormatDataListerTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Guide/CustomFormatDataListerTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Guide/CustomFormatLoaderTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Guide/CustomFormatLoaderTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Guide/CustomFormatLoaderTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Guide/CustomFormatLoaderTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Guide/CustomFormatParserTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Guide/CustomFormatParserTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Guide/CustomFormatParserTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Guide/CustomFormatParserTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Models/CustomFormatDataComparerTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Models/CustomFormatDataComparerTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Models/CustomFormatDataComparerTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Models/CustomFormatDataComparerTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Models/FieldsArrayJsonConverterTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Models/FieldsArrayJsonConverterTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Models/FieldsArrayJsonConverterTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/CustomFormat/Models/FieldsArrayJsonConverterTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/PipelinePhases/CustomFormatConfigPhaseTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/CustomFormat/PipelinePhases/CustomFormatConfigPhaseTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/PipelinePhases/CustomFormatConfigPhaseTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/CustomFormat/PipelinePhases/CustomFormatConfigPhaseTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/PipelinePhases/CustomFormatTransactionPhaseTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/CustomFormat/PipelinePhases/CustomFormatTransactionPhaseTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/CustomFormat/PipelinePhases/CustomFormatTransactionPhaseTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/CustomFormat/PipelinePhases/CustomFormatTransactionPhaseTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/QualityProfile/PipelinePhases/QualityProfileConfigPhaseTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/QualityProfile/PipelinePhases/QualityProfileConfigPhaseTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/QualityProfile/PipelinePhases/QualityProfileConfigPhaseTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/QualityProfile/PipelinePhases/QualityProfileConfigPhaseTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/QualityProfile/PipelinePhases/QualityProfileTransactionPhaseTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/QualityProfile/PipelinePhases/QualityProfileTransactionPhaseTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/QualityProfile/PipelinePhases/QualityProfileTransactionPhaseTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/QualityProfile/PipelinePhases/QualityProfileTransactionPhaseTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/QualitySize/Guide/Data/invalid_quality_size.json b/src/tests/Recyclarr.Cli.Tests/Pipelines/QualitySize/Guide/Data/invalid_quality_size.json
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/QualitySize/Guide/Data/invalid_quality_size.json
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/QualitySize/Guide/Data/invalid_quality_size.json
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/QualitySize/Guide/Data/quality_size.json b/src/tests/Recyclarr.Cli.Tests/Pipelines/QualitySize/Guide/Data/quality_size.json
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/QualitySize/Guide/Data/quality_size.json
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/QualitySize/Guide/Data/quality_size.json
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/QualitySize/Guide/QualityGuideServiceTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/QualitySize/Guide/QualityGuideServiceTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/QualitySize/Guide/QualityGuideServiceTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/QualitySize/Guide/QualityGuideServiceTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/QualitySize/Guide/QualityItemTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/QualitySize/Guide/QualityItemTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/QualitySize/Guide/QualityItemTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/QualitySize/Guide/QualityItemTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/QualitySize/Guide/QualitySizeGuideParserTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/QualitySize/Guide/QualitySizeGuideParserTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/QualitySize/Guide/QualitySizeGuideParserTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/QualitySize/Guide/QualitySizeGuideParserTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/QualitySize/PipelinePhases/QualitySizeGuidePhaseTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/QualitySize/PipelinePhases/QualitySizeGuidePhaseTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/QualitySize/PipelinePhases/QualitySizeGuidePhaseTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/QualitySize/PipelinePhases/QualitySizeGuidePhaseTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/QualitySize/PipelinePhases/QualitySizeTransactionPhaseTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/QualitySize/PipelinePhases/QualitySizeTransactionPhaseTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/QualitySize/PipelinePhases/QualitySizeTransactionPhaseTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/QualitySize/PipelinePhases/QualitySizeTransactionPhaseTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/QualitySize/QualitySizeItemTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/QualitySize/QualitySizeItemTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/QualitySize/QualitySizeItemTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/QualitySize/QualitySizeItemTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Api/SonarrReleaseProfileCompatibilityHandlerTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Api/SonarrReleaseProfileCompatibilityHandlerTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Api/SonarrReleaseProfileCompatibilityHandlerTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Api/SonarrReleaseProfileCompatibilityHandlerTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Data/include_preferred_when_renaming.md b/src/tests/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Data/include_preferred_when_renaming.md
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Data/include_preferred_when_renaming.md
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Data/include_preferred_when_renaming.md
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Data/strict_negative_scores.md b/src/tests/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Data/strict_negative_scores.md
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Data/strict_negative_scores.md
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Data/strict_negative_scores.md
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Data/test_parse_markdown_complete_doc.md b/src/tests/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Data/test_parse_markdown_complete_doc.md
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Data/test_parse_markdown_complete_doc.md
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Data/test_parse_markdown_complete_doc.md
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Filters/ReleaseProfileDataFiltererTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Filters/ReleaseProfileDataFiltererTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Filters/ReleaseProfileDataFiltererTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Filters/ReleaseProfileDataFiltererTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Filters/ReleaseProfileDataValidationFiltererTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Filters/ReleaseProfileDataValidationFiltererTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Filters/ReleaseProfileDataValidationFiltererTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Filters/ReleaseProfileDataValidationFiltererTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Filters/StrictNegativeScoresFilterTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Filters/StrictNegativeScoresFilterTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Filters/StrictNegativeScoresFilterTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Filters/StrictNegativeScoresFilterTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Guide/ReleaseProfileDataListerTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Guide/ReleaseProfileDataListerTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Guide/ReleaseProfileDataListerTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Guide/ReleaseProfileDataListerTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Guide/ReleaseProfileGuideServiceTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Guide/ReleaseProfileGuideServiceTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Guide/ReleaseProfileGuideServiceTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/Guide/ReleaseProfileGuideServiceTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/ReleaseProfileDataValidatorTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/ReleaseProfileDataValidatorTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/ReleaseProfileDataValidatorTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/ReleaseProfile/ReleaseProfileDataValidatorTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/Tags/PipelinePhases/TagApiFetchPhaseTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/Tags/PipelinePhases/TagApiFetchPhaseTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/Tags/PipelinePhases/TagApiFetchPhaseTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/Tags/PipelinePhases/TagApiFetchPhaseTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/Tags/PipelinePhases/TagApiPersistencePhaseTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/Tags/PipelinePhases/TagApiPersistencePhaseTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/Tags/PipelinePhases/TagApiPersistencePhaseTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/Tags/PipelinePhases/TagApiPersistencePhaseTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/Tags/PipelinePhases/TagConfigPhaseTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/Tags/PipelinePhases/TagConfigPhaseTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/Tags/PipelinePhases/TagConfigPhaseTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/Tags/PipelinePhases/TagConfigPhaseTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Pipelines/Tags/PipelinePhases/TagTransactionPhaseTest.cs b/src/tests/Recyclarr.Cli.Tests/Pipelines/Tags/PipelinePhases/TagTransactionPhaseTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Pipelines/Tags/PipelinePhases/TagTransactionPhaseTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Pipelines/Tags/PipelinePhases/TagTransactionPhaseTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Processors/ConfigCreationProcessorTest.cs b/src/tests/Recyclarr.Cli.Tests/Processors/ConfigCreationProcessorTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Processors/ConfigCreationProcessorTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Processors/ConfigCreationProcessorTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Processors/ConfigListProcessorTest.cs b/src/tests/Recyclarr.Cli.Tests/Processors/ConfigListProcessorTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/Processors/ConfigListProcessorTest.cs
rename to src/tests/Recyclarr.Cli.Tests/Processors/ConfigListProcessorTest.cs
diff --git a/src/Recyclarr.Cli.Tests/Recyclarr.Cli.Tests.csproj b/src/tests/Recyclarr.Cli.Tests/Recyclarr.Cli.Tests.csproj
similarity index 82%
rename from src/Recyclarr.Cli.Tests/Recyclarr.Cli.Tests.csproj
rename to src/tests/Recyclarr.Cli.Tests/Recyclarr.Cli.Tests.csproj
index 30c74fda..3b516079 100644
--- a/src/Recyclarr.Cli.Tests/Recyclarr.Cli.Tests.csproj
+++ b/src/tests/Recyclarr.Cli.Tests/Recyclarr.Cli.Tests.csproj
@@ -2,7 +2,7 @@
-
+
diff --git a/src/Recyclarr.Cli.Tests/ServiceCompatibilityIntegrationTest.cs b/src/tests/Recyclarr.Cli.Tests/ServiceCompatibilityIntegrationTest.cs
similarity index 100%
rename from src/Recyclarr.Cli.Tests/ServiceCompatibilityIntegrationTest.cs
rename to src/tests/Recyclarr.Cli.Tests/ServiceCompatibilityIntegrationTest.cs
diff --git a/src/Recyclarr.Common.TestLibrary/CommonMockFileSystemExtensions.cs b/src/tests/Recyclarr.Common.TestLibrary/CommonMockFileSystemExtensions.cs
similarity index 100%
rename from src/Recyclarr.Common.TestLibrary/CommonMockFileSystemExtensions.cs
rename to src/tests/Recyclarr.Common.TestLibrary/CommonMockFileSystemExtensions.cs
diff --git a/src/tests/Recyclarr.Common.TestLibrary/Recyclarr.Common.TestLibrary.csproj b/src/tests/Recyclarr.Common.TestLibrary/Recyclarr.Common.TestLibrary.csproj
new file mode 100644
index 00000000..83e96c5d
--- /dev/null
+++ b/src/tests/Recyclarr.Common.TestLibrary/Recyclarr.Common.TestLibrary.csproj
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/Recyclarr.Common.Tests/DefaultDataFile.txt b/src/tests/Recyclarr.Common.Tests/DefaultDataFile.txt
similarity index 100%
rename from src/Recyclarr.Common.Tests/DefaultDataFile.txt
rename to src/tests/Recyclarr.Common.Tests/DefaultDataFile.txt
diff --git a/src/Recyclarr.Common.Tests/Extensions/DictionaryExtensionsTest.cs b/src/tests/Recyclarr.Common.Tests/Extensions/DictionaryExtensionsTest.cs
similarity index 100%
rename from src/Recyclarr.Common.Tests/Extensions/DictionaryExtensionsTest.cs
rename to src/tests/Recyclarr.Common.Tests/Extensions/DictionaryExtensionsTest.cs
diff --git a/src/Recyclarr.Common.Tests/Extensions/FileSystemExtensionsTest.cs b/src/tests/Recyclarr.Common.Tests/Extensions/FileSystemExtensionsTest.cs
similarity index 100%
rename from src/Recyclarr.Common.Tests/Extensions/FileSystemExtensionsTest.cs
rename to src/tests/Recyclarr.Common.Tests/Extensions/FileSystemExtensionsTest.cs
diff --git a/src/Recyclarr.Common.Tests/Extensions/StringExtensionsTest.cs b/src/tests/Recyclarr.Common.Tests/Extensions/StringExtensionsTest.cs
similarity index 100%
rename from src/Recyclarr.Common.Tests/Extensions/StringExtensionsTest.cs
rename to src/tests/Recyclarr.Common.Tests/Extensions/StringExtensionsTest.cs
diff --git a/src/Recyclarr.Common.Tests/JsonUtilsTest.cs b/src/tests/Recyclarr.Common.Tests/JsonUtilsTest.cs
similarity index 100%
rename from src/Recyclarr.Common.Tests/JsonUtilsTest.cs
rename to src/tests/Recyclarr.Common.Tests/JsonUtilsTest.cs
diff --git a/src/Recyclarr.Common.Tests/Recyclarr.Common.Tests.csproj b/src/tests/Recyclarr.Common.Tests/Recyclarr.Common.Tests.csproj
similarity index 78%
rename from src/Recyclarr.Common.Tests/Recyclarr.Common.Tests.csproj
rename to src/tests/Recyclarr.Common.Tests/Recyclarr.Common.Tests.csproj
index 608cbc7b..2b482c14 100644
--- a/src/Recyclarr.Common.Tests/Recyclarr.Common.Tests.csproj
+++ b/src/tests/Recyclarr.Common.Tests/Recyclarr.Common.Tests.csproj
@@ -1,7 +1,7 @@
-
+
diff --git a/src/Recyclarr.Common.Tests/ResourceDataReaderTest.cs b/src/tests/Recyclarr.Common.Tests/ResourceDataReaderTest.cs
similarity index 100%
rename from src/Recyclarr.Common.Tests/ResourceDataReaderTest.cs
rename to src/tests/Recyclarr.Common.Tests/ResourceDataReaderTest.cs
diff --git a/src/Recyclarr.Common.Tests/ScopedStateTest.cs b/src/tests/Recyclarr.Common.Tests/ScopedStateTest.cs
similarity index 100%
rename from src/Recyclarr.Common.Tests/ScopedStateTest.cs
rename to src/tests/Recyclarr.Common.Tests/ScopedStateTest.cs
diff --git a/src/Recyclarr.Common.Tests/TestData/DataFile.txt b/src/tests/Recyclarr.Common.Tests/TestData/DataFile.txt
similarity index 100%
rename from src/Recyclarr.Common.Tests/TestData/DataFile.txt
rename to src/tests/Recyclarr.Common.Tests/TestData/DataFile.txt
diff --git a/src/Recyclarr.TestLibrary.Tests/Recyclarr.TestLibrary.Tests.csproj b/src/tests/Recyclarr.TestLibrary.Tests/Recyclarr.TestLibrary.Tests.csproj
similarity index 100%
rename from src/Recyclarr.TestLibrary.Tests/Recyclarr.TestLibrary.Tests.csproj
rename to src/tests/Recyclarr.TestLibrary.Tests/Recyclarr.TestLibrary.Tests.csproj
diff --git a/src/Recyclarr.TestLibrary.Tests/StreamBuilderTest.cs b/src/tests/Recyclarr.TestLibrary.Tests/StreamBuilderTest.cs
similarity index 100%
rename from src/Recyclarr.TestLibrary.Tests/StreamBuilderTest.cs
rename to src/tests/Recyclarr.TestLibrary.Tests/StreamBuilderTest.cs
diff --git a/src/Recyclarr.TestLibrary.Tests/StringUtilsTest.cs b/src/tests/Recyclarr.TestLibrary.Tests/StringUtilsTest.cs
similarity index 100%
rename from src/Recyclarr.TestLibrary.Tests/StringUtilsTest.cs
rename to src/tests/Recyclarr.TestLibrary.Tests/StringUtilsTest.cs
diff --git a/src/Recyclarr.TestLibrary/AutoFixture/AutoMockDataAttribute.cs b/src/tests/Recyclarr.TestLibrary/AutoFixture/AutoMockDataAttribute.cs
similarity index 100%
rename from src/Recyclarr.TestLibrary/AutoFixture/AutoMockDataAttribute.cs
rename to src/tests/Recyclarr.TestLibrary/AutoFixture/AutoMockDataAttribute.cs
diff --git a/src/Recyclarr.TestLibrary/AutoFixture/AutofacSpecimenBuilder.cs b/src/tests/Recyclarr.TestLibrary/AutoFixture/AutofacSpecimenBuilder.cs
similarity index 100%
rename from src/Recyclarr.TestLibrary/AutoFixture/AutofacSpecimenBuilder.cs
rename to src/tests/Recyclarr.TestLibrary/AutoFixture/AutofacSpecimenBuilder.cs
diff --git a/src/Recyclarr.TestLibrary/AutoFixture/InlineAutoMockDataAttribute.cs b/src/tests/Recyclarr.TestLibrary/AutoFixture/InlineAutoMockDataAttribute.cs
similarity index 100%
rename from src/Recyclarr.TestLibrary/AutoFixture/InlineAutoMockDataAttribute.cs
rename to src/tests/Recyclarr.TestLibrary/AutoFixture/InlineAutoMockDataAttribute.cs
diff --git a/src/Recyclarr.TestLibrary/AutoFixture/MockFileSystemSpecimenBuilder.cs b/src/tests/Recyclarr.TestLibrary/AutoFixture/MockFileSystemSpecimenBuilder.cs
similarity index 100%
rename from src/Recyclarr.TestLibrary/AutoFixture/MockFileSystemSpecimenBuilder.cs
rename to src/tests/Recyclarr.TestLibrary/AutoFixture/MockFileSystemSpecimenBuilder.cs
diff --git a/src/Recyclarr.TestLibrary/AutoFixture/NSubstituteFixture.cs b/src/tests/Recyclarr.TestLibrary/AutoFixture/NSubstituteFixture.cs
similarity index 100%
rename from src/Recyclarr.TestLibrary/AutoFixture/NSubstituteFixture.cs
rename to src/tests/Recyclarr.TestLibrary/AutoFixture/NSubstituteFixture.cs
diff --git a/src/Recyclarr.TestLibrary/Autofac/AutofacTestExtensions.cs b/src/tests/Recyclarr.TestLibrary/Autofac/AutofacTestExtensions.cs
similarity index 100%
rename from src/Recyclarr.TestLibrary/Autofac/AutofacTestExtensions.cs
rename to src/tests/Recyclarr.TestLibrary/Autofac/AutofacTestExtensions.cs
diff --git a/src/Recyclarr.TestLibrary/Autofac/StubAutofacIndex.cs b/src/tests/Recyclarr.TestLibrary/Autofac/StubAutofacIndex.cs
similarity index 100%
rename from src/Recyclarr.TestLibrary/Autofac/StubAutofacIndex.cs
rename to src/tests/Recyclarr.TestLibrary/Autofac/StubAutofacIndex.cs
diff --git a/src/Recyclarr.TestLibrary/FileUtils.cs b/src/tests/Recyclarr.TestLibrary/FileUtils.cs
similarity index 100%
rename from src/Recyclarr.TestLibrary/FileUtils.cs
rename to src/tests/Recyclarr.TestLibrary/FileUtils.cs
diff --git a/src/Recyclarr.TestLibrary/FluentAssertions/JsonEquivalencyStep.cs b/src/tests/Recyclarr.TestLibrary/FluentAssertions/JsonEquivalencyStep.cs
similarity index 100%
rename from src/Recyclarr.TestLibrary/FluentAssertions/JsonEquivalencyStep.cs
rename to src/tests/Recyclarr.TestLibrary/FluentAssertions/JsonEquivalencyStep.cs
diff --git a/src/Recyclarr.TestLibrary/MockData.cs b/src/tests/Recyclarr.TestLibrary/MockData.cs
similarity index 100%
rename from src/Recyclarr.TestLibrary/MockData.cs
rename to src/tests/Recyclarr.TestLibrary/MockData.cs
diff --git a/src/Recyclarr.TestLibrary/MockFileSystemExtensions.cs b/src/tests/Recyclarr.TestLibrary/MockFileSystemExtensions.cs
similarity index 100%
rename from src/Recyclarr.TestLibrary/MockFileSystemExtensions.cs
rename to src/tests/Recyclarr.TestLibrary/MockFileSystemExtensions.cs
diff --git a/src/Recyclarr.TestLibrary/NSubstitute/Verify.cs b/src/tests/Recyclarr.TestLibrary/NSubstitute/Verify.cs
similarity index 100%
rename from src/Recyclarr.TestLibrary/NSubstitute/Verify.cs
rename to src/tests/Recyclarr.TestLibrary/NSubstitute/Verify.cs
diff --git a/src/tests/Recyclarr.TestLibrary/Recyclarr.TestLibrary.csproj b/src/tests/Recyclarr.TestLibrary/Recyclarr.TestLibrary.csproj
new file mode 100644
index 00000000..83e96c5d
--- /dev/null
+++ b/src/tests/Recyclarr.TestLibrary/Recyclarr.TestLibrary.csproj
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/Recyclarr.TestLibrary/StreamBuilder.cs b/src/tests/Recyclarr.TestLibrary/StreamBuilder.cs
similarity index 100%
rename from src/Recyclarr.TestLibrary/StreamBuilder.cs
rename to src/tests/Recyclarr.TestLibrary/StreamBuilder.cs
diff --git a/src/Recyclarr.TestLibrary/StringUtils.cs b/src/tests/Recyclarr.TestLibrary/StringUtils.cs
similarity index 100%
rename from src/Recyclarr.TestLibrary/StringUtils.cs
rename to src/tests/Recyclarr.TestLibrary/StringUtils.cs
diff --git a/src/Recyclarr.TrashLib.TestLibrary/NewCf.cs b/src/tests/Recyclarr.TrashLib.TestLibrary/NewCf.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.TestLibrary/NewCf.cs
rename to src/tests/Recyclarr.TrashLib.TestLibrary/NewCf.cs
diff --git a/src/Recyclarr.TrashLib.TestLibrary/NewConfig.cs b/src/tests/Recyclarr.TrashLib.TestLibrary/NewConfig.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.TestLibrary/NewConfig.cs
rename to src/tests/Recyclarr.TrashLib.TestLibrary/NewConfig.cs
diff --git a/src/Recyclarr.TrashLib.TestLibrary/Recyclarr.TrashLib.TestLibrary.csproj b/src/tests/Recyclarr.TrashLib.TestLibrary/Recyclarr.TrashLib.TestLibrary.csproj
similarity index 85%
rename from src/Recyclarr.TrashLib.TestLibrary/Recyclarr.TrashLib.TestLibrary.csproj
rename to src/tests/Recyclarr.TrashLib.TestLibrary/Recyclarr.TrashLib.TestLibrary.csproj
index 2b984892..15229298 100644
--- a/src/Recyclarr.TrashLib.TestLibrary/Recyclarr.TrashLib.TestLibrary.csproj
+++ b/src/tests/Recyclarr.TrashLib.TestLibrary/Recyclarr.TrashLib.TestLibrary.csproj
@@ -2,7 +2,7 @@
-
+
diff --git a/src/Recyclarr.TrashLib.TestLibrary/TestAppPaths.cs b/src/tests/Recyclarr.TrashLib.TestLibrary/TestAppPaths.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.TestLibrary/TestAppPaths.cs
rename to src/tests/Recyclarr.TrashLib.TestLibrary/TestAppPaths.cs
diff --git a/src/Recyclarr.TrashLib.TestLibrary/TrashLibIntegrationFixture.cs b/src/tests/Recyclarr.TrashLib.TestLibrary/TrashLibIntegrationFixture.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.TestLibrary/TrashLibIntegrationFixture.cs
rename to src/tests/Recyclarr.TrashLib.TestLibrary/TrashLibIntegrationFixture.cs
diff --git a/src/Recyclarr.TrashLib.Tests/Cache/CachePersisterTest.cs b/src/tests/Recyclarr.TrashLib.Tests/Cache/CachePersisterTest.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/Cache/CachePersisterTest.cs
rename to src/tests/Recyclarr.TrashLib.Tests/Cache/CachePersisterTest.cs
diff --git a/src/Recyclarr.TrashLib.Tests/Cache/ServiceCacheTest.cs b/src/tests/Recyclarr.TrashLib.Tests/Cache/ServiceCacheTest.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/Cache/ServiceCacheTest.cs
rename to src/tests/Recyclarr.TrashLib.Tests/Cache/ServiceCacheTest.cs
diff --git a/src/Recyclarr.TrashLib.Tests/Compatibility/Sonarr/SonarrCapabilityEnforcerTest.cs b/src/tests/Recyclarr.TrashLib.Tests/Compatibility/Sonarr/SonarrCapabilityEnforcerTest.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/Compatibility/Sonarr/SonarrCapabilityEnforcerTest.cs
rename to src/tests/Recyclarr.TrashLib.Tests/Compatibility/Sonarr/SonarrCapabilityEnforcerTest.cs
diff --git a/src/Recyclarr.TrashLib.Tests/Config/ConfigAutofacModuleTest.cs b/src/tests/Recyclarr.TrashLib.Tests/Config/ConfigAutofacModuleTest.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/Config/ConfigAutofacModuleTest.cs
rename to src/tests/Recyclarr.TrashLib.Tests/Config/ConfigAutofacModuleTest.cs
diff --git a/src/Recyclarr.TrashLib.Tests/Config/EnvironmentVariables/EnvironmentVariableNotDefinedExceptionTest.cs b/src/tests/Recyclarr.TrashLib.Tests/Config/EnvironmentVariables/EnvironmentVariableNotDefinedExceptionTest.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/Config/EnvironmentVariables/EnvironmentVariableNotDefinedExceptionTest.cs
rename to src/tests/Recyclarr.TrashLib.Tests/Config/EnvironmentVariables/EnvironmentVariableNotDefinedExceptionTest.cs
diff --git a/src/Recyclarr.TrashLib.Tests/Config/Listers/ConfigTemplateListerTest.cs b/src/tests/Recyclarr.TrashLib.Tests/Config/Listers/ConfigTemplateListerTest.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/Config/Listers/ConfigTemplateListerTest.cs
rename to src/tests/Recyclarr.TrashLib.Tests/Config/Listers/ConfigTemplateListerTest.cs
diff --git a/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigValidationExecutorTest.cs b/src/tests/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigValidationExecutorTest.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigValidationExecutorTest.cs
rename to src/tests/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigValidationExecutorTest.cs
diff --git a/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationFinderTest.cs b/src/tests/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationFinderTest.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationFinderTest.cs
rename to src/tests/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationFinderTest.cs
diff --git a/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderEnvVarTest.cs b/src/tests/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderEnvVarTest.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderEnvVarTest.cs
rename to src/tests/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderEnvVarTest.cs
diff --git a/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderSecretsTest.cs b/src/tests/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderSecretsTest.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderSecretsTest.cs
rename to src/tests/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderSecretsTest.cs
diff --git a/src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderTest.cs b/src/tests/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderTest.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderTest.cs
rename to src/tests/Recyclarr.TrashLib.Tests/Config/Parsing/ConfigurationLoaderTest.cs
diff --git a/src/Recyclarr.TrashLib.Tests/Config/Parsing/Data/Load_UsingStream_CorrectParsing.yml b/src/tests/Recyclarr.TrashLib.Tests/Config/Parsing/Data/Load_UsingStream_CorrectParsing.yml
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/Config/Parsing/Data/Load_UsingStream_CorrectParsing.yml
rename to src/tests/Recyclarr.TrashLib.Tests/Config/Parsing/Data/Load_UsingStream_CorrectParsing.yml
diff --git a/src/Recyclarr.TrashLib.Tests/Config/Parsing/SonarrConfigYamlValidatorTest.cs b/src/tests/Recyclarr.TrashLib.Tests/Config/Parsing/SonarrConfigYamlValidatorTest.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/Config/Parsing/SonarrConfigYamlValidatorTest.cs
rename to src/tests/Recyclarr.TrashLib.Tests/Config/Parsing/SonarrConfigYamlValidatorTest.cs
diff --git a/src/Recyclarr.TrashLib.Tests/Config/Secrets/SecretNotFoundExceptionTest.cs b/src/tests/Recyclarr.TrashLib.Tests/Config/Secrets/SecretNotFoundExceptionTest.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/Config/Secrets/SecretNotFoundExceptionTest.cs
rename to src/tests/Recyclarr.TrashLib.Tests/Config/Secrets/SecretNotFoundExceptionTest.cs
diff --git a/src/Recyclarr.TrashLib.Tests/Config/Services/ConfigTemplateGuideServiceTest.cs b/src/tests/Recyclarr.TrashLib.Tests/Config/Services/ConfigTemplateGuideServiceTest.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/Config/Services/ConfigTemplateGuideServiceTest.cs
rename to src/tests/Recyclarr.TrashLib.Tests/Config/Services/ConfigTemplateGuideServiceTest.cs
diff --git a/src/Recyclarr.TrashLib.Tests/Config/Services/Data/templates.json b/src/tests/Recyclarr.TrashLib.Tests/Config/Services/Data/templates.json
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/Config/Services/Data/templates.json
rename to src/tests/Recyclarr.TrashLib.Tests/Config/Services/Data/templates.json
diff --git a/src/Recyclarr.TrashLib.Tests/Config/Settings/SettingsPersisterTest.cs b/src/tests/Recyclarr.TrashLib.Tests/Config/Settings/SettingsPersisterTest.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/Config/Settings/SettingsPersisterTest.cs
rename to src/tests/Recyclarr.TrashLib.Tests/Config/Settings/SettingsPersisterTest.cs
diff --git a/src/Recyclarr.TrashLib.Tests/Config/YamlConfigValidatorTest.cs b/src/tests/Recyclarr.TrashLib.Tests/Config/YamlConfigValidatorTest.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/Config/YamlConfigValidatorTest.cs
rename to src/tests/Recyclarr.TrashLib.Tests/Config/YamlConfigValidatorTest.cs
diff --git a/src/Recyclarr.TrashLib.Tests/GlobalUsings.cs b/src/tests/Recyclarr.TrashLib.Tests/GlobalUsings.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/GlobalUsings.cs
rename to src/tests/Recyclarr.TrashLib.Tests/GlobalUsings.cs
diff --git a/src/Recyclarr.TrashLib.Tests/Recyclarr.TrashLib.Tests.csproj b/src/tests/Recyclarr.TrashLib.Tests/Recyclarr.TrashLib.Tests.csproj
similarity index 75%
rename from src/Recyclarr.TrashLib.Tests/Recyclarr.TrashLib.Tests.csproj
rename to src/tests/Recyclarr.TrashLib.Tests/Recyclarr.TrashLib.Tests.csproj
index be14eba1..466a79ec 100644
--- a/src/Recyclarr.TrashLib.Tests/Recyclarr.TrashLib.Tests.csproj
+++ b/src/tests/Recyclarr.TrashLib.Tests/Recyclarr.TrashLib.Tests.csproj
@@ -2,6 +2,6 @@
-
+
diff --git a/src/Recyclarr.TrashLib.Tests/Repo/VersionControl/GitPathTest.cs b/src/tests/Recyclarr.TrashLib.Tests/Repo/VersionControl/GitPathTest.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/Repo/VersionControl/GitPathTest.cs
rename to src/tests/Recyclarr.TrashLib.Tests/Repo/VersionControl/GitPathTest.cs
diff --git a/src/Recyclarr.TrashLib.Tests/Startup/DefaultAppDataSetupTest.cs b/src/tests/Recyclarr.TrashLib.Tests/Startup/DefaultAppDataSetupTest.cs
similarity index 100%
rename from src/Recyclarr.TrashLib.Tests/Startup/DefaultAppDataSetupTest.cs
rename to src/tests/Recyclarr.TrashLib.Tests/Startup/DefaultAppDataSetupTest.cs