diff options
author | PizzasBear <43722034+PizzasBear@users.noreply.github.com> | 2023-11-22 15:56:14 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-22 14:56:14 +0100 |
commit | 48c6cd327d3c1df4218898be509250efcc56597c (patch) | |
tree | 6db2748a99e036960a0421070c222af096f040b7 /testing | |
parent | ea7267dfc2914cdc340bae1a823c0660daef19e6 (diff) | |
download | askama-48c6cd327d3c1df4218898be509250efcc56597c.tar.gz askama-48c6cd327d3c1df4218898be509250efcc56597c.tar.bz2 askama-48c6cd327d3c1df4218898be509250efcc56597c.zip |
Enhance match to include multiple targets (#911)
Signed-off-by: max <gmx.sht@gmail.com>
Diffstat (limited to '')
-rw-r--r-- | testing/templates/match-enum-or.html | 8 | ||||
-rw-r--r-- | testing/tests/matches.rs | 29 |
2 files changed, 37 insertions, 0 deletions
diff --git a/testing/templates/match-enum-or.html b/testing/templates/match-enum-or.html new file mode 100644 index 0000000..ffd364d --- /dev/null +++ b/testing/templates/match-enum-or.html @@ -0,0 +1,8 @@ +The card is +{%- match suit %} + {%- when Suit::Clubs or Suit::Spades -%} + {{ " black" }} + {%- when Suit::Diamonds or Suit::Hearts -%} + {{ " red" }} +{%- endmatch %} + diff --git a/testing/tests/matches.rs b/testing/tests/matches.rs index f5ccb95..4507489 100644 --- a/testing/tests/matches.rs +++ b/testing/tests/matches.rs @@ -195,3 +195,32 @@ fn test_match_with_comment() { let s = MatchWithComment { good: false }; assert_eq!(s.render().unwrap(), "bad"); } + +enum Suit { + Clubs, + Diamonds, + Hearts, + Spades, +} + +#[derive(Template)] +#[template(path = "match-enum-or.html")] +struct MatchEnumOrTemplate { + suit: Suit, +} + +#[test] +fn test_match_enum_or() { + let template = MatchEnumOrTemplate { suit: Suit::Clubs }; + assert_eq!(template.render().unwrap(), "The card is black\n"); + let template = MatchEnumOrTemplate { suit: Suit::Spades }; + assert_eq!(template.render().unwrap(), "The card is black\n"); + + let template = MatchEnumOrTemplate { suit: Suit::Hearts }; + assert_eq!(template.render().unwrap(), "The card is red\n"); + + let template = MatchEnumOrTemplate { + suit: Suit::Diamonds, + }; + assert_eq!(template.render().unwrap(), "The card is red\n"); +} |