public void WHEN_Convert_GIVEN_Valid_Dto_THEN_Get_Valid_Result_With_All_Links() { var uniqueIdFactory = SampleObjectsIdFactory.Instance; var fieldBoundaryDto = new FieldBoundaryDto { Id = 123, FieldUid = Guid.NewGuid(), CropYear = DateTime.Now.Year }; var converter = new FieldBoundaryDtoConverter(uniqueIdFactory); var envelope = converter.Convert(fieldBoundaryDto); Assert.Equal(fieldBoundaryDto.Id.ToString(), envelope.Object.Id.UniqueIds.First().Id); var timeScope = envelope.Object.TimeScopes.Single(); Assert.Equal(new DateTime(DateTime.Now.Year, 1, 1), timeScope.TimeStamp1); Assert.Equal(new DateTime(DateTime.Now.Year, 12, 31), timeScope.TimeStamp2); var selfLink = envelope.Links.Single(l => l.Rel == Relationships.Self); Assert.Equal($"/FieldBoundaries/{uniqueIdFactory.UniqueIdSource}/{fieldBoundaryDto.Id}", selfLink.Link); Assert.Equal(selfLink.Id.ReferenceId, envelope.Object.Id.ReferenceId); var fieldsLink = envelope.Links.Single(l => l.Rel == typeof(Field).ObjectRel()); Assert.Equal($"/Fields/{uniqueIdFactory.UniqueIdSource}/{fieldBoundaryDto.FieldUid}", fieldsLink.Link); }
public ModelEnvelope <FieldBoundary> Convert(FieldBoundaryDto fieldBoundaryDto) { var fieldBoundary = new FieldBoundary { TimeScopes = new List <TimeScope>() { new TimeScope { TimeStamp1 = new DateTime(fieldBoundaryDto.CropYear, 1, 1), TimeStamp2 = new DateTime(fieldBoundaryDto.CropYear, 12, 31) } }, Description = $"{fieldBoundaryDto.CropYear} Boundary" }; var fieldBoundaryUniqueId = fieldBoundary.Id; var boundaryUniqueId = _uniqueIdFactory.CreateInt(fieldBoundaryDto.Id); fieldBoundaryUniqueId.UniqueIds.Add(boundaryUniqueId); var selfLink = new ReferenceLink { Id = fieldBoundaryUniqueId, Rel = Relationships.Self, Link = $"/FieldBoundaries/{boundaryUniqueId.Source}/{boundaryUniqueId.Id}" }; var fieldUniqueId = _uniqueIdFactory.CreateGuid(fieldBoundaryDto.FieldUid); var fieldCompoundId = fieldUniqueId.ToCompoundIdentifier(); fieldBoundary.FieldId = fieldCompoundId.ReferenceId; var fieldLink = new ReferenceLink { Id = fieldCompoundId, Rel = typeof(Field).ObjectRel(), Link = $"/Fields/{fieldUniqueId.Source}/{fieldUniqueId.Id}" }; // NOTE: Skipped SpatialData to not introduce Spatial Dependencies in conversion. var fieldBoundaryEnvelope = new ModelEnvelope <FieldBoundary>(fieldBoundary); fieldBoundaryEnvelope.Links.Add(selfLink); fieldBoundaryEnvelope.Links.Add(fieldLink); return(fieldBoundaryEnvelope); }