8

Optimize query for the segment visits

This commit is contained in:
Michael van Tellingen
2017-05-31 16:33:24 +02:00
committed by Michael van Tellingen
parent 361f0b1700
commit 63d5de9803
3 changed files with 65 additions and 15 deletions

View File

@@ -1,11 +1,11 @@
import pytest
from wagtail_personalisation import adapters
from tests.factories.segment import SegmentFactory
from wagtail_personalisation import adapters
@pytest.mark.django_db
def test_get_segments(rf, monkeypatch):
def test_get_segments(rf):
request = rf.get('/')
adapter = adapters.SessionSegmentsAdapter(request)
@@ -21,7 +21,7 @@ def test_get_segments(rf, monkeypatch):
@pytest.mark.django_db
def test_get_segment_by_id(rf, monkeypatch):
def test_get_segment_by_id(rf):
request = rf.get('/')
adapter = adapters.SessionSegmentsAdapter(request)
@@ -36,7 +36,7 @@ def test_get_segment_by_id(rf, monkeypatch):
@pytest.mark.django_db
def test_refresh_removes_disabled(rf, monkeypatch):
def test_refresh_removes_disabled(rf):
request = rf.get('/')
adapter = adapters.SessionSegmentsAdapter(request)
@@ -52,3 +52,51 @@ def test_refresh_removes_disabled(rf, monkeypatch):
adapter.refresh()
assert adapter.get_segments() == [segment_2]
@pytest.mark.django_db
def test_add_page_visit(rf, site):
request = rf.get('/')
adapter = adapters.SessionSegmentsAdapter(request)
adapter.add_page_visit(site.root_page)
assert request.session['visit_count'][0]['count'] == 1
adapter.add_page_visit(site.root_page)
assert request.session['visit_count'][0]['count'] == 2
assert adapter.get_visit_count() == 2
@pytest.mark.django_db
def test_update_visit_count(rf, site):
request = rf.get('/')
adapter = adapters.SessionSegmentsAdapter(request)
segment_1 = SegmentFactory(name='segment-1', persistent=True, visit_count=0)
segment_2 = SegmentFactory(name='segment-2', persistent=True, visit_count=0)
adapter.set_segments([segment_1, segment_2])
adapter.update_visit_count()
segment_1.refresh_from_db()
segment_2.refresh_from_db()
assert segment_1.visit_count == 1
assert segment_2.visit_count == 1
@pytest.mark.django_db
def test_update_visit_count_deleted_segment(rf, site):
request = rf.get('/')
adapter = adapters.SessionSegmentsAdapter(request)
segment_1 = SegmentFactory(name='segment-1', persistent=True, visit_count=0)
segment_2 = SegmentFactory(name='segment-2', persistent=True, visit_count=0)
adapter.set_segments([segment_1, segment_2])
segment_2.delete()
adapter.update_visit_count()