Skip to content

Commit 87db2ff

Browse files
committed
Refactor GetAllSubmodelsRequest to use property initialization and update related tests for consistency
1 parent be87f2f commit 87db2ff

4 files changed

Lines changed: 37 additions & 20 deletions

File tree

source/AAS.TwinEngine.DataEngine.UnitTests/Api/SubmodelRepository/Handler/SubmodelRepositoryHandlerTests.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ public async Task GetAllSubmodels_ReturnsSubmodelsDto_WhenServiceSucceeds()
323323
[Fact]
324324
public async Task GetAllSubmodels_WithInvalidLimit_ThrowsInvalidUserInputException()
325325
{
326-
var request = new GetAllSubmodelsRequest { Limit = 0 };
326+
var request = new GetAllSubmodelsRequest {Limit = 0 };
327327

328328
await Assert.ThrowsAsync<InvalidUserInputException>(() => _sut.GetAllSubmodels(request, CancellationToken.None));
329329
}
@@ -391,7 +391,7 @@ public async Task GetAllSubmodelElements_DecodesSubmodelIdAndPassesToService()
391391
{
392392
const string SubmodelId = "NameplateSubmodel";
393393
var encodedId = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(SubmodelId));
394-
var request = new GetAllSubmodelElementsRequest(encodedId, null, null);
394+
var request = new GetAllSubmodelElementsRequest(encodedId, null, null, Level.deep, Extent.withoutBlobValue);
395395
var elementList = new SubmodelElementsPage { PagingMetaData = new DomainModel.Shared.PagingMetaData(), Result = [] };
396396

397397
_submodelRepository
@@ -412,7 +412,7 @@ public async Task GetAllSubmodelElements_PassesLimitAndCursorToService()
412412
const int Limit = 5;
413413
const string Cursor = "dGVzdA==";
414414
var encodedId = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(SubmodelId));
415-
var request = new GetAllSubmodelElementsRequest(encodedId, Limit, Cursor);
415+
var request = new GetAllSubmodelElementsRequest(encodedId, Limit, Cursor, Level.deep, Extent.withoutBlobValue);
416416
var elementList = new SubmodelElementsPage { PagingMetaData = new DomainModel.Shared.PagingMetaData(), Result = [] };
417417

418418
_submodelRepository
@@ -430,7 +430,7 @@ public async Task GetAllSubmodelElements_ReturnsDto_WithElementsAndPagingMetadat
430430
{
431431
const string SubmodelId = "NameplateSubmodel";
432432
var encodedId = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(SubmodelId));
433-
var request = new GetAllSubmodelElementsRequest(encodedId, null, null);
433+
var request = new GetAllSubmodelElementsRequest(encodedId, null, null, Level.deep, Extent.withoutBlobValue);
434434
var element = Substitute.For<ISubmodelElement>();
435435
element.IdShort.Returns("ManufacturerName");
436436
var elementList = new SubmodelElementsPage
@@ -468,12 +468,12 @@ await _submodelRepository.Received(1)
468468
}
469469

470470
[Fact]
471-
public async Task GetAllSubmodelElements_WithNoLevelOrExtent_PassesNullQueryOptionsToService()
471+
public async Task GetAllSubmodelElements_WithNoLevelOrExtent_PassesDefaultQueryOptionsToService()
472472
{
473473
const string SubmodelId = "NameplateSubmodel";
474474
var encodedId = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(SubmodelId));
475-
var request = new GetAllSubmodelElementsRequest(encodedId, null, null);
476-
var elementList = new SubmodelElementsPage { PagingMetaData = new DomainModel.Shared.PagingMetaData(), Result = [] };
475+
var request = new GetAllSubmodelElementsRequest(encodedId, null, null, Level.deep, Extent.withoutBlobValue);
476+
var elementList = new SubmodelElementsPage { PagingMetaData = new PagingMetaData(), Result = [] };
477477

478478
_submodelRepository
479479
.GetAllSubmodelElementsAsync(SubmodelId, null, null, null, Arg.Any<CancellationToken>())
@@ -482,7 +482,7 @@ public async Task GetAllSubmodelElements_WithNoLevelOrExtent_PassesNullQueryOpti
482482
await _sut.GetAllSubmodelElements(request, CancellationToken.None);
483483

484484
await _submodelRepository.Received(1)
485-
.GetAllSubmodelElementsAsync(SubmodelId, null, null, null, Arg.Any<CancellationToken>());
485+
.GetAllSubmodelElementsAsync(SubmodelId, Arg.Is<SubmodelQueryOptions?>(q => q != null), null, null, Arg.Any<CancellationToken>());
486486
}
487487

488488
[Fact]

source/AAS.TwinEngine.DataEngine.UnitTests/Api/SubmodelRepository/SubmodelRepositoryControllerTests.cs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public async Task GetSubmodelAsync_ReturnsOkResult_WithJsonObject()
6363
_handler.GetSubmodel(Arg.Any<GetSubmodelRequest>(), Arg.Any<CancellationToken>())
6464
.Returns(_expectedSubmodel);
6565

66-
var result = await _sut.GetSubmodelAsync(encodedId, null, null, CancellationToken.None);
66+
var result = await _sut.GetSubmodelAsync(encodedId, CancellationToken.None);
6767

6868
var okResult = Assert.IsType<OkObjectResult>(result.Result);
6969
var json = Assert.IsType<JsonObject>(okResult.Value);
@@ -77,12 +77,11 @@ public async Task GetSubmodelAsync_WithLevelAndExtent_PassesThemToHandler()
7777
_handler.GetSubmodel(Arg.Any<GetSubmodelRequest>(), Arg.Any<CancellationToken>())
7878
.Returns(_expectedSubmodel);
7979

80-
await _sut.GetSubmodelAsync(encodedId, AAS.TwinEngine.DataEngine.Api.SubmodelRepository.Requests.Level.deep,
81-
AAS.TwinEngine.DataEngine.Api.SubmodelRepository.Requests.Extent.withBlobValue, CancellationToken.None);
80+
await _sut.GetSubmodelAsync(encodedId, CancellationToken.None, Level.deep, Extent.withBlobValue);
8281

8382
await _handler.Received(1).GetSubmodel(
84-
Arg.Is<GetSubmodelRequest>(r => r.level == AAS.TwinEngine.DataEngine.Api.SubmodelRepository.Requests.Level.deep
85-
&& r.extent == AAS.TwinEngine.DataEngine.Api.SubmodelRepository.Requests.Extent.withBlobValue),
83+
Arg.Is<GetSubmodelRequest>(r => r.Level == Level.deep
84+
&& r.Extent == Extent.withBlobValue),
8685
Arg.Any<CancellationToken>());
8786
}
8887

@@ -94,7 +93,7 @@ public async Task GetSubmodelElementAsync_ReturnsOkResult_WithJsonObject()
9493
_handler.GetSubmodelElement(Arg.Any<GetSubmodelElementRequest>(), Arg.Any<CancellationToken>())
9594
.Returns(_expectedElement);
9695

97-
var result = await _sut.GetSubmodelElementAsync(encodedId, _idShortPath, null, null, CancellationToken.None);
96+
var result = await _sut.GetSubmodelElementAsync(encodedId, _idShortPath, CancellationToken.None, Level.deep, Extent.withBlobValue);
9897

9998
var okResult = Assert.IsType<OkObjectResult>(result.Result);
10099
var json = Assert.IsType<JsonObject>(okResult.Value);
@@ -108,10 +107,10 @@ public async Task GetSubmodelElementAsync_WithLevelAndExtent_PassesThemToHandler
108107
_handler.GetSubmodelElement(Arg.Any<GetSubmodelElementRequest>(), Arg.Any<CancellationToken>())
109108
.Returns(_expectedElement);
110109

111-
await _sut.GetSubmodelElementAsync(encodedId, _idShortPath, Level.deep, Extent.withBlobValue, CancellationToken.None);
110+
await _sut.GetSubmodelElementAsync(encodedId, _idShortPath, CancellationToken.None, Level.deep, Extent.withBlobValue);
112111

113112
await _handler.Received(1).GetSubmodelElement(
114-
Arg.Is<GetSubmodelElementRequest>(r => r.level == Level.deep && r.extent == Extent.withBlobValue),
113+
Arg.Is<GetSubmodelElementRequest>(r => r.Level == Level.deep && r.Extent == Extent.withBlobValue),
115114
Arg.Any<CancellationToken>());
116115
}
117116

@@ -142,7 +141,12 @@ public async Task GetAllSubmodelsAsync_PassesQueryParamsToHandler()
142141
var expectedDto = new SubmodelsDto { PagingMetaData = new AAS.TwinEngine.DataEngine.Api.Shared.PagingMetaDataDto(), Result = [] };
143142
_handler.GetAllSubmodels(Arg.Any<GetAllSubmodelsRequest>(), Arg.Any<CancellationToken>())
144143
.Returns(expectedDto);
145-
var request = new GetAllSubmodelsRequest { SemanticId = SemanticId, IdShort = IdShort, Limit = Limit };
144+
var request = new GetAllSubmodelsRequest
145+
{
146+
SemanticId = SemanticId,
147+
IdShort = IdShort,
148+
Limit = Limit
149+
};
146150

147151
await _sut.GetAllSubmodelsAsync(SemanticId, IdShort, Limit, null, CancellationToken.None);
148152

source/AAS.TwinEngine.DataEngine/Api/SubmodelRepository/Requests/GetAllSubmodelsRequest.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
11
namespace AAS.TwinEngine.DataEngine.Api.SubmodelRepository.Requests;
22

3-
public record GetAllSubmodelsRequest(string? SemanticId, string? IdShort, int? Limit, string? Cursor, Level Level, Extent Extent);
3+
public record GetAllSubmodelsRequest
4+
{
5+
public string? SemanticId { get; set; }
6+
7+
public string? IdShort { get; set; }
8+
9+
public int? Limit { get; set; }
10+
11+
public string? Cursor { get; set; }
12+
13+
public Level? Level { get; set; }
14+
15+
public Extent? Extent { get; set; }
16+
}
417

518
public enum Level
619
{
@@ -12,4 +25,4 @@ public enum Extent
1225
{
1326
withBlobValue,
1427
withoutBlobValue
15-
}
28+
}

source/AAS.TwinEngine.DataEngine/Api/SubmodelRepository/SubmodelRepositoryController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public async Task<ActionResult<SubmodelsDto>> GetAllSubmodelsAsync(
5656
{
5757
logger.LogInformation("Get All Submodels");
5858

59-
var request = new GetAllSubmodelsRequest(semanticId, idShort, limit, cursor, level, extent);
59+
var request = new GetAllSubmodelsRequest{SemanticId = semanticId, IdShort = idShort, Limit = limit, Cursor = cursor, Level = level, Extent = extent};
6060

6161
var response = await submodelRepositoryHandler
6262
.GetAllSubmodels(request, cancellationToken)

0 commit comments

Comments
 (0)