using NSubstitute; using NUnit.Framework; using Plugin.Domain.Edi; using Plugin.Domain.Messages; using Plugin.Domain.Repositories; using System.Collections.Generic; using System.Threading.Tasks; namespace Plugin.Tests.Domain { [TestFixture] public class EdiOrderServiceTests { private readonly CommonEdiProvider _provider1 = new CommonEdiProvider(TypeEdiProvider.TransusXml, "https://webconnect.transus.com/Exchange.asmx", "User 1"); private readonly CommonEdiProvider _provider2 = new CommonEdiProvider(TypeEdiProvider.TransusXml, "https://webconnect.transus.com/Exchange.asmx", "User 2"); private readonly OrderMessage _orderMessage1 = new OrderMessage() { MessageReference = "1" }; private readonly OrderMessage _orderMessage2 = new OrderMessage() { MessageReference = "2" }; private readonly OrderMessage _orderMessage3 = new OrderMessage() { MessageReference = "3" }; private IEdiProviderRepository _ediProviderRepository; private IOrderMessageRepository _orderMessageRepository; private IEdiOrderRepository _ediOrderRepository; [SetUp] public void SetUpTests() { _ediProviderRepository = Substitute.For<IEdiProviderRepository>(); _orderMessageRepository = Substitute.For<IOrderMessageRepository>(); _ediOrderRepository = Substitute.For<IEdiOrderRepository>(); _ediProviderRepository.GetEdiProvidersByType(TypeEdiProvider.TransusXml).Returns(new List<CommonEdiProvider> { _provider1, _provider2 }); _orderMessageRepository.GetOrderMessages(_provider1).Returns(new List<OrderMessage> { _orderMessage1, _orderMessage2 }); _orderMessageRepository.GetOrderMessages(_provider2).Returns(new List<OrderMessage> { _orderMessage3 }); } [Test] public async Task GetTransusEdiOrdersFromProvidersTest() { // arrange var ediOrderService = new EdiOrderService(_ediProviderRepository, _orderMessageRepository, _ediOrderRepository); // act await ediOrderService.GetTransusEdiOrdersFromProviders(); // assert await _ediProviderRepository.Received().GetEdiProvidersByType(TypeEdiProvider.TransusXml); await _orderMessageRepository.Received().GetOrderMessages(_provider1); await _orderMessageRepository.Received().GetOrderMessages(_provider2); var arg = Arg.Is<List<OrderMessage>>(l => l[0] == _orderMessage1 && l[1] == _orderMessage2 && l[2] == _orderMessage3); await _ediOrderRepository.Received().CreateAndSaveEdiOrdersFromOrderMessages(arg); } } }
287500cookie-checkC# NUnit Unit Test Example