@@ -263,6 +263,47 @@ def test_approved_plugin_should_not_show_in_feedback_received_list(self):
263263 []
264264 )
265265
266+ def test_plugin_with_older_approved_version_shows_in_feedback_received_list (self ):
267+ """Plugin should appear if its latest version is unapproved, even if an older one is approved."""
268+ self .version_1 .approved = True
269+ self .version_1 .save ()
270+
271+ newer_version = PluginVersion .objects .create (
272+ plugin = self .plugin_1 ,
273+ created_by = self .creator ,
274+ min_qg_version = "0.0.0" ,
275+ max_qg_version = "99.99.99" ,
276+ version = "0.2" ,
277+ approved = False ,
278+ external_deps = "test"
279+ )
280+ PluginVersionFeedback .objects .create (
281+ version = newer_version ,
282+ reviewer = self .staff ,
283+ task = "feedback on newer version"
284+ )
285+
286+ self .client .force_login (user = self .staff )
287+ response = self .client .get (self .url )
288+ self .assertIn (self .plugin_1 , response .context ['object_list' ])
289+
290+ def test_plugin_with_latest_version_approved_does_not_show_in_feedback_received_list (self ):
291+ """Plugin should not appear if its latest version is approved, even if an older one is unapproved."""
292+ PluginVersion .objects .create (
293+ plugin = self .plugin_1 ,
294+ created_by = self .creator ,
295+ min_qg_version = "0.0.0" ,
296+ max_qg_version = "99.99.99" ,
297+ version = "0.2" ,
298+ approved = True ,
299+ external_deps = "test"
300+ )
301+
302+ self .client .force_login (user = self .staff )
303+ response = self .client .get (self .url )
304+ self .assertNotIn (self .plugin_1 , response .context ['object_list' ])
305+
306+
266307
267308class TestPluginFeedbackPendingList (SetupMixin , TestCase ):
268309 fixtures = ["fixtures/auth.json" ]
@@ -304,6 +345,43 @@ def test_staff_should_see_plugin_feedback_pending_list(self):
304345 list (response .context ['object_list' ]),
305346 []
306347 )
348+ def test_plugin_with_older_approved_version_shows_in_feedback_pending_list (self ):
349+ """Plugin should appear if its latest version is unapproved and has no feedback,
350+ even if an older version is approved."""
351+ self .version_2 .approved = True
352+ self .version_2 .save ()
353+
354+ PluginVersion .objects .create (
355+ plugin = self .plugin_2 ,
356+ created_by = self .creator ,
357+ min_qg_version = "0.0.0" ,
358+ max_qg_version = "99.99.99" ,
359+ version = "2.1" ,
360+ approved = False ,
361+ external_deps = "test"
362+ )
363+
364+ self .client .force_login (user = self .staff )
365+ response = self .client .get (self .url )
366+ self .assertIn (self .plugin_2 , response .context ['object_list' ])
367+
368+
369+ def test_plugin_with_latest_version_approved_does_not_show_in_feedback_pending_list (self ):
370+ """Plugin should not appear if its latest version is approved,
371+ even if an older one is unapproved."""
372+ PluginVersion .objects .create (
373+ plugin = self .plugin_2 ,
374+ created_by = self .creator ,
375+ min_qg_version = "0.0.0" ,
376+ max_qg_version = "99.99.99" ,
377+ version = "2.1" ,
378+ approved = True ,
379+ external_deps = "test"
380+ )
381+
382+ self .client .force_login (user = self .staff )
383+ response = self .client .get (self .url )
384+ self .assertNotIn (self .plugin_2 , response .context ['object_list' ])
307385
308386
309387class TestCreateVersionFeedback (SetupMixin , TestCase ):
0 commit comments