public void MapChangeOfChargesMessageToCharge_WhenMessageWithProperties_ThenReturnsChargeWithPropertiesSet() { // Arrange var changeOfChargesMessage = GetValidChangeOfChargesMessage(); #pragma warning disable CS8602 // Dereference of a possibly null reference. changeOfChargesMessage.MktActivityRecord.ValidityEndDate = Instant.MaxValue; #pragma warning restore CS8602 // Dereference of a possibly null reference. var chargeType = new ChargeType { Code = changeOfChargesMessage.Type, Id = 1, Name = "Name" }; var chargeTypeOwnerMRid = new Ingestion.Infrastructure.ChangeOfCharges.Context.Model.MarketParticipant { Id = 1, MRid = changeOfChargesMessage.ChargeTypeOwnerMRid }; var resolutionType = new ResolutionType { Id = 1, Name = changeOfChargesMessage.Period?.Resolution }; var vatPayerType = new VatPayerType { Id = 1, Name = changeOfChargesMessage.MktActivityRecord?.ChargeType?.VATPayer }; // When var result = ChangeOfChargesMapper.MapChangeOfChargesMessageToCharge(changeOfChargesMessage, chargeType, chargeTypeOwnerMRid, resolutionType, vatPayerType); var properties = result.GetType().GetProperties(); foreach (var property in properties) { Assert.NotNull(property.GetValue(result)); } }
public static Charge MapChangeOfChargesMessageToCharge( ChangeOfChargesMessage chargeMessage, ChargeType chargeType, MarketParticipant chargeTypeOwnerMRid, ResolutionType resolutionType, VatPayerType vatPayerType) { if (string.IsNullOrWhiteSpace(chargeMessage.ChargeTypeMRid)) { throw new ArgumentException($"{nameof(chargeMessage.ChargeTypeMRid)} must have value"); } if (string.IsNullOrWhiteSpace(chargeMessage.CorrelationId)) { throw new ArgumentException($"{nameof(chargeMessage.CorrelationId)} must have value"); } if (string.IsNullOrWhiteSpace(chargeMessage.LastUpdatedBy)) { throw new ArgumentException($"{nameof(chargeMessage.LastUpdatedBy)} must have value"); } if (chargeMessage.MktActivityRecord?.ChargeType == null) { throw new ArgumentException($"{nameof(chargeMessage.MktActivityRecord.ChargeType)} can't be null"); } if (string.IsNullOrWhiteSpace(chargeMessage.MktActivityRecord.ChargeType.Name)) { throw new ArgumentException($"{nameof(chargeMessage.MktActivityRecord.ChargeType.Name)} must have value"); } if (string.IsNullOrWhiteSpace(chargeMessage.MktActivityRecord.ChargeType.Description)) { throw new ArgumentException($"{nameof(chargeMessage.MktActivityRecord.ChargeType.Description)} must have value"); } if (chargeMessage.Period == null) { throw new ArgumentException($"{nameof(chargeMessage.Period)} can't be null"); } if (chargeMessage.Period.Points == null) { throw new ArgumentException($"{nameof(chargeMessage.Period.Points)} can't be null"); } var charge = new Charge { ChargePrices = new List <ChargePrice>(), ChargeType = chargeType, ChargeTypeOwner = chargeTypeOwnerMRid, Description = chargeMessage.MktActivityRecord.ChargeType.Description, LastUpdatedBy = chargeMessage.LastUpdatedBy, LastUpdatedByCorrelationId = chargeMessage.CorrelationId, LastUpdatedByTransactionId = chargeMessage.Transaction.MRID, Name = chargeMessage.MktActivityRecord.ChargeType.Name, RequestDateTime = chargeMessage.RequestDate.ToUnixTimeTicks(), ResolutionType = resolutionType, StartDate = chargeMessage.MktActivityRecord.ValidityStartDate.ToUnixTimeTicks(), EndDate = chargeMessage.MktActivityRecord.ValidityEndDate?.ToUnixTimeTicks(), Status = (int)chargeMessage.MktActivityRecord.Status, TaxIndicator = chargeMessage.MktActivityRecord.ChargeType.TaxIndicator, TransparentInvoicing = chargeMessage.MktActivityRecord.ChargeType.TransparentInvoicing, VatPayer = vatPayerType, MRid = chargeMessage.ChargeTypeMRid, Currency = "DKK", }; foreach (var point in chargeMessage.Period.Points) { var newChargePrice = new ChargePrice { Time = point.Time.ToUnixTimeTicks(), Amount = point.PriceAmount, LastUpdatedByCorrelationId = chargeMessage.CorrelationId, LastUpdatedByTransactionId = chargeMessage.Transaction.MRID, LastUpdatedBy = chargeMessage.LastUpdatedBy, RequestDateTime = chargeMessage.RequestDate.ToUnixTimeTicks(), }; charge.ChargePrices.Add(newChargePrice); } return(charge); }