Skip to content

Commit edbbd42

Browse files
committed
add test Can_Update_Many_To_Many_Through_Relationship_Link (failing)
1 parent 412ab89 commit edbbd42

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

test/JsonApiDotNetCoreExampleTests/Acceptance/ManyToManyTests.cs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,5 +176,50 @@ public async Task Can_Update_Many_To_Many()
176176
var persistedArticleTag = Assert.Single(persistedArticle.ArticleTags);
177177
Assert.Equal(tag.Id, persistedArticleTag.TagId);
178178
}
179+
180+
[Fact]
181+
public async Task Can_Update_Many_To_Many_Through_Relationship_Link()
182+
{
183+
// arrange
184+
var context = _fixture.GetService<AppDbContext>();
185+
var tag = _tagFaker.Generate();
186+
var article = _articleFaker.Generate();
187+
context.Tags.Add(tag);
188+
context.Articles.Add(article);
189+
await context.SaveChangesAsync();
190+
191+
var route = $"/api/v1/articles/{article.Id}/relationships/tags";
192+
var request = new HttpRequestMessage(new HttpMethod("PATCH"), route);
193+
var content = new
194+
{
195+
data = new [] {
196+
new {
197+
type = "tags",
198+
id = tag.StringId
199+
}
200+
}
201+
};
202+
203+
request.Content = new StringContent(JsonConvert.SerializeObject(content));
204+
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
205+
206+
// act
207+
var response = await _fixture.Client.SendAsync(request);
208+
209+
// assert
210+
var body = await response.Content.ReadAsStringAsync();
211+
Assert.True(HttpStatusCode.OK == response.StatusCode, $"{route} returned {response.StatusCode} status code with payload: {body}");
212+
213+
var articleResponse = _fixture.GetService<IJsonApiDeSerializer>().Deserialize<Article>(body);
214+
Assert.NotNull(articleResponse);
215+
216+
_fixture.ReloadDbContext();
217+
var persistedArticle = await _fixture.Context.Articles
218+
.Include(a => a.ArticleTags)
219+
.SingleAsync(a => a.Id == articleResponse.Id);
220+
221+
var persistedArticleTag = Assert.Single(persistedArticle.ArticleTags);
222+
Assert.Equal(tag.Id, persistedArticleTag.TagId);
223+
}
179224
}
180225
}

0 commit comments

Comments
 (0)