修改完成
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
function Read-Page([string]$RelativePath) {
|
||||
return [System.IO.File]::ReadAllText(
|
||||
(Join-Path (Split-Path -Parent $PSScriptRoot) $RelativePath),
|
||||
[System.Text.Encoding]::UTF8
|
||||
)
|
||||
}
|
||||
|
||||
function Assert-Contains([string]$Content, [string]$Expected, [string]$Message) {
|
||||
if (-not $Content.Contains($Expected)) { throw $Message }
|
||||
}
|
||||
|
||||
$t03 = Read-Page 'pages/tree/t03-member-profile.vue'
|
||||
$t04 = Read-Page 'pages/tree/t04-add-relative.vue'
|
||||
$t05 = Read-Page 'pages/tree/t05-edit-member.vue'
|
||||
$t06 = Read-Page 'pages/tree/t06-edit-relationship.vue'
|
||||
$t08 = Read-Page 'pages/tree/t08-member-states.vue'
|
||||
|
||||
foreach ($entry in @(
|
||||
@{ Name = 'T04'; Content = $t04 },
|
||||
@{ Name = 'T05'; Content = $t05 },
|
||||
@{ Name = 'T06'; Content = $t06 }
|
||||
)) {
|
||||
if ($entry.Content -match '<TreeMemberForm(?:\s|/|>)|import\s+TreeMemberForm') {
|
||||
throw "$($entry.Name) must own its business workflow instead of rendering TreeMemberForm"
|
||||
}
|
||||
foreach ($nativeUi in @('uni.showToast', 'uni.showModal', 'uni.showLoading', 'uni.showActionSheet')) {
|
||||
if ($entry.Content.Contains($nativeUi)) { throw "$($entry.Name) must not use $nativeUi" }
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($required in @(
|
||||
'const addState = ref("form")',
|
||||
'const addForm = reactive({',
|
||||
'const relationOptions = [',
|
||||
'const genderOptions = [',
|
||||
'const isFirstMember = computed(',
|
||||
'query.personId',
|
||||
'query.mode === "first"',
|
||||
'fieldErrors.name',
|
||||
'fieldErrors.relation',
|
||||
'add-state--form',
|
||||
'add-state--success',
|
||||
'add-state--error',
|
||||
'class="add-relative-form"',
|
||||
'<picker',
|
||||
'<AppDialog'
|
||||
)) { Assert-Contains $t04 $required "T04 missing independent add-relative contract: $required" }
|
||||
|
||||
foreach ($required in @(
|
||||
'const editState = ref("form")',
|
||||
'const editForm = reactive({',
|
||||
'const memberFixtures = {',
|
||||
'const isDirty = computed(',
|
||||
'const discardDialogVisible = ref(false)',
|
||||
'query.personId',
|
||||
'edit-state--form',
|
||||
'edit-state--success',
|
||||
'edit-state--error',
|
||||
'edit-state--no-permission',
|
||||
'class="edit-member-form"',
|
||||
'<AppDialog',
|
||||
'onBackPress('
|
||||
)) { Assert-Contains $t05 $required "T05 missing independent member-edit contract: $required" }
|
||||
|
||||
foreach ($required in @(
|
||||
'const relationshipState = ref("form")',
|
||||
'const relationshipForm = reactive({',
|
||||
'const memberOptions = [',
|
||||
'const relationshipOptions = [',
|
||||
'const relationshipPreview = computed(',
|
||||
'const validateRelationship = () =>',
|
||||
'query.personId',
|
||||
'relationship-state--form',
|
||||
'relationship-state--success',
|
||||
'relationship-state--conflict',
|
||||
'relationship-state--error',
|
||||
'class="relationship-form"',
|
||||
'<picker',
|
||||
'<AppDialog'
|
||||
)) { Assert-Contains $t06 $required "T06 missing independent relationship-edit contract: $required" }
|
||||
|
||||
foreach ($required in @(
|
||||
'const genealogyId = ref("")',
|
||||
'const personId = ref("")',
|
||||
'const statusState = ref("loading")',
|
||||
'const memberFixtures = {',
|
||||
'query.personId',
|
||||
'query.state',
|
||||
'member-status--privacy',
|
||||
'member-status--deceased',
|
||||
'member-status--forbidden',
|
||||
'member-status--error',
|
||||
'class="member-status-context"'
|
||||
)) { Assert-Contains $t08 $required "T08 missing member-driven status contract: $required" }
|
||||
if ($t08 -match 'class="status-tabs"|const\s+tabs\s*=|@click="statusState\s*=') {
|
||||
throw 'T08 must not let the user switch among demonstration states'
|
||||
}
|
||||
|
||||
foreach ($required in @(
|
||||
'const memberFixtures = {',
|
||||
'query.personId',
|
||||
'const openMemberState = (state) =>',
|
||||
'/pages/tree/t08-member-states?genealogyId=',
|
||||
'&personId=',
|
||||
'&state='
|
||||
)) { Assert-Contains $t03 $required "T03 missing semantic member-state entry: $required" }
|
||||
|
||||
Write-Output 'T03-T08-BUSINESS-SPECIALIZATION-CONTRACT PASS'
|
||||
Reference in New Issue
Block a user