Skip to content

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'