def test_similar(self, render): """ List of similar ideas should make sense. """ class Mock: pass with patch("idea.views.more_like_text") as mlt: backend.SearchBackend().clear() user = random_user() state = models.State.objects.get(name="Active") similar1 = models.Idea(creator=user, title="airplanes", state=state, text="Title is enough said.") similar1.save() similar2 = models.Idea(creator=user, title="exexex", state=state, text="I, too, love submarines.") similar2.save() models.Idea(creator=user, title="AAAAAA", state=state, text="BBBBBB").save() m1, m2 = Mock(), Mock() m1.object = similar1 m2.object = similar2 mlt.return_value = [m1, m2] views.add_idea(mock_req("/?idea_title=" + "Airplanes%20and%20submarines")) context = render.call_args[0][2] self.assertTrue("similar" in context) self.assertEqual(2, len(context["similar"])) self.assertEqual(set(context["similar"]), set([similar1, similar2]))
def test_similar(self, render): """ List of similar ideas should make sense. """ class Mock(): pass with patch('idea.views.more_like_text') as mlt: backend = connections['default'].get_backend() backend.clear() user = random_user() state = models.State.objects.get(name='Active') similar1 = models.Idea(creator=user, title='airplanes', state=state, text="Title is enough said.") similar1.save() similar2 = models.Idea(creator=user, title='exexex', state=state, text="I, too, love submarines.") similar2.save() models.Idea(creator=user, title='AAAAAA', state=state, text='BBBBBB').save() m1, m2 = Mock(), Mock() m1.object = similar1 m2.object = similar2 mlt.return_value = [m1, m2] views.add_idea(mock_req('/?idea_title=' + 'Airplanes%20and%20submarines')) context = render.call_args[0][2] self.assertTrue('similar' in context) self.assertEqual(2, len(context['similar'])) self.assertEqual(set(context['similar']), set([similar1, similar2]))
def test_add_idea_with_anonymous_option(self, render): """ Verify that the anonymous field auto-populates only for ideas where banner is preset and the banner is private """ banner1 = models.Banner(id=1, title="AAAA", text="text1", start_date=date.today(), is_private=True) banner1.save() banner2 = models.Banner(id=2, title="BBBB", text="text2", start_date=date.today()) banner2.save() views.add_idea(mock_req(), banner1.id) context = render.call_args[0][2] self.assertTrue(isinstance(context['form'], PrivateIdeaForm)) self.assertIn("is_anonymous", context['form'].fields) self.assertNotIn("is_anonymous", context['form'].initial) views.add_idea(mock_req(), banner2.id) context = render.call_args[0][2] self.assertTrue(isinstance(context['form'], IdeaForm)) self.assertNotIn("is_anonymous", context['form'].fields) self.assertNotIn("is_anonymous", context['form'].initial)
def test_add_idea_title(self): """ Check that adding a new idea allows title to be immediately searchable. """ req = RequestFactory().post('/', {'title': 'example_title'}) req.user = random_user() views.add_idea(req) results = backend.SearchBackend().search('example_title') self.assertEqual(1, results['hits'])
def test_add_idea_tag(self): """ Check that adding a new idea allows the associated tag to be immediately searchable. """ req = RequestFactory().post('/', { 'title':'title', 'summary': 'test summary', 'text': 'test text', 'tags': 'example_tag' }) req.user = random_user() views.add_idea(req) results = self.backend.search('example_tag') self.assertEqual(1, results['hits'])
def test_add_idea_with_banner(self, render): """ Verify that the banner field auto-populates properly """ banner1 = models.Banner(id=1, title="AAAA", text="text1", start_date=date.today()) banner1.save() banner2 = models.Banner(id=2, title="BBBB", text="text2", start_date=date.today(), end_date=date.today() + timedelta(days=1)) banner2.save() banner3 = models.Banner(id=3, title="BBBB", text="text3", start_date=date.today() - timedelta(days=2), end_date=date.today() - timedelta(days=1)) banner3.save() views.add_idea(mock_req()) context = render.call_args[0][2] self.assertTrue('form' in context) self.assertTrue(isinstance(context['form'], IdeaForm)) banner_field = context['form'].fields['banner'] selected = context['form'].initial['banner'] self.assertEqual(None, selected) self.assertEqual(context['form'].fields['banner'].widget.choices.field.empty_label, 'Select') self.assertIn(banner1, banner_field._queryset) self.assertIn(banner2, banner_field._queryset) self.assertNotIn(banner3, banner_field._queryset) views.add_idea(mock_req(), banner1.id) context = render.call_args[0][2] banner_field = context['form'].fields['banner'] selected = context['form'].initial['banner'] self.assertEqual(banner1.id, selected) self.assertEqual(context['form'].fields['banner'].widget.choices.field.empty_label, 'Select') self.assertIn(banner1, banner_field._queryset) self.assertIn(banner2, banner_field._queryset) self.assertNotIn(banner3, banner_field._queryset) views.add_idea(mock_req(), banner2.id) context = render.call_args[0][2] banner_field = context['form'].fields['banner'] selected = context['form'].initial['banner'] self.assertEqual(banner2.id, selected) self.assertEqual(context['form'].fields['banner'].widget.choices.field.empty_label, 'Select') self.assertIn(banner1, banner_field._queryset) self.assertIn(banner2, banner_field._queryset) self.assertNotIn(banner3, banner_field._queryset) views.add_idea(mock_req(), banner3.id) context = render.call_args[0][2] banner_field = context['form'].fields['banner'] selected = context['form'].initial['banner'] self.assertEqual(None, selected) self.assertEqual(context['form'].fields['banner'].widget.choices.field.empty_label, 'Select') self.assertIn(banner1, banner_field._queryset) self.assertIn(banner2, banner_field._queryset) self.assertNotIn(banner3, banner_field._queryset)
def test_add_idea_with_no_banner(self, render): """ Verify that the banner field disappears if no current challenge """ banner1 = models.Banner(id=1, title="AAAA", text="text1", start_date=date.today() - timedelta(days=2), end_date=date.today() - timedelta(days=1)) banner1.save() banner2 = models.Banner(id=2, title="BBBB", text="text2", start_date=date.today() + timedelta(days=1)) banner2.save() views.add_idea(mock_req()) context = render.call_args[0][2] self.assertTrue('form' in context) self.assertTrue(isinstance(context['form'], IdeaForm)) self.assertNotIn('banner', context['form'].fields.keys())
def test_similar(self, render): """ List of similar ideas should make sense. """ class Mock(): pass with patch('idea.views.more_like_text') as mlt: backend.SearchBackend().clear() user = random_user() state = models.State.objects.get(name='Active') similar1 = models.Idea(creator=user, title='airplanes', state=state, text="Title is enough said.") similar1.save() similar2 = models.Idea(creator=user, title='exexex', state=state, text="I, too, love submarines.") similar2.save() models.Idea(creator=user, title='AAAAAA', state=state, text='BBBBBB').save() m1, m2 = Mock(), Mock() m1.object = similar1 m2.object = similar2 mlt.return_value = [m1, m2] views.add_idea( mock_req('/?idea_title=' + 'Airplanes%20and%20submarines')) context = render.call_args[0][2] self.assertTrue('similar' in context) self.assertEqual(2, len(context['similar'])) self.assertEqual(set(context['similar']), set([similar1, similar2]))
def test_add_idea_with_private_banner(self, render): """ Verify that the private banner field auto-populates properly """ banner1 = models.Banner(id=1, title="AAAA", text="text1", start_date=date.today(), is_private=True) banner1.save() banner2 = models.Banner(id=2, title="BBBB", text="text2", start_date=date.today()) banner2.save() views.add_idea(mock_req()) context = render.call_args[0][2] self.assertTrue('form' in context) self.assertTrue(isinstance(context['form'], IdeaForm)) self.assertFalse(isinstance(context['form'], PrivateIdeaForm)) banner_field = context['form'].fields['banner'] selected = context['form'].initial['banner'] self.assertEqual(None, selected) self.assertEqual( context['form'].fields['banner'].widget.choices.field.empty_label, 'Select') self.assertNotIn(banner1, banner_field._queryset) self.assertIn(banner2, banner_field._queryset) views.add_idea(mock_req(), banner1.id) context = render.call_args[0][2] self.assertTrue(isinstance(context['form'], PrivateIdeaForm)) banner_field = context['form'].fields['banner'] selected = context['form'].initial['banner'] self.assertEqual(banner1.id, selected) self.assertEqual( context['form'].fields['banner'].widget.choices.field.empty_label, None) self.assertIn(banner1, banner_field._queryset) self.assertNotIn(banner2, banner_field._queryset) views.add_idea(mock_req(), banner2.id) context = render.call_args[0][2] self.assertTrue(isinstance(context['form'], IdeaForm)) self.assertFalse(isinstance(context['form'], PrivateIdeaForm)) banner_field = context['form'].fields['banner'] selected = context['form'].initial['banner'] self.assertEqual( context['form'].fields['banner'].widget.choices.field.empty_label, 'Select') self.assertEqual(banner2.id, selected) self.assertNotIn(banner1, banner_field._queryset) self.assertIn(banner2, banner_field._queryset)