Chapter 25. The Token Social Bit, the Page Pattern, and an Exercise for the Reader
Are jokes about how “everything has to be social now” slightly old hat? Everything has to be all A/B tested big data get-more-clicks lists of 10 Things This Inspiring Teacher Said That Will Make You Change Your Mind About Blah Blah now…anyway. Lists, be they inspirational or otherwise, are often better shared. Let’s allow our users to collaborate on their lists with other users.
Along the way we’ll improve our FTs by starting to implement something called the Page object pattern.
Then, rather than showing you explicitly what to do, I’m going to let you write your unit tests and application code by yourself. Don’t worry, you won’t be totally on your own! I’ll give an outline of the steps to take, as well as some hints and tips.
An FT with Multiple Users, and addCleanup
Let’s get started—we’ll need two users for this FT:
functional_tests/test_sharing.py (ch22l001)
from
selenium
import
webdriver
from
.base
import
FunctionalTest
def
quit_if_possible
(
browser
):
try
:
browser
.
quit
()
except
:
pass
class
SharingTest
(
FunctionalTest
):
def
test_can_share_a_list_with_another_user
(
self
):
# Edith is a logged-in user
self
.
create_pre_authenticated_session
(
'edith@example.com'
)
edith_browser
=
self
.
browser
self
.
addCleanup
(
lambda
:
quit_if_possible
(
edith_browser
))
# Her friend Oniciferous is also hanging out on the lists site
oni_browser
=
webdriver
.
Firefox
()
self
.
addCleanup
(
lambda
:
quit_if_possible
(
oni_browser
))
Get Test-Driven Development with Python, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.