예제 #1
0
파일: addidea.py 프로젝트: jelukas/idea-box
    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]))
예제 #2
0
    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]))
예제 #3
0
    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)
예제 #4
0
 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'])
예제 #5
0
파일: search.py 프로젝트: dezzie/idea-box
 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'])
예제 #6
0
 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'])
예제 #7
0
    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)
예제 #8
0
    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())
예제 #9
0
    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]))
예제 #10
0
    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())
예제 #11
0
    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)
예제 #12
0
    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)