61 lines
1.7 KiB
C#
61 lines
1.7 KiB
C#
using QuestionsApi.Models;
|
|
using QuestionsApi.Services;
|
|
using Xunit;
|
|
|
|
namespace QuestionsApi.Tests;
|
|
|
|
public sealed class QuestionStoreTests
|
|
{
|
|
[Fact]
|
|
public void ApplyMediaReviewGate_FlagsUnflaggedQuestionWithMedia()
|
|
{
|
|
var question = new Question { Media = ["asset-1"] };
|
|
|
|
QuestionStore.ApplyMediaReviewGate(question);
|
|
|
|
Assert.NotNull(question.FlaggedForReviewUtc);
|
|
Assert.Equal("system", question.FlaggedByUserId);
|
|
Assert.False(string.IsNullOrWhiteSpace(question.FlagReason));
|
|
}
|
|
|
|
[Fact]
|
|
public void ApplyMediaReviewGate_LeavesMediaFreeQuestionsAlone()
|
|
{
|
|
var question = new Question { Media = [] };
|
|
|
|
QuestionStore.ApplyMediaReviewGate(question);
|
|
|
|
Assert.Null(question.FlaggedForReviewUtc);
|
|
}
|
|
|
|
[Fact]
|
|
public void ApplyMediaReviewGate_DoesNotOverwriteAnExistingFlag()
|
|
{
|
|
var flaggedAt = DateTime.UtcNow.AddDays(-1);
|
|
var question = new Question
|
|
{
|
|
Media = ["asset-1"],
|
|
FlaggedForReviewUtc = flaggedAt,
|
|
FlagReason = "Reported by student",
|
|
FlaggedByUserId = "user-42"
|
|
};
|
|
|
|
QuestionStore.ApplyMediaReviewGate(question);
|
|
|
|
Assert.Equal(flaggedAt, question.FlaggedForReviewUtc);
|
|
Assert.Equal("Reported by student", question.FlagReason);
|
|
Assert.Equal("user-42", question.FlaggedByUserId);
|
|
}
|
|
|
|
[Fact]
|
|
public void StudentResponseIncludesCanonicalStep3SystemForLegacyQuestion()
|
|
{
|
|
var response = QuestionResponse.FromModel(new Question
|
|
{
|
|
ExternalId = "legacy", System = "Pulmonary", Discipline = "Medicine"
|
|
});
|
|
|
|
Assert.Equal("Respiratory System", response.Step3System);
|
|
}
|
|
}
|