11import pytest
22from django .urls import reverse
3+ from model_mommy import mommy
34
45from pythonpro .dashboard .models import TopicInteraction
56
67
78@pytest .fixture
8- def resp (client_with_lead , topic , logged_user ):
9+ def remove_tags_mock (mocker ):
10+ return mocker .patch ('pythonpro.dashboard.views.remove_tags' )
11+
12+
13+ @pytest .fixture
14+ def resp (client_with_lead , topic , logged_user , remove_tags_mock ):
15+ return client_with_lead .post (
16+ reverse ('dashboard:topic_interaction' ),
17+ data = {
18+ 'topic' : topic .id ,
19+ 'topic_duration' : 200 ,
20+ 'total_watched_time' : 120 ,
21+ 'max_watched_time' : 60
22+ },
23+ secure = True
24+ )
25+
26+
27+ @pytest .fixture
28+ def resp_with_interaction (client_with_lead , topic , logged_user , remove_tags_mock ):
29+ mommy .make (TopicInteraction , user = logged_user , topic = topic )
930 return client_with_lead .post (
1031 reverse ('dashboard:topic_interaction' ),
1132 data = {
@@ -18,6 +39,14 @@ def resp(client_with_lead, topic, logged_user):
1839 )
1940
2041
42+ def test_user_first_video (resp , remove_tags_mock , logged_user ):
43+ remove_tags_mock .assert_called_once_with (logged_user .email , 'never-watched-video' )
44+
45+
46+ def test_user_not_first_video (resp_with_interaction , remove_tags_mock ):
47+ assert remove_tags_mock .call_count == 0
48+
49+
2150def test_topic_interaction_status_code (resp ):
2251 return resp .status_code == 200
2352
0 commit comments