otwarchive-symphonyarchive/features/gift_exchanges/potential_matches.feature

361 lines
17 KiB
Gherkin
Raw Permalink Normal View History

2026-03-11 22:22:11 +00:00
Feature:
Testing potential match generation.
Scenario: Small multi-fandom exchange, only fandom tags.
Given I create the gift exchange "multifan3" with the following options
| value | minimum | maximum | match |
| prompts | 2 | 2 | 1 |
| fandoms | 1 | 1 | 1 |
And the user "test1" signs up for "multifan3" with the following prompts
| type | fandoms |
| request | Popular Fandom |
| request | Fandom of One |
| offer | Rare Fandom 1 |
| offer | Fandom of One |
And the user "test2" signs up for "multifan3" with the following prompts
| type | fandoms |
| request | Rare Fandom 1 |
| request | Rare Fandom 2 |
| offer | Popular Fandom |
| offer | Rare Fandom 2 |
And the user "test3" signs up for "multifan3" with the following prompts
| type | fandoms |
| request | Rare Fandom 2 |
| request | Rare Fandom 3 |
| offer | Popular Fandom |
| offer | Rare Fandom 2 |
When potential matches are generated for "multifan3"
Then the potential matches for "multifan3" should be
| offer | request |
| test1 | test2 |
| test2 | test1 |
| test2 | test3 |
| test3 | test1 |
| test3 | test2 |
Scenario: Unconstrained exchange.
Given I create the gift exchange "unconstrained3" with the following options
| value | minimum | maximum | match |
| prompts | 1 | 1 | 1 |
| characters | 1 | 1 | 0 |
And the user "test1" signs up for "unconstrained3" with the following prompts
| type | characters |
| request | Evil Villain |
| offer | Evil Villain |
And the user "test2" signs up for "unconstrained3" with the following prompts
| type | characters |
| request | Sweet Protagonist |
| offer | Sweet Protagonist |
And the user "test3" signs up for "unconstrained3" with the following prompts
| type | characters |
| request | Morally Grey |
| offer | Morally Grey |
When potential matches are generated for "unconstrained3"
Then the potential matches for "unconstrained3" should be
| offer | request |
| test1 | test2 |
| test1 | test3 |
| test2 | test1 |
| test2 | test3 |
| test3 | test1 |
| test3 | test2 |
Scenario: Unconstrained exchange with no tags.
Given I create the gift exchange "no_tags3" with the following options
| value | minimum | maximum | match |
| prompts | 1 | 1 | 1 |
And the user "test1" signs up for "no_tags3" with the following prompts
| type |
| request |
| offer |
And the user "test2" signs up for "no_tags3" with the following prompts
| type |
| request |
| offer |
And the user "test3" signs up for "no_tags3" with the following prompts
| type |
| request |
| offer |
When potential matches are generated for "no_tags3"
Then the potential matches for "no_tags3" should be
| offer | request |
| test1 | test2 |
| test1 | test3 |
| test2 | test1 |
| test2 | test3 |
| test3 | test1 |
| test3 | test2 |
Scenario: Constrained exchange with no matches.
Given I create the gift exchange "constrained3" with the following options
| value | minimum | maximum | match |
| prompts | 1 | 1 | 1 |
| characters | 1 | 1 | 1 |
And the user "test1" signs up for "constrained3" with the following prompts
| type | characters |
| request | Evil Villain |
| offer | Evil Villain |
And the user "test2" signs up for "constrained3" with the following prompts
| type | characters |
| request | Sweet Protagonist |
| offer | Sweet Protagonist |
And the user "test3" signs up for "constrained3" with the following prompts
| type | characters |
| request | Morally Grey |
| offer | Morally Grey |
When potential matches are generated for "constrained3"
Then there should be no potential matches for "constrained3"
Scenario: Exchange with someone offering Any.
Given I create the gift exchange "any_offer3" with the following options
| value | minimum | maximum | match |
| prompts | 1 | 1 | 1 |
| characters | 1 | 1 | 1 |
And the user "test1" signs up for "any_offer3" with the following prompts
| type | characters |
| request | Evil Villain |
| offer | any |
And the user "test2" signs up for "any_offer3" with the following prompts
| type | characters |
| request | Sweet Protagonist |
| offer | Sweet Protagonist |
And the user "test3" signs up for "any_offer3" with the following prompts
| type | characters |
| request | Morally Grey |
| offer | Morally Grey |
When potential matches are generated for "any_offer3"
Then the potential matches for "any_offer3" should be
| offer | request |
| test1 | test2 |
| test1 | test3 |
Scenario: Exchange with someone requesting Any.
Given I create the gift exchange "any_request3" with the following options
| value | minimum | maximum | match |
| prompts | 1 | 1 | 1 |
| characters | 1 | 1 | 1 |
And the user "test1" signs up for "any_request3" with the following prompts
| type | characters |
| request | any |
| offer | Evil Villain |
And the user "test2" signs up for "any_request3" with the following prompts
| type | characters |
| request | Sweet Protagonist |
| offer | Sweet Protagonist |
And the user "test3" signs up for "any_request3" with the following prompts
| type | characters |
| request | Morally Grey |
| offer | Morally Grey |
When potential matches are generated for "any_request3"
Then the potential matches for "any_request3" should be
| offer | request |
| test2 | test1 |
| test3 | test1 |
Scenario: Exchange with offers and requests for Any.
Given I create the gift exchange "any_both3" with the following options
| value | minimum | maximum | match |
| prompts | 1 | 1 | 1 |
| characters | 1 | 1 | 1 |
And the user "test1" signs up for "any_both3" with the following prompts
| type | characters |
| request | any |
| offer | Evil Villain |
And the user "test2" signs up for "any_both3" with the following prompts
| type | characters |
| request | Sweet Protagonist |
| offer | any |
And the user "test3" signs up for "any_both3" with the following prompts
| type | characters |
| request | Morally Grey |
| offer | Morally Grey |
When potential matches are generated for "any_both3"
Then the potential matches for "any_both3" should be
| offer | request |
| test2 | test1 |
| test2 | test3 |
| test3 | test1 |
Scenario: Exchange with ALL matching.
Given I create the gift exchange "all_matching3" with the following options
| value | minimum | maximum | match |
| prompts | 1 | 1 | 1 |
| characters | 1 | 4 | -1 |
And the user "test1" signs up for "all_matching3" with the following prompts
| type | characters |
| request | Evil Villain, Shy Friend |
| offer | Evil Villain, Shy Friend, Anti-Villain, Sweet Protagonist |
And the user "test2" signs up for "all_matching3" with the following prompts
| type | characters |
| request | Evil Villain, Comic Relief, Sweet Protagonist |
| offer | Evil Villain, Comic Relief, Sweet Protagonist |
And the user "test3" signs up for "all_matching3" with the following prompts
| type | characters |
| request | Comic Relief |
| offer | Shy Friend, Sweet Protagonist, Comic Relief |
When potential matches are generated for "all_matching3"
Then the potential matches for "all_matching3" should be
| offer | request |
| test2 | test3 |
Scenario: Exchange with ALL and Any.
Given I create the gift exchange "all_and_any4" with the following options
| value | minimum | maximum | match |
| prompts | 1 | 1 | 1 |
| characters | 1 | 4 | -1 |
And the user "test1" signs up for "all_and_any4" with the following prompts
| type | characters |
| request | Evil Villain, Shy Friend |
| offer | any |
And the user "test2" signs up for "all_and_any4" with the following prompts
| type | characters |
| request | Evil Villain, Comic Relief, Sweet Protagonist |
| offer | Evil Villain, Comic Relief, Sweet Protagonist |
And the user "test3" signs up for "all_and_any4" with the following prompts
| type | characters |
| request | Comic Relief |
| offer | Shy Friend, Sweet Protagonist, Comic Relief |
And the user "test4" signs up for "all_and_any4" with the following prompts
| type | characters |
| request | any |
| offer | Shy Friend, Sweet Protagonist, Comic Relief |
When potential matches are generated for "all_and_any4"
Then the potential matches for "all_and_any4" should be
| offer | request |
| test1 | test2 |
| test1 | test3 |
| test2 | test3 |
| test1 | test4 |
| test2 | test4 |
| test3 | test4 |
| test4 | test3 |
Scenario: Exchange with freeform restrictions.
Given I create the gift exchange "freeform4" with the following options
| value | minimum | maximum | match | unique |
| prompts | 1 | 2 | 1 | n/a |
| characters | 1 | 2 | -1 | no |
| freeforms | 1 | 2 | 1 | no |
And the user "test1" signs up for "freeform4" with the following prompts
| type | characters | freeforms |
| request | Evil Villain | Fic |
| request | Evil Villain, Sweet Protagonist | Fic, Art |
| offer | Evil Villain, Sweet Protagonist | Fic |
And the user "test2" signs up for "freeform4" with the following prompts
| type | characters | freeforms |
| request | Comic Relief | Fic |
| request | Woobie of Choice | Art |
| offer | any | Art |
And the user "test3" signs up for "freeform4" with the following prompts
| type | characters | freeforms |
| request | Sweet Protagonist | Art, Fic |
| request | Evil Villain, Anti-Villain | Art |
| offer | Evil Villain, Anti-Villain | Fic |
And the user "test4" signs up for "freeform4" with the following prompts
| type | characters | freeforms |
| request | Sweet Protagonist | Fic |
| offer | Comic Relief, Sweet Protagonist | Fic |
When potential matches are generated for "freeform4"
Then the potential matches for "freeform4" should be
| offer | request |
| test1 | test3 |
| test1 | test4 |
| test2 | test1 |
| test2 | test3 |
| test3 | test1 |
| test4 | test2 |
| test4 | test3 |
Scenario: Multi-fandom exchange with optional tags.
Given I create the gift exchange "optional3" with the following options
| value | minimum | maximum | match | optional | any |
| prompts | 2 | 2 | 1 | n/a | n/a |
| fandoms | 1 | 1 | 1 | yes | no |
| characters | 1 | 1 | 1 | yes | yes |
And the user "bookfan" signs up for "optional3" with the following prompts
| type | fandoms | characters | optional fandoms |
| request | Out-of-Print Book | Rare Woobie | |
| request | Rare Book | Obscure Character | |
| offer | Out-of-Print Book | any | Rare Book |
| offer | Popular Book | any | |
And the user "showfan" signs up for "optional3" with the following prompts
| type | fandoms | characters | optional fandoms |
| request | 80s Cop Show | Badass Partner | |
| request | 90s Fantasy Show | Witty Protagonist | |
| offer | 80s Cop Show | Badass Partner | |
| offer | 90s Fantasy Show | any | 00s SciFi Show |
And the user "mixed" signs up for "optional3" with the following prompts
| type | fandoms | characters | optional fandoms |
| request | Rare Book | Fandom Darling | |
| request | 00s SciFi Show | Bounty Hunter | |
| offer | Popular Book | any | Rare Book |
| offer | 10s Drama Show | any | 90s Fantasy Show |
When potential matches are generated for "optional3"
Then the potential matches for "optional3" should be
| offer | request |
| mixed | bookfan |
| mixed | showfan |
| bookfan | mixed |
| showfan | mixed |
Scenario: Exchange with optional tags and restrictions on a different type.
Given I create the gift exchange "optional4" with the following options
| value | minimum | maximum | match | optional | any | unique |
| prompts | 1 | 3 | 1 | n/a | n/a | n/a |
| characters | 1 | 1 | 1 | yes | no | no |
| freeforms | 1 | 1 | 1 | no | no | yes |
And the user "test1" signs up for "optional4" with the following prompts
| type | character | optional characters | freeform |
| request | Warlock | | Fic |
| request | Warlock | | Art |
| offer | Warlock | Witch, Magician | Fic |
And the user "test2" signs up for "optional4" with the following prompts
| type | character | optional characters | freeform |
| request | Magician | Headologist | Art |
| offer | Magician | Headologist, Warlock | Art |
And the user "test3" signs up for "optional4" with the following prompts
| type | character | optional characters | freeform |
| request | Magician | | Fic |
| request | Magician | | Art |
| request | Magician | | Vid |
| offer | Magician | | Fic |
| offer | Magician | | Art |
| offer | Magician | | Vid |
And the user "test4" signs up for "optional4" with the following prompts
| type | character | optional characters | freeform |
| request | Headologist | Summoner, Witch | Vid |
| offer | Headologist | Summoner, Witch | Art |
| offer | Headologist | Summoner, Witch | Vid |
When potential matches are generated for "optional4"
Then the potential matches for "optional4" should be
| offer | request |
| test2 | test1 |
| test3 | test2 |
| test1 | test3 |
| test2 | test3 |
| test4 | test2 |