|
2 | 2 |
|
3 | 3 | import pytest |
4 | 4 |
|
5 | | -from tinybird_sdk import define_datasource, define_kafka_connection, t |
| 5 | +from tinybird_sdk import define_datasource, define_kafka_connection, get_modifiers, t |
6 | 6 | from tinybird_sdk.generator.connection import generate_connection |
7 | 7 | from tinybird_sdk.generator.datasource import generate_datasource |
8 | 8 |
|
@@ -80,3 +80,31 @@ def test_generate_datasource_ignores_non_string_json_path(monkeypatch: pytest.Mo |
80 | 80 |
|
81 | 81 | generated = generate_datasource(datasource) |
82 | 82 | assert "`json:$.id`" in generated.content |
| 83 | + |
| 84 | + |
| 85 | +def test_type_validator_default_expr_stores_expression() -> None: |
| 86 | + validator = t.uuid().default_expr(" generateUUIDv4() ") |
| 87 | + modifiers = get_modifiers(validator) |
| 88 | + |
| 89 | + assert modifiers.has_default is True |
| 90 | + assert modifiers.default_expression == "generateUUIDv4()" |
| 91 | + assert modifiers.default_value is None |
| 92 | + |
| 93 | + |
| 94 | +def test_generate_datasource_emits_unquoted_default_expression() -> None: |
| 95 | + datasource = define_datasource( |
| 96 | + "events", |
| 97 | + { |
| 98 | + "schema": { |
| 99 | + "id": t.uuid().default_expr("generateUUIDv4()"), |
| 100 | + } |
| 101 | + }, |
| 102 | + ) |
| 103 | + |
| 104 | + generated = generate_datasource(datasource) |
| 105 | + assert "id UUID `json:$.id` DEFAULT generateUUIDv4()" in generated.content |
| 106 | + |
| 107 | + |
| 108 | +def test_type_validator_default_expr_rejects_empty_expression() -> None: |
| 109 | + with pytest.raises(ValueError, match="Default expression cannot be empty."): |
| 110 | + t.uuid().default_expr(" ") |
0 commit comments