Beispiel #1
0
        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);
        }