From c56168f5f0717626abb1384a6f594bceb22ba27c Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Mon, 22 Nov 2021 17:40:42 -0600 Subject: [PATCH] =?UTF-8?q?feat(dir):=20=E2=9C=A8=20add=20some=20domain=20?= =?UTF-8?q?layer=20validations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Aggregates/FilterLists/FilterList.cs | 8 ++++++++ .../Aggregates/FilterLists/FilterListViewUrl.cs | 14 ++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterList.cs b/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterList.cs index 5f3cbc71c..fac24bfab 100644 --- a/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterList.cs +++ b/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterList.cs @@ -48,6 +48,14 @@ public static FilterList CreatePendingApproval( throw new ArgumentException("At lest one view URL is required.", nameof(viewUrls)); } + if (urls.GroupBy(u => new { u.SegmentNumber, u.Primariness }) + .Any(g => g.Count() > 1)) + { + throw new ArgumentException( + "The segment number and primariness pair must be unique for each view URL.", + nameof(viewUrls)); + } + var list = new FilterList { Name = name, diff --git a/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterListViewUrl.cs b/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterListViewUrl.cs index 64c89dbf7..f82a90d43 100644 --- a/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterListViewUrl.cs +++ b/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterListViewUrl.cs @@ -10,6 +10,20 @@ protected FilterListViewUrl() { } internal static FilterListViewUrl Create(short segmentNumber, short primariness, Uri url) { + if (segmentNumber < 1) + { + throw new ArgumentException( + "The segment number must be greater than or equal to 1.", + nameof(segmentNumber)); + } + + if (primariness < 1) + { + throw new ArgumentException( + "The primariness must be greater than or equal to 1.", + nameof(segmentNumber)); + } + return new FilterListViewUrl { SegmentNumber = segmentNumber, Primariness = primariness, Url = url }; } }