Examples
The examples here are lifted from the visit-generator
pytest files, and are for example use.
Review the functions called, and the sql used to determine if the data went in correct.
test_day_of_journeys¶
def test_day_of_journeys(connection):
# clear tables for journey test
connection.empty_attrib_tables()
non_sale_visitors, sale_visitors = generate_day_of_journeys(connection)
# find sales
query = '''
select count(*) as `sales` from attrib_event_item a
join attrib_product_events b on a.event_id = b.event_id
where b.active = 1 and b.sale = 1
'''
sales = connection.query(query)
assert sales[0]['sales'] == len(sale_visitors)
# find non sales
query = '''
select count(*) as `non_sales` from attrib_visitor x
left join (
# get a list of visitors that have a sale event
select distinct a.visitor_id from attrib_visit a
join attrib_event_item b on b.visit_id = a.id
join attrib_product_events c on b.event_id = c.event_id
where c.active = 1 and c.sale = 1
) y on x.id = y.visitor_id
where y.visitor_id is null
# only return visitors that are not in the subquery
'''
non_sales = connection.query(query)
assert non_sales[0]['non_sales'] == len(non_sale_visitors)
test_visitor_visits¶
def test_visitor_visits(connection):
v = Visitor(VisitDefaults.FIRST_VISIT.value, VisitDefaults.LAST_VISIT.value, account_token=AccountDefaults.TOKEN)
v.create_visit('www.google.com', Pattern.SEO.value, 1)
v.create_visit('www.google.com?gcid=abc1234', Pattern.PPC.value, 2)
v.create_visit('', Pattern.DIRECT.value, 1)
v.insert(connection)
query = '''
select c.name, a.views from attrib_visit a
join attrib_pattern b on a.pattern_id = b.id
join attrib_referer c on b.referer_id = c.id
where a.visitor_id = %s
group by a.id
order by a.first_visit
'''
visits = connection.query(query, (v.id,))
assert visits[0] == {
'name': 'SEO',
'views': 1
}
assert visits[1] == {
'name': 'PPC',
'views': 2
}
assert visits[2] == {
'name': 'Direct',
'views': 1
}
test_visitor_visit_page_event¶
def test_visitor_visit_page_event(connection):
v = Visitor(VisitDefaults.FIRST_VISIT.value, VisitDefaults.LAST_VISIT.value, account_token=AccountDefaults.TOKEN)
v.create_visit('www.google.com', Pattern.SEO.value, 1)\
.create_page(ClientPage.PRODUCTVIEW.value)\
.create_event(ClientEvent.PRODUCTVIEW.value)\
.insert(connection)
query = '''
select c.name from attrib_visit a
join attrib_event_item b on b.visit_id = a.id
join attrib_event c on b.event_id = c.id
where a.visitor_id = %s
'''
events = connection.query(query, (v.id,))
assert events[0]['name'] == 'Product View'
test_visitor_visit_page_event_details¶
def test_visitor_visit_page_event_details(connection):
v = Visitor(VisitDefaults.FIRST_VISIT.value, VisitDefaults.LAST_VISIT.value, account_token=AccountDefaults.TOKEN)
v.create_visit('www.google.com', Pattern.SEO.value, 1)\
.create_page(ClientPage.PRODUCTVIEW.value)\
.create_event(ClientEvent.PRODUCTVIEW.value).page\
.create_event(ClientEvent.ADDTOBASKET.value, revenue=75000)\
.create_event_detail('Red Sofa', 'Sofa', 'sf-rd-1029', price=75000)\
.insert(connection)
query = '''
select c.name, b.revenue, d.* from attrib_visit a
join attrib_event_item b on b.visit_id = a.id
join attrib_event c on b.event_id = c.id
join attrib_event_item_details d on d.event_item_id = b.id
where a.visitor_id = %s
'''
events = connection.query(query, (v.id,))
assert len(events) == 2
assert events[0]['revenue'] == 75000
assert events[1]['sku'] == 'sf-rd-1029'
assert events[1]['price'] == 75000
test_visitor_visit_details_english_config_windows_chrome¶
def test_visitor_visit_details_english_config_windows_chrome(connection):
v = Visitor(VisitDefaults.FIRST_VISIT.value, VisitDefaults.LAST_VISIT.value, account_token=AccountDefaults.TOKEN)
v.create_visit('www.google.com', Pattern.SEO.value, 1)\
.create_visit_detail(UserAgents.WIN10_CHROME.value,location_details=VisitDetailGen().generate_english_detail())\
.insert(connection)
query = '''
select
b.os_family, b.browser_family, b.is_pc,
b.continent_name, b.country_name, b.city_name
from attrib_visit a
join attrib_visit_details b on b.visit_id = a.id
where a.visitor_id = %s
'''
details = connection.query(query, (v.id,))
assert details[0]['is_pc'] == True
assert details[0]['os_family'] == 'Windows'
assert details[0]['browser_family'] == 'Chrome'
assert details[0]['continent_name'] == 'Europe'
assert details[0]['country_name'] == 'England'
assert details[0]['city_name'] == 'Manchester'
def test_visitor_visit_details_welsh_apple_mobile_safari(connection):
v = Visitor(VisitDefaults.FIRST_VISIT.value, VisitDefaults.LAST_VISIT.value, account_token=AccountDefaults.TOKEN)
v.create_visit('www.google.com', Pattern.SEO.value, 1)\
.create_visit_detail(UserAgents.IPHONE_8.value,
continent_name=VisitDetailContinent.EUROPE.value,
country_name=VisitDetailCountry.WALES.value,
city_name=VisitDetailCity.CARDIFF.value)\
.insert(connection)
query = '''
select
b.os_family, b.browser_family, b.is_pc, b.is_mobile,
b.continent_name, b.country_name, b.city_name
from attrib_visit a
join attrib_visit_details b on b.visit_id = a.id
where a.visitor_id = %s
'''
details = connection.query(query, (v.id,))
assert details[0]['is_pc'] == False
assert details[0]['is_mobile'] == True
assert details[0]['os_family'] == 'iOS'
assert details[0]['browser_family'] == 'Mobile Safari'
assert details[0]['continent_name'] == 'Europe'
assert details[0]['country_name'] == 'Wales'
assert details[0]['city_name'] == 'Cardiff'