Implement closed typed effect path
This commit is contained in:
@@ -3,7 +3,6 @@ use std::process::Command;
|
||||
|
||||
#[test]
|
||||
fn component_macro_reports_missing_handler_implementation() {
|
||||
// req: component/005 req: check/002 req: test/003
|
||||
let fixture = Fixture::new("hemx-derive-component-missing-handler-fail");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
@@ -58,7 +57,6 @@ mod todos {
|
||||
|
||||
#[test]
|
||||
fn component_macro_can_validate_one_generated_component() {
|
||||
// req: component/003 req: component/005 req: test/003
|
||||
let fixture = Fixture::new("hemx-derive-component-scoped-pass");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
@@ -112,7 +110,6 @@ mod todos {
|
||||
|
||||
#[test]
|
||||
fn component_macro_rejects_handlers_outside_scoped_component() {
|
||||
// req: component/003 req: component/005 req: test/003
|
||||
let fixture = Fixture::new("hemx-derive-component-extra-handler-fail");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
@@ -172,7 +169,6 @@ mod handlers {
|
||||
|
||||
#[test]
|
||||
fn component_macro_rejects_unknown_scoped_component() {
|
||||
// req: component/003 req: component/005 req: test/003
|
||||
let fixture = Fixture::new("hemx-derive-component-unknown-scope-fail");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
@@ -231,7 +227,6 @@ mod handlers {
|
||||
|
||||
#[test]
|
||||
fn component_macro_rejects_ambiguous_generated_handles() {
|
||||
// req: component/003 req: component/005 req: test/003
|
||||
let fixture = Fixture::new("hemx-derive-component-ambiguous-handle-fail");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
@@ -286,7 +281,6 @@ mod handlers {
|
||||
|
||||
#[test]
|
||||
fn handler_macro_reports_unknown_handle_and_bad_shape() {
|
||||
// req: derive_handler/001 req: test/003
|
||||
let fixture = Fixture::new("hemx-derive-handler-fail");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
@@ -343,9 +337,47 @@ fn known() {}
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn handler_macro_rejects_client_placement() {
|
||||
let fixture = Fixture::new("hemx-derive-handler-client-placement-fail");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
&format!(
|
||||
r#"[package]
|
||||
name = "hemx-derive-handler-client-placement-fail"
|
||||
version = "0.0.0"
|
||||
edition = "2021"
|
||||
|
||||
[lib]
|
||||
path = "src/lib.rs"
|
||||
|
||||
[dependencies]
|
||||
hemx = {{ path = {:?} }}
|
||||
"#,
|
||||
repo_path("hemx")
|
||||
),
|
||||
);
|
||||
fixture.write(
|
||||
"src/lib.rs",
|
||||
r#"#[hemx::handler(client)]
|
||||
fn save() -> impl hemx::IntoEffect {
|
||||
hemx::advanced::EffectBatch::default()
|
||||
}
|
||||
"#,
|
||||
);
|
||||
|
||||
let output = check_fixture(&fixture);
|
||||
|
||||
assert!(!output.status.success(), "fixture unexpectedly compiled");
|
||||
let stderr = String::from_utf8_lossy(&output.stderr);
|
||||
assert!(
|
||||
stderr.contains("unsupported hemx handler placement; expected #[hemx::handler]"),
|
||||
"missing client-placement diagnostic in stderr:\n{stderr}"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn handler_macro_reports_missing_syms() {
|
||||
// req: build/003 req: test/003
|
||||
let fixture = Fixture::new("hemx-derive-handler-syms-fail");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
@@ -400,7 +432,6 @@ fn create() -> impl hemx::IntoEffect {
|
||||
|
||||
#[test]
|
||||
fn handler_requires_generated_param_arguments() {
|
||||
// req: derive_handler/001 req: test/003
|
||||
let fixture = Fixture::new("hemx-derive-param-handler-fail");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
@@ -452,7 +483,6 @@ fn show(todo_id: String) -> impl hemx::IntoEffect {
|
||||
|
||||
#[test]
|
||||
fn form_struct_rejects_missing_generated_field() {
|
||||
// req: form/001 req: form/004 req: form/006 req: test/003
|
||||
let fixture = Fixture::new("hemx-derive-form-struct-missing-field-fail");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
@@ -502,7 +532,6 @@ struct CreateTodo {}
|
||||
|
||||
#[test]
|
||||
fn form_struct_rejects_wrong_optionality_and_multiplicity() {
|
||||
// req: form/004 req: form/006 req: test/003
|
||||
let fixture = Fixture::new("hemx-derive-form-struct-shape-fail");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
@@ -559,7 +588,6 @@ struct Profile {
|
||||
|
||||
#[test]
|
||||
fn form_struct_requires_field_parser() {
|
||||
// req: form/004 req: form/006 req: test/003
|
||||
let fixture = Fixture::new("hemx-derive-form-struct-parser-fail");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
@@ -613,7 +641,6 @@ struct Profile {
|
||||
|
||||
#[test]
|
||||
fn form_struct_accepts_raw_identifier_for_reserved_control_name() {
|
||||
// req: form/004 test
|
||||
let fixture = Fixture::new("hemx-derive-form-raw-identifier-pass");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
@@ -664,7 +691,6 @@ struct Filter {
|
||||
|
||||
#[test]
|
||||
fn form_handle_accepts_checked_form_model() {
|
||||
// req: form/001 req: form/004 req: form/006
|
||||
let fixture = Fixture::new("hemx-derive-form-handler-checked-model-pass");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
@@ -724,7 +750,6 @@ fn smoke() {
|
||||
|
||||
#[test]
|
||||
fn form_handle_requires_form_parameter() {
|
||||
// req: form/004 req: form/006 req: test/003
|
||||
let fixture = Fixture::new("hemx-derive-form-handler-fail");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
@@ -778,7 +803,6 @@ fn create() -> impl hemx::IntoEffect {
|
||||
|
||||
#[test]
|
||||
fn form_handle_rejects_state_only_handler() {
|
||||
// req: form/004 req: form/006 req: test/003
|
||||
let fixture = Fixture::new("hemx-derive-form-handler-state-only-fail");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
@@ -835,7 +859,6 @@ fn create(_state: State<App>) -> impl hemx::IntoEffect {
|
||||
|
||||
#[test]
|
||||
fn form_handle_still_requires_generated_param_arguments() {
|
||||
// req: form/006 req: derive_handler/003 req: test/003
|
||||
let fixture = Fixture::new("hemx-derive-form-handler-param-fail");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
@@ -889,7 +912,6 @@ fn create(_form: hemx::Form<CreateTodo>) -> impl hemx::IntoEffect {
|
||||
|
||||
#[test]
|
||||
fn surface_macro_reports_missing_generated_include() {
|
||||
// req: build/004 req: test/003
|
||||
let fixture = Fixture::new("hemx-derive-surface-include-fail");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
@@ -942,7 +964,6 @@ pub mod ui {}
|
||||
|
||||
#[test]
|
||||
fn surface_macro_requires_inline_module() {
|
||||
// req: codegen/001 req: test/003
|
||||
let fixture = Fixture::new("hemx-derive-surface-inline-fail");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
@@ -980,7 +1001,6 @@ pub mod ui;
|
||||
|
||||
#[test]
|
||||
fn generated_resource_references_fail_when_name_is_absent() {
|
||||
// req: style/002 req: codegen/001 req: test/003
|
||||
let fixture = Fixture::new("hemx-derive-generated-resource-fail");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
@@ -1033,7 +1053,6 @@ pub const MISSING: hemx::CssClass = ui::classes::missing;
|
||||
|
||||
#[test]
|
||||
fn effect_batch_has_no_parallel_postcard_wire_api() {
|
||||
// req: wire/010 test
|
||||
let fixture = Fixture::new("hemx-effect-batch-postcard-api-fail");
|
||||
fixture.write(
|
||||
"Cargo.toml",
|
||||
|
||||
Reference in New Issue
Block a user