public Task <Result <CounterpartyInfo> > Update(CounterpartyEditRequest changedCounterpartyInfo, int counterpartyId, string languageCode) { return(GetCounterparty(counterpartyId) .Bind(UpdateCounterparty)); async Task <Result <CounterpartyInfo> > UpdateCounterparty(Counterparty counterpartyToUpdate) { var(_, isFailure, error) = CounterpartyValidator.Validate(changedCounterpartyInfo); if (isFailure) { return(Result.Failure <CounterpartyInfo>(error)); } counterpartyToUpdate.Address = changedCounterpartyInfo.Address; counterpartyToUpdate.City = changedCounterpartyInfo.City; counterpartyToUpdate.CountryCode = changedCounterpartyInfo.CountryCode; counterpartyToUpdate.Fax = changedCounterpartyInfo.Fax; counterpartyToUpdate.Name = changedCounterpartyInfo.Name; counterpartyToUpdate.Phone = changedCounterpartyInfo.Phone; counterpartyToUpdate.Website = changedCounterpartyInfo.Website; counterpartyToUpdate.PostalCode = changedCounterpartyInfo.PostalCode; counterpartyToUpdate.PreferredCurrency = changedCounterpartyInfo.PreferredCurrency; counterpartyToUpdate.PreferredPaymentMethod = changedCounterpartyInfo.PreferredPaymentMethod; counterpartyToUpdate.Updated = _dateTimeProvider.UtcNow(); counterpartyToUpdate.VatNumber = changedCounterpartyInfo.VatNumber; counterpartyToUpdate.BillingEmail = changedCounterpartyInfo.BillingEmail; _context.Counterparties.Update(counterpartyToUpdate); await _context.SaveChangesAsync(); return(await Get(counterpartyId, languageCode)); } }
public void OverlapsRangeFails() { // Assert var start = new DateTime(1999, 1, 1); var finish = new DateTime(2020, 12, 31); var validity = new DateRange(start, finish); var system = new MDM.SourceSystem { Name = "Test" }; var counterpartyMapping = new PartyRoleMapping { System = system, MappingValue = "1", Validity = validity }; var list = new List <PartyRoleMapping> { counterpartyMapping }; var repository = new Mock <IRepository>(); repository.Setup(x => x.Queryable <PartyRoleMapping>()).Returns(list.AsQueryable()); var systemList = new List <MDM.SourceSystem>(); var systemRepository = new Mock <IRepository>(); systemRepository.Setup(x => x.Queryable <MDM.SourceSystem>()).Returns(systemList.AsQueryable()); var overlapsRangeIdentifier = new EnergyTrading.Mdm.Contracts.MdmId { SystemName = "Test", Identifier = "1", StartDate = start.AddHours(10), EndDate = start.AddHours(15) }; var identifierValidator = new NexusIdValidator <PartyRoleMapping>(repository.Object); var validatorEngine = new Mock <IValidatorEngine>(); validatorEngine.Setup(x => x.IsValid(It.IsAny <EnergyTrading.Mdm.Contracts.MdmId>(), It.IsAny <IList <IRule> >())) .Returns((EnergyTrading.Mdm.Contracts.MdmId x, IList <IRule> y) => identifierValidator.IsValid(x, y)); var validator = new CounterpartyValidator(validatorEngine.Object, repository.Object); var counterparty = new Counterparty { Identifiers = new EnergyTrading.Mdm.Contracts.MdmIdList { overlapsRangeIdentifier } }; // Act var violations = new List <IRule>(); var result = validator.IsValid(counterparty, violations); // Assert Assert.IsFalse(result, "Validator succeeded"); }
public void ValidCounterpartyPasses() { // Assert var start = new DateTime(1999, 1, 1); var system = new MDM.SourceSystem { Name = "Test" }; var systemList = new List <MDM.SourceSystem> { system }; var systemRepository = new Mock <IRepository>(); var repository = new StubValidatorRepository(); systemRepository.Setup(x => x.Queryable <MDM.SourceSystem>()).Returns(systemList.AsQueryable()); var identifier = new EnergyTrading.Mdm.Contracts.MdmId { SystemName = "Test", Identifier = "1", StartDate = start.AddHours(-10), EndDate = start.AddHours(-5) }; var validatorEngine = new Mock <IValidatorEngine>(); var validator = new CounterpartyValidator(validatorEngine.Object, repository); var counterparty = new Counterparty { Details = new EnergyTrading.MDM.Contracts.Sample.CounterpartyDetails { Name = "Test" }, Identifiers = new EnergyTrading.Mdm.Contracts.MdmIdList { identifier } }; this.AddRelatedEntities(counterparty); // Act var violations = new List <IRule>(); var result = validator.IsValid(counterparty, violations); // Assert Assert.IsTrue(result, "Validator failed"); Assert.AreEqual(0, violations.Count, "Violation count differs"); }
public void BadSystemFails() { // Assert var start = new DateTime(1999, 1, 1); var finish = new DateTime(2020, 12, 31); var validity = new DateRange(start, finish); var system = new MDM.SourceSystem { Name = "Test" }; var counterpartyMapping = new PartyRoleMapping { System = system, MappingValue = "1", Validity = validity }; var list = new List<PartyRoleMapping> { counterpartyMapping }; var repository = new Mock<IRepository>(); repository.Setup(x => x.Queryable<PartyRoleMapping>()).Returns(list.AsQueryable()); var badSystemIdentifier = new EnergyTrading.Mdm.Contracts.MdmId { SystemName = "Jim", Identifier = "1", StartDate = start.AddHours(-10), EndDate = start.AddHours(-5) }; var identifierValidator = new NexusIdValidator<PartyRoleMapping>(repository.Object); var validatorEngine = new Mock<IValidatorEngine>(); validatorEngine.Setup(x => x.IsValid(It.IsAny<EnergyTrading.Mdm.Contracts.MdmId>(), It.IsAny<IList<IRule>>())) .Returns((EnergyTrading.Mdm.Contracts.MdmId x, IList<IRule> y) => identifierValidator.IsValid(x, y)); var validator = new CounterpartyValidator(validatorEngine.Object, repository.Object); var counterparty = new Counterparty { Identifiers = new EnergyTrading.Mdm.Contracts.MdmIdList { badSystemIdentifier } }; // Act var violations = new List<IRule>(); var result = validator.IsValid(counterparty, violations); // Assert Assert.IsFalse(result, "Validator succeeded"); }
public void ValidCounterpartyPasses() { // Assert var start = new DateTime(1999, 1, 1); var system = new MDM.SourceSystem { Name = "Test" }; var systemList = new List<MDM.SourceSystem> { system }; var systemRepository = new Mock<IRepository>(); var repository = new StubValidatorRepository(); systemRepository.Setup(x => x.Queryable<MDM.SourceSystem>()).Returns(systemList.AsQueryable()); var identifier = new EnergyTrading.Mdm.Contracts.MdmId { SystemName = "Test", Identifier = "1", StartDate = start.AddHours(-10), EndDate = start.AddHours(-5) }; var validatorEngine = new Mock<IValidatorEngine>(); var validator = new CounterpartyValidator(validatorEngine.Object, repository); var counterparty = new Counterparty { Details = new EnergyTrading.MDM.Contracts.Sample.CounterpartyDetails{Name = "Test"}, Identifiers = new EnergyTrading.Mdm.Contracts.MdmIdList { identifier } }; this.AddRelatedEntities(counterparty); // Act var violations = new List<IRule>(); var result = validator.IsValid(counterparty, violations); // Assert Assert.IsTrue(result, "Validator failed"); Assert.AreEqual(0, violations.Count, "Violation count differs"); }