public async Task HandleDeleteDroid_WithNonExistantSerialNumber_ThrowsDroidNotFoundException() { // Arrange var droidHandler = new DroidHandler(_repoMock.Object, _repoArmMock.Object, _quoteMock.Object, _encryptionMock.Object); var deleteDroid = new DeleteDroid(_serialNumber); var armIdList = new List <ArmId> { Guid.NewGuid() }; _repoArmMock .Setup(repo => repo.DeleteAsync(armIdList, It.IsAny <object>())) .Returns(Task.FromResult(true)); var actions = DeleteArmListAction.CreateNew(armIdList, _repoArmMock.Object.DeleteAsync); _repoMock .Setup(repo => repo.DeleteAsync(_serialNumber, actions)) .Returns(Task.FromResult(false)); // Act var exception = await Record.ExceptionAsync( () => droidHandler.HandleAsync(deleteDroid)); // Assert exception.Should().BeOfType <DroidNotFoundException>(); }
public async Task HandleDeleteDroid_WithValidSerialNumber_DeletedCallsSuccessfully() { // Arrange var droidHandler = new DroidHandler(_repoMock.Object, _repoArmMock.Object, _quoteMock.Object, _encryptionMock.Object); var deleteDroid = new DeleteDroid(_serialNumber); var getDroidResult = Task.FromResult(_droidDto); _repoMock .Setup(repo => repo.GetBySerialNumberAsync(_serialNumber, Droid.AssertExists)) .Returns(getDroidResult); IReadOnlyCollection <IArmDto> arms = new List <ArmDto>(); _repoArmMock .Setup(repo => repo.GetDroidArmsAsync(_serialNumber)) .Returns(Task.FromResult(arms)); _repoArmMock .Setup(repo => repo.DeleteAsync(It.IsAny <List <ArmId> >(), It.IsAny <object>())) .Returns(Task.FromResult(true)); _repoMock .Setup(repo => repo.DeleteAsync(_serialNumber, It.IsAny <DeleteArmListAction>())) .Returns(Task.FromResult(true)); // Act await droidHandler.HandleAsync(deleteDroid); // Assert _repoMock.Verify((r) => r.DeleteAsync(_serialNumber, It.IsAny <DeleteArmListAction>()), Times.Once); }