Story 903: Set new email contact preferences

We join Team Y, who is having a Product Backlog Grooming session, a few days before the next sprint.

Product Owner: "This next story involves us changing the user's email contact preferences. We used to only allow two choices -- essentially opt-in or opt-out, but now we want to expand that to be multiple choices. The choices are 'Get emails about our specials once a month', 'Get emails about our specials once a week', 'Get daily email specials' and 'Please do not send me any money saving specials.' "
Programmer One: "So you just want us to change the options to be the new ones?"
Product Owner: "Yes."
Programmer One: "Ok, what do we do about the current settings? For ones that are already opted-in, do we just default them to the monthly special choice?"
Product Owner: "No, sorry I didn't mention this before. We would like folks to be prompted with a new choice when they log in and not be allowed to successfully log in without making a choice."
Programmer One: "Oh, that's different than what I was thinking."
Product Owner: "Yeah, we thought about doing it the way you suggested, but the laws and the internet press on these things are very sticky, so we want to get an explicit user choice."
Tester One: "Ok, so what will the default option be?"
Product Owner: "There we have some more flexibility -- let's set the default to the weekly email, unless they are currently opted out, and then default to the opt out option"
Programmer Two: "You mean the one that says 'Please do not send me any money saving specials' ?
Product Owner: "Yep"
Programmer Three(a comedian): "I love the way you worded the opt out option"
Product Owner: "Yep, we were pretty proud of that too!" (all laugh)
Programmer Two: "So we need to maintain the old settings too for anyone who hasn't yet changed their preferences, right?"
Product Owner: "Yes, but all you have to do is tell the email marketing software team where the new settings are in the database and they'll just read it from there. Their email system will automatically detect the settings and send the emails as appropriate."
Programmer One: " Wow, that's easy."
Product Owner: "You know me, always trying to make the stories simple, right?"<facetiously>
All: "Yeah, right!"<facetiously>

Possible Acceptance Tests


Bullet Points

  • Login, can't finish login without making choice.
  • Choices: monthly, weekly, daily, opt out
  • Default: weekly unless already opted out -- then "Please do not..."
  • Save option to db and tell email marketing team where to look.
  • Assumption: Those who have already chosen option don't get the login display any more.

"Test that..."

AT-1. Test that a user cannot successfully log in to the site without selecting a new email contact choice.
AT-2. Test that users who have already made the choice are not shown the choice again.
AT-3. Test that the following choices are present(Confirm exact language with PO):
  • monthly
  • weekly
  • daily
  • opt out
AT-4. Test that, if a user's previous option was "opt-in", the defaulted new option is "weekly"
AT-5. Test that, if a user's previous option was "opt-out", the defaulted new option is the opted out option.
AT-6. Test that the new option is saved to the db.
AT-7. Test that our team has told the email marketing team where the new options are stored.

Mix and match

AT-1. Test that a user cannot successfully log in to the site without selecting a new email contact choice.
AT-2. Test that our team has told the email marketing team where the new options are stored.
AT-3. Test that the system behaves as follows: (SBE-Conceptual)
Already made the choice ?
Previous option ?
Expected Defaulted Option
User submits new option?
Expected previous
option in Db
Expected new
option code in Db
Y
n/a
n/a
n/a
null
one of [10,20,30,40]
N
opt-in
weekly
Y - weekly
null
20
N
opt-out
opt-out
Y - opt-out
null
40
N
opt-in
weekly
Y - monthly
null
10
N
opt-out
opt-out
Y - daily
null
30
N
opt-in
weekly
No - cancels out
previous selection
n/a