11from django .test import TestCase
22from rest_framework .test import APIClient
33
4+ from core .services import set_like
5+ from feed .services import create_news_for_model
6+ from feed .tests .helpers import create_vacancy
47from news .tests .helpers import create_news_for , create_project , create_user
58
69
@@ -33,6 +36,69 @@ def test_feed_returns_project_news_as_news_content(self):
3336 self .assertEqual (item ["content" ]["id" ], news .id )
3437 self .assertEqual (item ["content" ]["text" ], "Project feed news" )
3538
39+ def test_feed_returns_project_feed_record_as_project_content (self ):
40+ project = create_project (name = "Feed record project" )
41+ create_news_for_model (project )
42+
43+ response = self .client .get ("/feed/?type=project" )
44+
45+ self .assertEqual (response .status_code , 200 )
46+ item = response .data ["results" ][0 ]
47+ self .assertEqual (item ["type_model" ], "project" )
48+ self .assertEqual (item ["content" ]["id" ], project .id )
49+
50+ def test_feed_returns_vacancy_feed_record_as_vacancy_content (self ):
51+ vacancy = create_vacancy (role = "Backend developer" )
52+
53+ response = self .client .get ("/feed/?type=vacancy" )
54+
55+ self .assertEqual (response .status_code , 200 )
56+ item = response .data ["results" ][0 ]
57+ self .assertEqual (item ["type_model" ], "vacancy" )
58+ self .assertEqual (item ["content" ]["id" ], vacancy .id )
59+ self .assertEqual (item ["content" ]["role" ], "Backend developer" )
60+
61+ def test_feed_excludes_feed_record_for_inactive_vacancy (self ):
62+ vacancy = create_vacancy (role = "Inactive vacancy" , is_active = False )
63+ create_news_for_model (vacancy )
64+
65+ response = self .client .get ("/feed/?type=vacancy" )
66+
67+ self .assertEqual (response .status_code , 200 )
68+ self .assertEqual (response .data ["results" ], [])
69+
70+ def test_feed_excludes_vacancy_feed_record_for_draft_project (self ):
71+ draft_project = create_project (name = "Draft vacancy project" , draft = True )
72+ create_vacancy (project = draft_project , role = "Draft project vacancy" )
73+
74+ response = self .client .get ("/feed/?type=vacancy" )
75+
76+ self .assertEqual (response .status_code , 200 )
77+ self .assertEqual (response .data ["results" ], [])
78+
79+ def test_feed_excludes_vacancy_feed_record_for_private_project (self ):
80+ private_project = create_project (
81+ name = "Private vacancy project" ,
82+ is_public = False ,
83+ )
84+ create_vacancy (project = private_project , role = "Private project vacancy" )
85+
86+ response = self .client .get ("/feed/?type=vacancy" )
87+
88+ self .assertEqual (response .status_code , 200 )
89+ self .assertEqual (response .data ["results" ], [])
90+
91+ def test_feed_marks_news_liked_by_current_user (self ):
92+ news = create_news_for (self .user , text = "Liked user feed news" )
93+ set_like (news , self .user , True )
94+
95+ response = self .client .get ("/feed/?type=news" )
96+
97+ self .assertEqual (response .status_code , 200 )
98+ item = response .data ["results" ][0 ]
99+ self .assertEqual (item ["type_model" ], "news" )
100+ self .assertTrue (item ["content" ]["is_user_liked" ])
101+
36102 def test_feed_excludes_news_for_private_project (self ):
37103 private_project = create_project (name = "Private project" , is_public = False )
38104 create_news_for (private_project , text = "Private project news" )
@@ -41,3 +107,12 @@ def test_feed_excludes_news_for_private_project(self):
41107
42108 self .assertEqual (response .status_code , 200 )
43109 self .assertEqual (response .data ["results" ], [])
110+
111+ def test_feed_excludes_news_for_draft_project (self ):
112+ draft_project = create_project (name = "Draft project" , draft = True )
113+ create_news_for (draft_project , text = "Draft project news" )
114+
115+ response = self .client .get ("/feed/?type=project" )
116+
117+ self .assertEqual (response .status_code , 200 )
118+ self .assertEqual (response .data ["results" ], [])
0 commit comments