public async Task Can_delete_archived_resource() { // Arrange TelevisionBroadcast broadcast = _fakers.TelevisionBroadcast.Generate(); await _testContext.RunOnDatabaseAsync(async dbContext => { dbContext.Broadcasts.Add(broadcast); await dbContext.SaveChangesAsync(); }); string route = "/televisionBroadcasts/" + broadcast.StringId; // Act (HttpResponseMessage httpResponse, string responseDocument) = await _testContext.ExecuteDeleteAsync <string>(route); // Assert httpResponse.Should().HaveStatusCode(HttpStatusCode.NoContent); responseDocument.Should().BeEmpty(); await _testContext.RunOnDatabaseAsync(async dbContext => { TelevisionBroadcast broadcastInDatabase = await dbContext.Broadcasts.FirstWithIdOrDefaultAsync(broadcast.Id); broadcastInDatabase.Should().BeNull(); }); }
public async Task Cannot_delete_unarchived_resource() { // Arrange TelevisionBroadcast broadcast = _fakers.TelevisionBroadcast.Generate(); broadcast.ArchivedAt = null; await _testContext.RunOnDatabaseAsync(async dbContext => { dbContext.Broadcasts.Add(broadcast); await dbContext.SaveChangesAsync(); }); string route = "/televisionBroadcasts/" + broadcast.StringId; // Act (HttpResponseMessage httpResponse, ErrorDocument responseDocument) = await _testContext.ExecuteDeleteAsync <ErrorDocument>(route); // Assert httpResponse.Should().HaveStatusCode(HttpStatusCode.Forbidden); responseDocument.Errors.Should().HaveCount(1); Error error = responseDocument.Errors[0]; error.StatusCode.Should().Be(HttpStatusCode.Forbidden); error.Title.Should().Be("Television broadcasts must first be archived before they can be deleted."); error.Detail.Should().BeNull(); }
public async Task Can_get_unarchived_resource_by_ID() { // Arrange TelevisionBroadcast broadcast = _fakers.TelevisionBroadcast.Generate(); broadcast.ArchivedAt = null; await _testContext.RunOnDatabaseAsync(async dbContext => { dbContext.Broadcasts.Add(broadcast); await dbContext.SaveChangesAsync(); }); string route = "/televisionBroadcasts/" + broadcast.StringId; // Act (HttpResponseMessage httpResponse, Document responseDocument) = await _testContext.ExecuteGetAsync <Document>(route); // Assert httpResponse.Should().HaveStatusCode(HttpStatusCode.OK); responseDocument.SingleData.Should().NotBeNull(); responseDocument.SingleData.Id.Should().Be(broadcast.StringId); responseDocument.SingleData.Attributes["archivedAt"].Should().BeNull(); }
public async Task Cannot_create_archived_resource() { // Arrange TelevisionBroadcast newBroadcast = _fakers.TelevisionBroadcast.Generate(); var requestBody = new { data = new { type = "televisionBroadcasts", attributes = new { title = newBroadcast.Title, airedAt = newBroadcast.AiredAt, archivedAt = newBroadcast.ArchivedAt } } }; const string route = "/televisionBroadcasts"; // Act (HttpResponseMessage httpResponse, ErrorDocument responseDocument) = await _testContext.ExecutePostAsync <ErrorDocument>(route, requestBody); // Assert httpResponse.Should().HaveStatusCode(HttpStatusCode.Forbidden); responseDocument.Errors.Should().HaveCount(1); Error error = responseDocument.Errors[0]; error.StatusCode.Should().Be(HttpStatusCode.Forbidden); error.Title.Should().Be("Television broadcasts cannot be created in archived state."); error.Detail.Should().BeNull(); }
public async Task Can_create_unarchived_resource() { // Arrange TelevisionBroadcast newBroadcast = _fakers.TelevisionBroadcast.Generate(); var requestBody = new { data = new { type = "televisionBroadcasts", attributes = new { title = newBroadcast.Title, airedAt = newBroadcast.AiredAt } } }; const string route = "/televisionBroadcasts"; // Act (HttpResponseMessage httpResponse, Document responseDocument) = await _testContext.ExecutePostAsync <Document>(route, requestBody); // Assert httpResponse.Should().HaveStatusCode(HttpStatusCode.Created); responseDocument.SingleData.Should().NotBeNull(); responseDocument.SingleData.Attributes["title"].Should().Be(newBroadcast.Title); responseDocument.SingleData.Attributes["airedAt"].Should().BeCloseTo(newBroadcast.AiredAt); responseDocument.SingleData.Attributes["archivedAt"].Should().BeNull(); }
public async Task Can_archive_resource() { // Arrange TelevisionBroadcast existingBroadcast = _fakers.TelevisionBroadcast.Generate(); existingBroadcast.ArchivedAt = null; DateTimeOffset newArchivedAt = _fakers.TelevisionBroadcast.Generate().ArchivedAt !.Value; await _testContext.RunOnDatabaseAsync(async dbContext => { dbContext.Broadcasts.Add(existingBroadcast); await dbContext.SaveChangesAsync(); }); var requestBody = new { data = new { type = "televisionBroadcasts", id = existingBroadcast.StringId, attributes = new { archivedAt = newArchivedAt } } }; string route = "/televisionBroadcasts/" + existingBroadcast.StringId; // Act (HttpResponseMessage httpResponse, string responseDocument) = await _testContext.ExecutePatchAsync <string>(route, requestBody); // Assert httpResponse.Should().HaveStatusCode(HttpStatusCode.NoContent); responseDocument.Should().BeEmpty(); await _testContext.RunOnDatabaseAsync(async dbContext => { TelevisionBroadcast broadcastInDatabase = await dbContext.Broadcasts.FirstWithIdAsync(existingBroadcast.Id); broadcastInDatabase.ArchivedAt.Should().BeCloseTo(newArchivedAt); }); }
public async Task Cannot_shift_archive_date() { // Arrange TelevisionBroadcast broadcast = _fakers.TelevisionBroadcast.Generate(); DateTimeOffset?newArchivedAt = _fakers.TelevisionBroadcast.Generate().ArchivedAt; await _testContext.RunOnDatabaseAsync(async dbContext => { dbContext.Broadcasts.Add(broadcast); await dbContext.SaveChangesAsync(); }); var requestBody = new { data = new { type = "televisionBroadcasts", id = broadcast.StringId, attributes = new { archivedAt = newArchivedAt } } }; string route = "/televisionBroadcasts/" + broadcast.StringId; // Act (HttpResponseMessage httpResponse, ErrorDocument responseDocument) = await _testContext.ExecutePatchAsync <ErrorDocument>(route, requestBody); // Assert httpResponse.Should().HaveStatusCode(HttpStatusCode.Forbidden); responseDocument.Errors.Should().HaveCount(1); Error error = responseDocument.Errors[0]; error.StatusCode.Should().Be(HttpStatusCode.Forbidden); error.Title.Should().Be("Archive date of television broadcasts cannot be shifted. Unarchive it first."); error.Detail.Should().BeNull(); }