Files

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);
}
}