test(education): align question fixtures with node lifecycle

This commit is contained in:
2026-07-31 05:00:49 +08:00
parent 10a4e087ea
commit 9a4d72bba4

View File

@@ -10,8 +10,10 @@ import cn.iocoder.yudao.module.education.dal.dataobject.catalog.QuestionDO;
import cn.iocoder.yudao.module.education.dal.dataobject.catalog.QuestionVersionDO;
import cn.iocoder.yudao.module.education.dal.dataobject.catalog.ContentEntryDO;
import cn.iocoder.yudao.module.education.dal.dataobject.catalog.ContentNodeDO;
import cn.iocoder.yudao.module.education.dal.dataobject.catalog.ContentNodeLifecycleAuditDO;
import cn.iocoder.yudao.module.education.dal.mysql.catalog.ContentEntryMapper;
import cn.iocoder.yudao.module.education.dal.mysql.catalog.ContentNodeMapper;
import cn.iocoder.yudao.module.education.dal.mysql.catalog.ContentNodeLifecycleAuditMapper;
import cn.iocoder.yudao.module.education.dal.mysql.catalog.QuestionLifecycleAuditMapper;
import cn.iocoder.yudao.module.education.dal.mysql.catalog.QuestionMapper;
import cn.iocoder.yudao.module.education.dal.mysql.catalog.QuestionVersionMapper;
@@ -53,6 +55,7 @@ class TenantQuestionLifecyclePostgreSqlIntegrationTest extends PostgreSqlDbInteg
@Resource private PlatformTransactionManager transactionManager;
@Resource private ContentEntryMapper contentEntryMapper;
@Resource private ContentNodeMapper contentNodeMapper;
@Resource private ContentNodeLifecycleAuditMapper contentNodeAuditMapper;
@BeforeEach
void setUpTenant() {
@@ -215,10 +218,7 @@ class TenantQuestionLifecyclePostgreSqlIntegrationTest extends PostgreSqlDbInteg
lifecycleService.publish(id, 7L);
assertNodeQuestionCount(200L, 1L);
ContentNodeDO update = new ContentNodeDO();
update.setId(200L);
update.setIsActive(false);
contentNodeMapper.updateById(update);
archiveNode(200L, 10L);
assertNodeQuestionCount(200L, 0L);
assertNotNull(questionCatalogService.getQuestion(String.valueOf(id)));
@@ -343,6 +343,46 @@ class TenantQuestionLifecyclePostgreSqlIntegrationTest extends PostgreSqlDbInteg
}
private void insertNode(Long id, Long tenantId, String scope, Long entryId, String name) {
if ("TENANT_OWNED".equals(scope)) {
new TransactionTemplate(transactionManager).executeWithoutResult(status -> {
ContentNodeDO node = newNode(id, tenantId, scope, entryId, name);
node.setPublicationStatus("DRAFT");
node.setIsActive(false);
node.setIsHidden(true);
node.setAuthoringVersion(0);
contentNodeMapper.insert(node);
assertEquals(1, contentNodeMapper.updateLifecycleCas(tenantId, id, "DRAFT", "ACTIVE", true, 0));
ContentNodeLifecycleAuditDO audit = new ContentNodeLifecycleAuditDO();
audit.setTenantId(tenantId);
audit.setNodeId(id);
audit.setAuthoringVersion(1);
audit.setActorId(7L);
audit.setFromStatus("DRAFT");
audit.setToStatus("ACTIVE");
audit.setOccurredAt(java.time.LocalDateTime.now());
contentNodeAuditMapper.insert(audit);
});
return;
}
contentNodeMapper.insert(newNode(id, tenantId, scope, entryId, name));
}
private void archiveNode(Long id, Long tenantId) {
new TransactionTemplate(transactionManager).executeWithoutResult(status -> {
assertEquals(1, contentNodeMapper.updateLifecycleCas(tenantId, id, "ACTIVE", "ARCHIVED", false, 1));
ContentNodeLifecycleAuditDO audit = new ContentNodeLifecycleAuditDO();
audit.setTenantId(tenantId);
audit.setNodeId(id);
audit.setAuthoringVersion(2);
audit.setActorId(7L);
audit.setFromStatus("ACTIVE");
audit.setToStatus("ARCHIVED");
audit.setOccurredAt(java.time.LocalDateTime.now());
contentNodeAuditMapper.insert(audit);
});
}
private ContentNodeDO newNode(Long id, Long tenantId, String scope, Long entryId, String name) {
ContentNodeDO node = new ContentNodeDO();
node.setId(id);
node.setTenantId(tenantId);
@@ -350,6 +390,6 @@ class TenantQuestionLifecyclePostgreSqlIntegrationTest extends PostgreSqlDbInteg
node.setEntryId(entryId);
node.setName(name);
node.setNodeType("category");
contentNodeMapper.insert(node);
return node;
}
}