public async Task ListenAsync_WatchRelatedContent_Delete() { var watch = await writer.WriteAsync(new WatchView() { contentId = AllAccessContentId }, NormalUserId); var originalEvents = await queue.ListenAsync(new UserView() { id = NormalUserId }, -1, safetySource.Token); //Then immediately delete it var deletedWatch = await writer.DeleteAsync <WatchView>(watch.id, NormalUserId); //See what events we can get. Use a fake user view because nothing in there matters var events = await queue.ListenAsync(new UserView() { id = NormalUserId }, originalEvents.lastId, safetySource.Token); Assert.Single(events.events); //Make sure there's a watch delete event and that it has "related_content" var deleteEvent = events.events.First(x => x.action == UserAction.delete && x.type == nameof(EventType.watch_event)); Assert.Equal(AllAccessContentId, deleteEvent.contentId); Assert.Contains(nameof(RequestType.content), events.objects[EventType.watch_event].Keys); Assert.Contains(events.objects[EventType.watch_event][nameof(RequestType.content)], x => (long)x["id"] == watch.contentId); //Assert.All(originalEvents.objects, x => Assert.NotEqual("related_content", x)); //Also, make sure that related content doesn't leak into OTHER results //Assert.Contains(Constants.RelatedContentKey, events.objects[EventType.activity_event].Keys); //Assert.Empty(events.objects[EventType.activity_event][Constants.RelatedContentKey]); }