public async Task Can_create_resource_with_annotated_relationships() { // Arrange var parentDirectory = new SystemDirectory { Name = "Shared", IsCaseSensitive = true }; var subdirectory = new SystemDirectory { Name = "Open Source", IsCaseSensitive = true }; var file = new SystemFile { FileName = "Main.cs", SizeInBytes = 100 }; await _testContext.RunOnDatabaseAsync(async dbContext => { dbContext.Directories.AddRange(parentDirectory, subdirectory); dbContext.Files.Add(file); await dbContext.SaveChangesAsync(); }); var requestBody = new { data = new { type = "systemDirectories", attributes = new { name = "Projects", isCaseSensitive = true }, relationships = new { subdirectories = new { data = new[] { new { type = "systemDirectories", id = subdirectory.StringId } } }, files = new { data = new[] { new { type = "systemFiles", id = file.StringId } } }, parent = new { data = new { type = "systemDirectories", id = parentDirectory.StringId } } } } }; const string route = "/systemDirectories"; // Act (HttpResponseMessage httpResponse, Document responseDocument) = await _testContext.ExecutePostAsync <Document>(route, requestBody); // Assert httpResponse.Should().HaveStatusCode(HttpStatusCode.Created); responseDocument.SingleData.Should().NotBeNull(); responseDocument.SingleData.Attributes["name"].Should().Be("Projects"); responseDocument.SingleData.Attributes["isCaseSensitive"].Should().Be(true); }
public async Task Can_update_resource_with_annotated_relationships() { // Arrange var directory = new SystemDirectory { Name = "Projects", IsCaseSensitive = false, Subdirectories = new List <SystemDirectory> { new SystemDirectory { Name = "C#", IsCaseSensitive = false } }, Files = new List <SystemFile> { new SystemFile { FileName = "readme.txt" } }, Parent = new SystemDirectory { Name = "Data", IsCaseSensitive = false } }; var otherParent = new SystemDirectory { Name = "Shared", IsCaseSensitive = false }; var otherSubdirectory = new SystemDirectory { Name = "Shared", IsCaseSensitive = false }; var otherFile = new SystemFile { FileName = "readme.md" }; await _testContext.RunOnDatabaseAsync(async dbContext => { dbContext.Directories.AddRange(directory, otherParent, otherSubdirectory); dbContext.Files.Add(otherFile); await dbContext.SaveChangesAsync(); }); var requestBody = new { data = new { type = "systemDirectories", id = directory.StringId, attributes = new { name = "Project Files" }, relationships = new { subdirectories = new { data = new[] { new { type = "systemDirectories", id = otherSubdirectory.StringId } } }, files = new { data = new[] { new { type = "systemFiles", id = otherFile.StringId } } }, parent = new { data = new { type = "systemDirectories", id = otherParent.StringId } } } } }; string route = "/systemDirectories/" + directory.StringId; // Act var(httpResponse, responseDocument) = await _testContext.ExecutePatchAsync <string>(route, requestBody); // Assert httpResponse.Should().HaveStatusCode(HttpStatusCode.NoContent); responseDocument.Should().BeEmpty(); }