@@ -206,6 +206,72 @@ def test_pagination(self):
206206 )
207207
208208
209+ class TestUpdatePost (DataTestCase ):
210+ def test_staff_user_required (self ):
211+ user = User .objects .create_user (username = "basic" )
212+ self .client .force_login (user )
213+ url = reverse (
214+ "newsletter:update_post" , kwargs = {"slug" : self .data .private_post .slug }
215+ )
216+ response = self .client .post (url )
217+ self .assertRedirects (response , f"{ settings .LOGIN_URL } ?next={ url } " )
218+
219+ def test_get (self ):
220+ self .client .force_login (self .user )
221+ url = reverse (
222+ "newsletter:update_post" , kwargs = {"slug" : self .data .private_post .slug }
223+ )
224+ response = self .client .get (url )
225+ self .assertTemplateUsed (response , "staff/post_form.html" )
226+
227+ def test_invalid (self ):
228+ self .client .force_login (self .user )
229+ url = reverse (
230+ "newsletter:update_post" , kwargs = {"slug" : self .data .private_post .slug }
231+ )
232+ response = self .client .post (url , data = {})
233+ self .assertTemplateUsed (response , "staff/post_form.html" )
234+ self .assertInHTML (
235+ "<li>This field is required.</li>" ,
236+ response .content .decode ("utf-8" ),
237+ )
238+
239+ def test_update (self ):
240+ post = Post .objects .create (
241+ author = self .data .author ,
242+ title = "Test Update" ,
243+ slug = "test-update" ,
244+ content = "c" ,
245+ )
246+ self .client .force_login (self .user )
247+
248+ data = {
249+ "title" : "Test Update2" ,
250+ "slug" : "test-update2" ,
251+ "categories" : [self .data .career .id ],
252+ "content" : "content" ,
253+ "summary" : "summary" ,
254+ "is_public" : False ,
255+ "is_published" : True ,
256+ "open_graph_description" : "description" ,
257+ }
258+ response = self .client .post (
259+ reverse ("newsletter:update_post" , kwargs = {"slug" : post .slug }), data = data
260+ )
261+ self .assertRedirects (
262+ response , reverse ("newsletter:update_post" , kwargs = {"slug" : "test-update2" })
263+ )
264+ post .refresh_from_db ()
265+ self .assertEqual (post .slug , "test-update2" )
266+ self .assertEqual (post .title , "Test Update2" )
267+ self .assertEqual (post .categories .get (), self .data .career )
268+ self .assertEqual (post .content , "content" )
269+ self .assertEqual (post .summary , "summary" )
270+ self .assertEqual (post .open_graph_description , "description" )
271+ self .assertFalse (post .is_public )
272+ self .assertTrue (post .is_published )
273+
274+
209275class TestTogglePostPrivacy (DataTestCase ):
210276 def test_staff_user_required (self ):
211277 user = User .objects .create_user (username = "basic" )
@@ -240,12 +306,68 @@ def test_toggle(self):
240306 self .assertFalse (post .is_public )
241307
242308 # Toggle the property back and verify the redirect to next.
243- response = self .client .post (url + f"?next={ reverse ('newsletter:landing' )} " )
244- self .assertRedirects (response , reverse ("newsletter:landing" ))
309+ response = self .client .post (
310+ url
311+ + f"?next={ reverse ('newsletter:update_post' , kwargs = {'slug' : post .slug })} "
312+ )
313+ self .assertRedirects (
314+ response , reverse ("newsletter:update_post" , kwargs = {"slug" : post .slug })
315+ )
245316 post .refresh_from_db ()
246317 self .assertTrue (post .is_public )
247318
248319
320+ class TestCreatePost (DataTestCase ):
321+ def test_staff_user_required (self ):
322+ user = User .objects .create_user (username = "basic" )
323+ self .client .force_login (user )
324+ url = reverse ("newsletter:create_post" )
325+ response = self .client .post (url )
326+ self .assertRedirects (response , f"{ settings .LOGIN_URL } ?next={ url } " )
327+
328+ def test_get (self ):
329+ self .client .force_login (self .user )
330+ url = reverse ("newsletter:create_post" )
331+ response = self .client .get (url )
332+ self .assertTemplateUsed (response , "staff/post_form.html" )
333+
334+ def test_invalid (self ):
335+ self .client .force_login (self .user )
336+ response = self .client .post (reverse ("newsletter:create_post" ), data = {})
337+ self .assertTemplateUsed (response , "staff/post_form.html" )
338+ self .assertInHTML (
339+ "<li>This field is required.</li>" ,
340+ response .content .decode ("utf-8" ),
341+ )
342+
343+ def test_create (self ):
344+ self .client .force_login (self .user )
345+
346+ data = {
347+ "title" : "Test Create" ,
348+ "slug" : "test-create" ,
349+ "categories" : [self .data .career .id ],
350+ "content" : "content" ,
351+ "summary" : "summary" ,
352+ "is_public" : False ,
353+ "is_published" : True ,
354+ "open_graph_description" : "description" ,
355+ }
356+ response = self .client .post (reverse ("newsletter:create_post" ), data = data )
357+
358+ self .assertRedirects (
359+ response , reverse ("newsletter:update_post" , kwargs = {"slug" : "test-create" })
360+ )
361+ post = Post .objects .get (slug = "test-create" )
362+ self .assertEqual (post .title , "Test Create" )
363+ self .assertEqual (post .categories .get (), self .data .career )
364+ self .assertEqual (post .content , "content" )
365+ self .assertEqual (post .summary , "summary" )
366+ self .assertEqual (post .open_graph_description , "description" )
367+ self .assertFalse (post .is_public )
368+ self .assertTrue (post .is_published )
369+
370+
249371class TestUpdateSubscription (DataTestCase ):
250372 def setUp (self ) -> None :
251373 super ().setUp ()
0 commit comments