Exemple #1
0
        public void Setup()
        {
            // Create a reference loop
            _person1 = new Person
            {
                Id         = 1,
                RenameName = "ManagerBob",
            };
            _person2 = new Person()
            {
                Id                   = 2,
                RenameName           = "Joe",
                ReferenceLoopManager = _person1,
                DefaultAddress       = new Address()
                {
                    PrivateGetter   = "3000 Wildwood Court",
                    City            = "Saline",
                    State           = State.MI,
                    DefaultValue    = 0,
                    DefaultNullable = null,
                    DefaultClass    = null
                }
            };
            // _person1.ReferenceLoopManager = _person1;
            var data = new Resource <Person>(_person2)
            {
                Type = "person",
                Id   = "1"
            };

            // Create an envelope
            _envelope = new ResourceEnvelope <Person>(data);
            _envelope.Links["self"]    = "person/1";
            _envelope.Meta["released"] = "2019-03-05";
        }
Exemple #2
0
        /// <summary>
        /// Wrap a single resource into a JSON:API envelope
        /// </summary>
        /// <typeparam name="T">Resource type</typeparam>
        /// <param name="entity">Entity being wrapped</param>
        /// <returns>The resource envelope.</returns>
        public ResourceEnvelope <T> Wrap <T>(T entity) where T : class
        {
            var policy   = GetOrCreatePolicy(typeof(T));
            var envelope = new ResourceEnvelope <T>(ApplyPolicy(entity, policy));

            return(envelope);
        }
Exemple #3
0
        private async Task LoadResourceEnvelopeAsync()
        {
            if (!isInitiated)
            {
                resourceEnvelope = await masterRepository.GetAsync <ResourceEnvelope>(ResourceEnvelope.IdFormat(new MasterDocument.IdKey()));

                isInitiated = true;
            }
        }
Exemple #4
0
        public void Resource_NewResourceEnvelope_IdAndTypeNull()
        {
            Person p = _person2;
            ResourceEnvelope <Person> rep = new ResourceEnvelope <Person>(p);
            Resource <Person>         rp  = rep.Data;

            Assert.IsNull(rp.Type);
            Assert.IsNull(rp.Id);
        }
Exemple #5
0
        public void DeserializeObject_MinimalObject_TypeIdExpected()
        {
            // Arrange, Act, Assert
            var test = _minimalObjectDoc;
            ResourceEnvelope <Attributes> result = JsonConvert.DeserializeObject <ResourceEnvelope <Attributes> >(test);

            Assert.That(result, Is.Not.Null);
            Assert.That(result.Data, Is.Not.Null);
            Assert.That(result.Data.Id, Is.EqualTo("1"));
            Assert.That(result.Data.Type, Is.EqualTo("person"));
        }
Exemple #6
0
        public void DeserializeObject_MinimalAttributeDocument_AttributesFound()
        {
            // Arrange, Act, Assert
            var test = _minimalAttributeDoc;
            ResourceEnvelope <Attributes> result = JsonConvert.DeserializeObject <ResourceEnvelope <Attributes> >(test);

            Assert.That(result, Is.Not.Null);
            Assert.That(result.Data, Is.Not.Null);
            Assert.That(result.Data.Attributes, Is.Not.Null);
            Assert.That(result.Data.Attributes["firstname"], Is.EqualTo("Bob"));
        }
Exemple #7
0
 private void LoadResources()
 {
     if (!isInitiated)
     {
         using (var reader = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream(EmbeddedResourceName)))
         {
             resourceEnvelope = reader.ReadToEnd().ToObject <ResourceEnvelope>();
         }
         isInitiated = true;
     }
 }
Exemple #8
0
        public void DeserializeObject_FullDocument_NonNullDataLinksMeta()
        {
            // Arrange, Act, Assert
            var test = _fullDoc;
            ResourceEnvelope <Attributes> result = JsonConvert.DeserializeObject <ResourceEnvelope <Attributes> >(test);

            Assert.That(result, Is.Not.Null);
            Assert.That(result.Data, Is.Not.Null);
            Assert.That(result.Links, Is.Not.Null);
            Assert.That(result.Links["self"], Is.EqualTo("person/1"));
            Assert.That(result.Meta, Is.Not.Null);
            Assert.That(result.Meta["released"], Is.EqualTo("2019-03-05"));
        }
Exemple #9
0
        private string GetValue(ResourceEnvelope resourceEnvelope, int id, string culture)
        {
            if (RouteBinding?.Resources?.Count > 0)
            {
                var value = GetValue(RouteBinding.Resources, id, culture);
                if (!value.IsNullOrEmpty())
                {
                    return(value);
                }
            }

            return(GetValue(resourceEnvelope.Resources, id, culture));
        }
Exemple #10
0
        public async Task <IActionResult> PostResource([FromBody] Api.Resource model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var resourceEnvelope = new ResourceEnvelope
            {
                Id = ResourceEnvelope.IdFormat(new MasterDocument.IdKey()),
                SupportedCultures = model.SupportedCultures,
                Names             = model.Names,
                Resources         = model.Resources,
            };

            await masterService.SaveAsync(resourceEnvelope);

            return(NoContent());
        }