Matrix: insert Form B coverage

12 tests across schema_serial_pk / text_pk / multi_table / every_type.
Pins (a) Form B skips auto-gen columns from the slot list (regression
for handoff-12 §B fix); (b) wrong-count value lists are now flagged
at typing time, not only at submit (the previous commit's fix); and
(c) per-type slot prose advances correctly through every Type variant.
This commit is contained in:
claude@clouddev1
2026-05-15 20:31:01 +00:00
parent fffb44ff4f
commit a9a04cff97
14 changed files with 588 additions and 3 deletions
@@ -0,0 +1,39 @@
---
source: tests/typing_surface/insert_form_b.rs
description: "input=\"insert into Customers values \" cursor=29"
expression: "& a"
---
Assessment {
input: "insert into Customers values ",
cursor: 29,
state: IncompleteAtEof,
hint: Some(
Candidates {
items: [
Candidate {
text: "(",
kind: Punct,
},
],
selected: None,
},
),
completion: Some(
Completion {
replaced_range: (
29,
29,
),
partial_prefix: "",
candidates: [
Candidate {
text: "(",
kind: Punct,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,33 @@
---
source: tests/typing_surface/insert_form_b.rs
description: "input=\"insert into Things values (1, \" cursor=30"
expression: "& a"
---
Assessment {
input: "insert into Things values (1, ",
cursor: 30,
state: IncompleteAtEof,
hint: Some(
Prose(
"for `r`: Type a number (e.g. 3.14, -0.5) or null",
),
),
completion: Some(
Completion {
replaced_range: (
30,
30,
),
partial_prefix: "",
candidates: [
Candidate {
text: "null",
kind: Keyword,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,33 @@
---
source: tests/typing_surface/insert_form_b.rs
description: "input=\"insert into Customers values ('Alice', \" cursor=39"
expression: "& a"
---
Assessment {
input: "insert into Customers values ('Alice', ",
cursor: 39,
state: IncompleteAtEof,
hint: Some(
Prose(
"for `Email`: Type a quoted string (e.g. 'Alice') or null",
),
),
completion: Some(
Completion {
replaced_range: (
39,
39,
),
partial_prefix: "",
candidates: [
Candidate {
text: "null",
kind: Keyword,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,33 @@
---
source: tests/typing_surface/insert_form_b.rs
description: "input=\"insert into Things values (\" cursor=27"
expression: "& a"
---
Assessment {
input: "insert into Things values (",
cursor: 27,
state: IncompleteAtEof,
hint: Some(
Prose(
"for `k`: Type an integer (e.g. 42, -7) or null",
),
),
completion: Some(
Completion {
replaced_range: (
27,
27,
),
partial_prefix: "",
candidates: [
Candidate {
text: "null",
kind: Keyword,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,33 @@
---
source: tests/typing_surface/insert_form_b.rs
description: "input=\"insert into Customers values (\" cursor=30"
expression: "& a"
---
Assessment {
input: "insert into Customers values (",
cursor: 30,
state: IncompleteAtEof,
hint: Some(
Prose(
"for `Name`: Type a quoted string (e.g. 'Alice') or null",
),
),
completion: Some(
Completion {
replaced_range: (
30,
30,
),
partial_prefix: "",
candidates: [
Candidate {
text: "null",
kind: Keyword,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,33 @@
---
source: tests/typing_surface/insert_form_b.rs
description: "input=\"insert into Items values (\" cursor=26"
expression: "& a"
---
Assessment {
input: "insert into Items values (",
cursor: 26,
state: IncompleteAtEof,
hint: Some(
Prose(
"for `Code`: Type a quoted string (e.g. 'Alice') or null",
),
),
completion: Some(
Completion {
replaced_range: (
26,
26,
),
partial_prefix: "",
candidates: [
Candidate {
text: "null",
kind: Keyword,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,33 @@
---
source: tests/typing_surface/insert_form_b.rs
description: "input=\"insert into Customers values ('Alice', \" cursor=39"
expression: "& a"
---
Assessment {
input: "insert into Customers values ('Alice', ",
cursor: 39,
state: IncompleteAtEof,
hint: Some(
Prose(
"for `Email`: Type a quoted string (e.g. 'Alice') or null",
),
),
completion: Some(
Completion {
replaced_range: (
39,
39,
),
partial_prefix: "",
candidates: [
Candidate {
text: "null",
kind: Keyword,
},
],
},
),
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,19 @@
---
source: tests/typing_surface/insert_form_b.rs
description: "input=\"insert into Customers values ('Alice', 'a@b.c'\" cursor=46"
expression: "& a"
---
Assessment {
input: "insert into Customers values ('Alice', 'a@b.c'",
cursor: 46,
state: IncompleteAtEof,
hint: Some(
Prose(
"Next: `)`",
),
),
completion: None,
parse_result: Err(
"Invalid(at_eof)",
),
}
@@ -0,0 +1,19 @@
---
source: tests/typing_surface/insert_form_b.rs
description: "input=\"insert into Items values ('SKU-1', 'Widget')\" cursor=44"
expression: "& a"
---
Assessment {
input: "insert into Items values ('SKU-1', 'Widget')",
cursor: 44,
state: Valid,
hint: Some(
Prose(
"Submit with Enter",
),
),
completion: None,
parse_result: Ok(
"Insert",
),
}
@@ -0,0 +1,19 @@
---
source: tests/typing_surface/insert_form_b.rs
description: "input=\"insert into Customers values ('Alice', 'a@b.c')\" cursor=47"
expression: "& a"
---
Assessment {
input: "insert into Customers values ('Alice', 'a@b.c')",
cursor: 47,
state: Valid,
hint: Some(
Prose(
"Submit with Enter",
),
),
completion: None,
parse_result: Ok(
"Insert",
),
}
@@ -0,0 +1,35 @@
---
source: tests/typing_surface/insert_form_b.rs
description: "input=\"insert into Customers values (1, 'Alice', 'a@b.c')\" cursor=50"
expression: "& a"
---
Assessment {
input: "insert into Customers values (1, 'Alice', 'a@b.c')",
cursor: 50,
state: DefiniteErrorAt(
30,
),
hint: Some(
Prose(
"for `Name`: Type a quoted string (e.g. 'Alice') or null",
),
),
completion: Some(
Completion {
replaced_range: (
50,
50,
),
partial_prefix: "",
candidates: [
Candidate {
text: "null",
kind: Keyword,
},
],
},
),
parse_result: Err(
"Invalid(definite)",
),
}
@@ -0,0 +1,21 @@
---
source: tests/typing_surface/insert_form_b.rs
description: "input=\"insert into Customers values ('Alice')\" cursor=38"
expression: "& a"
---
Assessment {
input: "insert into Customers values ('Alice')",
cursor: 38,
state: DefiniteErrorAt(
37,
),
hint: Some(
Prose(
"Submit with Enter",
),
),
completion: None,
parse_result: Err(
"Invalid(definite)",
),
}