{#- WebAssembly assertion template using Vitest
Context variables:
- assertion_type: assertion type ("equals", "contains", etc.)
- field_expr: JavaScript expression for the field
- js_val: JavaScript formatted value string (or empty string)
- has_js_val: bool
- is_string_val: bool
- values_js: array of JavaScript formatted strings
- n: number (as u64) or 0
- call_expr: method call expression
- check: method_result check type
- check_js_val: JavaScript formatted check value (or empty string)
- has_check_js_val: bool
- check_n: number for check (or 0)
- field_is_array: bool
- use_item_texts: bool (for array string containment)
Note: WASM bindings always use non-nullable types, so no optional coalescing
#}
{% if assertion_type == "equals" %}
{% if is_string_val %}
expect({{ field_expr }}.trim()).toBe({{ js_val }});
{% else %}
expect({{ field_expr }}).toBe({{ js_val }});
{% endif %}
{% elif assertion_type == "contains" %}
{% if field_is_array and is_string_val %}
expect({{ field_expr }}.some((item) => _alefE2eItemTexts(item).some((text) => text.includes({{ js_val }})))).toBe(true);
{% else %}
expect({{ field_expr }}).toContain({{ js_val }});
{% endif %}
{% elif assertion_type == "contains_all" %}
{% for val in values_js %}
{% if field_is_array and is_string_val %}
expect({{ field_expr }}.some((item) => _alefE2eItemTexts(item).some((text) => text.includes({{ val }})))).toBe(true);
{% else %}
expect({{ field_expr }}).toContain({{ val }});
{% endif %}
{% endfor %}
{% elif assertion_type == "not_contains" %}
{% if field_is_array and is_string_val %}
expect({{ field_expr }}.some((item) => _alefE2eItemTexts(item).some((text) => text.includes({{ js_val }})))).toBe(false);
{% else %}
expect({{ field_expr }}).not.toContain({{ js_val }});
{% endif %}
{% elif assertion_type == "not_empty" %}
expect({{ field_expr }}.length).toBeGreaterThan(0);
{% elif assertion_type == "is_empty" %}
expect({{ field_expr }}.length).toBe(0);
{% elif assertion_type == "contains_any" %}
{% if field_is_array and is_string_val %}
expect([{{ values_js|join(", ") }}].some((v) => {{ field_expr }}.some((item) => _alefE2eItemTexts(item).some((text) => text.includes(v))))).toBe(true);
{% else %}
expect([{{ values_js|join(", ") }}].some((v) => {{ field_expr }}.includes(v))).toBe(true);
{% endif %}
{% elif assertion_type == "greater_than" %}
expect({{ field_expr }}).toBeGreaterThan({{ js_val }});
{% elif assertion_type == "less_than" %}
expect({{ field_expr }}).toBeLessThan({{ js_val }});
{% elif assertion_type == "greater_than_or_equal" or assertion_type == "min" %}
expect({{ field_expr }}).toBeGreaterThanOrEqual({{ js_val }});
{% elif assertion_type == "less_than_or_equal" or assertion_type == "max" %}
expect({{ field_expr }}).toBeLessThanOrEqual({{ js_val }});
{% elif assertion_type == "starts_with" %}
expect({{ field_expr }}.startsWith({{ js_val }})).toBe(true);
{% elif assertion_type == "ends_with" %}
expect({{ field_expr }}.endsWith({{ js_val }})).toBe(true);
{% elif assertion_type == "min_length" %}
expect({{ field_expr }}.length).toBeGreaterThanOrEqual({{ n }});
{% elif assertion_type == "max_length" %}
expect({{ field_expr }}.length).toBeLessThanOrEqual({{ n }});
{% elif assertion_type == "count_min" %}
expect({{ field_expr }}.length).toBeGreaterThanOrEqual({{ n }});
{% elif assertion_type == "count_equals" %}
expect({{ field_expr }}.length).toBe({{ n }});
{% elif assertion_type == "is_true" %}
expect({{ field_expr }}).toBe(true);
{% elif assertion_type == "is_false" %}
expect({{ field_expr }}).toBe(false);
{% elif assertion_type == "method_result" %}
{% if check == "equals" %}
expect({{ call_expr }}).toBe({{ check_js_val }});
{% elif check == "is_true" %}
expect({{ call_expr }}).toBe(true);
{% elif check == "is_false" %}
expect({{ call_expr }}).toBe(false);
{% elif check == "greater_than_or_equal" %}
expect({{ call_expr }}).toBeGreaterThanOrEqual({{ check_n }});
{% elif check == "count_min" %}
expect({{ call_expr }}.length).toBeGreaterThanOrEqual({{ check_n }});
{% elif check == "contains" %}
expect({{ call_expr }}).toContain({{ check_js_val }});
{% elif check == "is_error" %}
expect(() => { {{ call_expr }}; }).toThrow();
{% endif %}
{% elif assertion_type == "matches_regex" %}
expect({{ field_expr }}).toMatch(/{{ expected_pattern }}/);
{% endif %}