From 393c73c95febe62b7549dc0abd59a420f4e724ad Mon Sep 17 00:00:00 2001 From: Kevin BEAUGRAND <9513635+kbeaugrand@users.noreply.github.com> Date: Fri, 28 Oct 2022 13:26:09 +0200 Subject: [PATCH] Fix #1472 - Remove DeviceModelCommandManager class (#1475) --- .../Factories/TableClientFactory.cs | 3 - .../Managers/DeviceModelCommandsManager.cs | 74 ---------- .../Managers/IDeviceModelCommandsManager.cs | 15 -- src/AzureIoTHub.Portal.Server/Startup.cs | 3 - .../DeviceModelCommandsManagerTests.cs | 135 ------------------ .../Server/Mappers/DeviceTwinMapperTests.cs | 2 - 6 files changed, 232 deletions(-) delete mode 100644 src/AzureIoTHub.Portal.Server/Managers/DeviceModelCommandsManager.cs delete mode 100644 src/AzureIoTHub.Portal.Server/Managers/IDeviceModelCommandsManager.cs delete mode 100644 src/AzureIoTHub.Portal.Tests.Unit/Server/Managers/DeviceModelCommandsManagerTests.cs diff --git a/src/AzureIoTHub.Portal.Infrastructure/Factories/TableClientFactory.cs b/src/AzureIoTHub.Portal.Infrastructure/Factories/TableClientFactory.cs index 741958475..0a0d7ac7e 100644 --- a/src/AzureIoTHub.Portal.Infrastructure/Factories/TableClientFactory.cs +++ b/src/AzureIoTHub.Portal.Infrastructure/Factories/TableClientFactory.cs @@ -3,11 +3,8 @@ namespace AzureIoTHub.Portal.Infrastructure.Factories { - using System; - using Azure; using Azure.Data.Tables; using AzureIoTHub.Portal.Domain; - using AzureIoTHub.Portal.Domain.Exceptions; public class TableClientFactory : ITableClientFactory { diff --git a/src/AzureIoTHub.Portal.Server/Managers/DeviceModelCommandsManager.cs b/src/AzureIoTHub.Portal.Server/Managers/DeviceModelCommandsManager.cs deleted file mode 100644 index 124e9c4f3..000000000 --- a/src/AzureIoTHub.Portal.Server/Managers/DeviceModelCommandsManager.cs +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright (c) CGI France. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace AzureIoTHub.Portal.Server.Managers -{ - using System.Collections.Generic; - using System.Collections.ObjectModel; - using System.Linq; - using Azure.Data.Tables; - using AzureIoTHub.Portal.Domain; - using AzureIoTHub.Portal.Models.v10.LoRaWAN; - using AzureIoTHub.Portal.Server.Mappers; - - public class DeviceModelCommandsManager : IDeviceModelCommandsManager - { - private readonly ITableClientFactory tableClientFactory; - private readonly IDeviceModelCommandMapper deviceModelCommandMapper; - - public DeviceModelCommandsManager(ITableClientFactory tableClientFactory, IDeviceModelCommandMapper deviceModelCommandMapper) - { - this.tableClientFactory = tableClientFactory; - this.deviceModelCommandMapper = deviceModelCommandMapper; - } - - /// - /// Retrieve all the commands from a devicemodel. - /// - /// the model type of the device. - /// Corresponding list of commands or an empty list if it doesn't have any command. - public ReadOnlyCollection RetrieveCommands(string deviceModel) - { - var commands = new List(); - - if (deviceModel == null) - { - return commands.AsReadOnly(); - } - - var queryResultsFilter = this.tableClientFactory - .GetDeviceCommands() - .Query(filter: $"PartitionKey eq '{deviceModel}'"); - - foreach (var qEntity in queryResultsFilter) - { - commands.Add( - new Command() - { - CommandId = qEntity.RowKey, - Frame = qEntity[nameof(Command.Frame)].ToString() - }); - } - - return commands.AsReadOnly(); - } - - public ReadOnlyCollection RetrieveDeviceModelCommands(string deviceModel) - { - var commands = new List(); - - if (deviceModel == null) - { - return commands.AsReadOnly(); - } - - var queryResultsFilter = this.tableClientFactory - .GetDeviceCommands() - .Query(filter: $"PartitionKey eq '{deviceModel}'"); - - commands.AddRange(queryResultsFilter.Select(this.deviceModelCommandMapper.GetDeviceModelCommand)); - - return commands.AsReadOnly(); - } - } -} diff --git a/src/AzureIoTHub.Portal.Server/Managers/IDeviceModelCommandsManager.cs b/src/AzureIoTHub.Portal.Server/Managers/IDeviceModelCommandsManager.cs deleted file mode 100644 index c436977da..000000000 --- a/src/AzureIoTHub.Portal.Server/Managers/IDeviceModelCommandsManager.cs +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) CGI France. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace AzureIoTHub.Portal.Server.Managers -{ - using System.Collections.ObjectModel; - using AzureIoTHub.Portal.Models.v10.LoRaWAN; - - public interface IDeviceModelCommandsManager - { - ReadOnlyCollection RetrieveCommands(string deviceModel); - - ReadOnlyCollection RetrieveDeviceModelCommands(string deviceModel); - } -} diff --git a/src/AzureIoTHub.Portal.Server/Startup.cs b/src/AzureIoTHub.Portal.Server/Startup.cs index 90bb698a5..de8e6d7f5 100644 --- a/src/AzureIoTHub.Portal.Server/Startup.cs +++ b/src/AzureIoTHub.Portal.Server/Startup.cs @@ -16,7 +16,6 @@ namespace AzureIoTHub.Portal.Server using Hellang.Middleware.ProblemDetails.Mvc; using Identity; using Infrastructure; - using Infrastructure.Factories; using Infrastructure.Repositories; using Infrastructure.Seeds; using Jobs; @@ -117,11 +116,9 @@ public void ConfigureServices(IServiceCollection services) _ = services.AddTransient(); _ = services.AddTransient(_ => new BlobServiceClient(configuration.StorageAccountConnectionString)); - _ = services.AddTransient(_ => new TableClientFactory(configuration.StorageAccountConnectionString)); _ = services.AddTransient(); _ = services.AddTransient(); _ = services.AddTransient(); - _ = services.AddTransient(); _ = services.AddTransient(); _ = services.AddTransient(); diff --git a/src/AzureIoTHub.Portal.Tests.Unit/Server/Managers/DeviceModelCommandsManagerTests.cs b/src/AzureIoTHub.Portal.Tests.Unit/Server/Managers/DeviceModelCommandsManagerTests.cs deleted file mode 100644 index 7480d9f67..000000000 --- a/src/AzureIoTHub.Portal.Tests.Unit/Server/Managers/DeviceModelCommandsManagerTests.cs +++ /dev/null @@ -1,135 +0,0 @@ -// Copyright (c) CGI France. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -namespace AzureIoTHub.Portal.Tests.Unit.Server.Managers -{ - using System.Collections.Generic; - using System.Threading; - using Azure; - using Azure.Data.Tables; - using AzureIoTHub.Portal.Domain; - using AzureIoTHub.Portal.Server.Managers; - using AzureIoTHub.Portal.Server.Mappers; - using Models.v10.LoRaWAN; - using Moq; - using NUnit.Framework; - - [TestFixture] - public class DeviceModelCommandsManagerTests - { - private MockRepository mockRepository; - - private Mock mockTableClientFactory; - - [SetUp] - public void SetUp() - { - this.mockRepository = new MockRepository(MockBehavior.Strict); - - this.mockTableClientFactory = this.mockRepository.Create(); - } - - private DeviceModelCommandsManager CreateManager() - { - return new DeviceModelCommandsManager( - this.mockTableClientFactory.Object, - new DeviceModelCommandMapper()); - } - - [Test] - public void RetrieveCommandsStateUnderTestExpectedBehavior() - { - // Arrange - var manager = CreateManager(); - const string deviceModel = "aaa"; - var resultReturned = false; - - var entityMock = new TableEntity(deviceModel, "bbbb"); - _ = entityMock.TryAdd(nameof(Command.Frame), "ADETRDTHDFG"); - - var mockTable = this.mockRepository.Create(); - var mockTableResponse = this.mockRepository.Create>(); - var mockEnumerator = this.mockRepository.Create>(); - _ = mockEnumerator.Setup(x => x.Dispose()).Callback(() => { }); - _ = mockEnumerator.Setup(x => x.MoveNext()).Returns(() => - { - resultReturned = !resultReturned; - return resultReturned; - }); - - _ = mockEnumerator.Setup(x => x.Current).Returns(entityMock); - - _ = mockTableResponse.Setup(x => x.GetEnumerator()) - .Returns(mockEnumerator.Object); - - _ = mockTable.Setup(x => x.Query(It.Is(x => x.StartsWith($"PartitionKey eq '{deviceModel}'")), - It.IsAny(), - It.IsAny>(), - It.IsAny())) - .Returns(mockTableResponse.Object); - - _ = this.mockTableClientFactory.Setup(x => x.GetDeviceCommands()) - .Returns(mockTable.Object); - - // Act - var result = manager.RetrieveCommands(deviceModel); - - // Assert - Assert.IsNotNull(result); - Assert.AreEqual(1, result.Count); - Assert.AreEqual("bbbb", result[0].CommandId); - Assert.AreEqual("ADETRDTHDFG", result[0].Frame); - - this.mockRepository.VerifyAll(); - } - - [Test] - public void RetrieveDeviceModelCommandsStateUnderTestExpectedBehavior() - { - // Arrange - var manager = CreateManager(); - const string deviceModel = "aaa"; - var resultReturned = false; - - var entityMock = new TableEntity(deviceModel, "bbbb"); - _ = entityMock.TryAdd(nameof(DeviceModelCommandDto.Frame), "ADETRDTHDFG"); - _ = entityMock.TryAdd(nameof(DeviceModelCommandDto.Port), 125); - - var mockTable = this.mockRepository.Create(); - var mockTableResponse = this.mockRepository.Create>(); - var mockEnumerator = this.mockRepository.Create>(); - _ = mockEnumerator.Setup(x => x.Dispose()).Callback(() => { }); - _ = mockEnumerator.Setup(x => x.MoveNext()).Returns(() => - { - resultReturned = !resultReturned; - return resultReturned; - }); - - _ = mockEnumerator.Setup(x => x.Current).Returns(entityMock); - - _ = mockTableResponse.Setup(x => x.GetEnumerator()) - .Returns(mockEnumerator.Object); - - _ = mockTable.Setup(x => x.Query(It.Is(x => x.StartsWith($"PartitionKey eq '{deviceModel}'")), - It.IsAny(), - It.IsAny>(), - It.IsAny())) - .Returns(mockTableResponse.Object); - - _ = this.mockTableClientFactory.Setup(x => x.GetDeviceCommands()) - .Returns(mockTable.Object); - - // Act - var result = manager.RetrieveDeviceModelCommands(deviceModel); - - // Assert - Assert.IsNotNull(result); - Assert.AreEqual(1, result.Count); - Assert.AreEqual("bbbb", result[0].Name); - Assert.AreEqual(125, result[0].Port); - Assert.AreEqual("ADETRDTHDFG", result[0].Frame); - - this.mockRepository.VerifyAll(); - } - } -} diff --git a/src/AzureIoTHub.Portal.Tests.Unit/Server/Mappers/DeviceTwinMapperTests.cs b/src/AzureIoTHub.Portal.Tests.Unit/Server/Mappers/DeviceTwinMapperTests.cs index 8461ede11..aba4a59c1 100644 --- a/src/AzureIoTHub.Portal.Tests.Unit/Server/Mappers/DeviceTwinMapperTests.cs +++ b/src/AzureIoTHub.Portal.Tests.Unit/Server/Mappers/DeviceTwinMapperTests.cs @@ -21,7 +21,6 @@ public class DeviceTwinMapperTests private MockRepository mockRepository; private Mock mockDeviceModelImageManager; - private Mock mockDeviceModelCommandsManager; private Mock mockTableClientFactory; [SetUp] @@ -30,7 +29,6 @@ public void SetUp() this.mockRepository = new MockRepository(MockBehavior.Strict); this.mockDeviceModelImageManager = this.mockRepository.Create(); - this.mockDeviceModelCommandsManager = this.mockRepository.Create(); this.mockTableClientFactory = this.mockRepository.Create(); }