Skip to content

Commit 4f592bd

Browse files
committed
fix: unit tests various
1 parent f3d5e45 commit 4f592bd

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

src/JsonApiDotNetCore/Serialization/Common/BaseDocumentParser.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,7 @@ protected IIdentifiable SetRelationships(IIdentifiable entity, Dictionary<string
9696
var entityProperties = entity.GetType().GetProperties();
9797
foreach (var attr in relationshipAttributes)
9898
{
99-
relationshipsValues.TryGetValue(attr.PublicRelationshipName, out RelationshipData relationshipData);
100-
101-
if (relationshipData == null || !relationshipData.HasData)
99+
if (!relationshipsValues.TryGetValue(attr.PublicRelationshipName, out RelationshipData relationshipData) || !relationshipData.IsPopulated)
102100
continue;
103101

104102
if (attr is HasOneAttribute hasOne)
@@ -120,7 +118,6 @@ private JToken LoadJToken(string body)
120118
return jToken;
121119
}
122120

123-
124121
/// <summary>
125122
/// Creates an instance of the referenced type in <paramref name="data"/>
126123
/// and sets its attributes and relationships
@@ -227,15 +224,18 @@ private object SetHasManyRelationship(IIdentifiable entity,
227224
HasManyAttribute attr,
228225
RelationshipData relationshipData)
229226
{
230-
var relatedResources = relationshipData.ManyData.Select(rio =>
231-
{
232-
var relatedInstance = attr.DependentType.New<IIdentifiable>();
233-
relatedInstance.StringId = rio.Id;
234-
return relatedInstance;
235-
});
227+
if (relationshipData.Data != null)
228+
{ // if the relationship is set to null, no need to set the navigation property to null: this is the default value.
229+
var relatedResources = relationshipData.ManyData.Select(rio =>
230+
{
231+
var relatedInstance = attr.DependentType.New<IIdentifiable>();
232+
relatedInstance.StringId = rio.Id;
233+
return relatedInstance;
234+
});
235+
var convertedCollection = TypeHelper.ConvertCollection(relatedResources, attr.DependentType);
236+
attr.SetValue(entity, convertedCollection);
237+
}
236238

237-
var convertedCollection = TypeHelper.ConvertCollection(relatedResources, attr.DependentType);
238-
attr.SetValue(entity, convertedCollection);
239239
AfterProcessField(entity, attr, relationshipData);
240240

241241
return entity;

test/UnitTests/Serialization/Common/DocumentParserTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ public void DeserializeRelationships_EmptyRequiredOneToOnePrincipal_ThrowsFormat
270270
var body = JsonConvert.SerializeObject(content);
271271

272272
// act, assert
273-
Assert.ThrowsAny<FormatException>(() => _deserializer.Deserialize(body));
273+
Assert.Throws<FormatException>(() => _deserializer.Deserialize(body));
274274
}
275275

276276
[Fact]
@@ -316,7 +316,7 @@ public void DeserializeRelationships_EmptyOneToManyRequiredPrincipal_ThrowsForma
316316
var body = JsonConvert.SerializeObject(content);
317317

318318
// act, assert
319-
Assert.ThrowsAny<FormatException>(() => _deserializer.Deserialize(body));
319+
Assert.Throws<FormatException>(() => _deserializer.Deserialize(body));
320320
}
321321

322322
[Fact]

0 commit comments

Comments
 (0)