Ejemplo n.º 1
0
    def test_form_validity(self):
        """
        Test that SearchForm is valid when we expect: if search is empty or has more than 2 characters. It should also
        be valid if search_in is empty, but not if it has a bad value.
        """

        # These fixtures are a mini suite of tuples, in the form (valid, data dict)
        fixtures = (
            (True, {}),
            (False, {
                'search': 'ab'
            }),
            (True, {
                'search': 'abc'
            }),
            (True, {
                'search': 'abc',
                'search_in': 'title'
            }),
            (True, {
                'search': 'abc',
                'search_in': 'contributor'
            }),
            (False, {
                'search': 'abc',
                'search_in': 'bad'
            }),
        )

        for expected, form_data in fixtures:
            sf = SearchForm(form_data)
            self.assertEquals(sf.is_valid(), expected)
Ejemplo n.º 2
0
def search_product(request):
    form = SearchForm()
    result = {}
    # if request.method == 'POST':
    # Attempt to grab information from the raw form information.
    # Note that we make use of both UserForm and UserProfileForm.
    search_form = SearchForm(data=request.POST)
    # if search_form.is_valid():

    query = request.GET['name']
    print(query)

    try:
        result = Product.objects.filter(name__istartswith=query)
        print(query)
        print(result)

        return render(request, 'reviews/results.html', {
            'form': form,
            'result': result,
            'query': query
        })

    except:
        return HttpResponseRedirect('/reviews/')

    return render(request, 'reviews/results.html', {'form': form})
Ejemplo n.º 3
0
    def test_book_search_title(self, mock_search_form_init, mock_render):
        """The book search view should render with title search results when searching and no search_in is provided."""
        self.load_csv()

        mock_request = mock.MagicMock(name='request', spec=HttpRequest)

        mock_request.GET = {'search': 'keras'}

        # this makes it easier to use assert_calls_with since we know what the 'form' item is
        mock_search_form_init.return_value = SearchForm(mock_request.GET)

        resp = book_search(mock_request)

        self.assertEquals(resp, mock_render.return_value)

        mock_search_form_init.assert_called_with(mock_request.GET)
        self.assertEquals(mock_render.call_count, 1)

        self.assertEquals(mock_render.call_args[0][0], mock_request)
        self.assertEquals(mock_render.call_args[0][1],
                          'reviews/search-results.html')
        self.assertEquals(mock_render.call_args[0][2]['form'],
                          mock_search_form_init.return_value)
        self.assertEquals(mock_render.call_args[0][2]['search_text'], 'keras')

        self.assertEquals(len(mock_render.call_args[0][2]['books']), 1)
        for book in mock_render.call_args[0][2]['books']:
            self.assertEquals(book.title, 'Advanced Deep Learning with Keras')
Ejemplo n.º 4
0
    def test_book_search_contributor(self, mock_search_form_init, mock_render):
        """The book search view should render with contributor name search results when search_in is contributor."""
        self.load_csv()

        mock_request = mock.MagicMock(name='request', spec=HttpRequest)

        mock_request.GET = {'search': 'king', 'search_in': 'contributor'}

        # this makes it easier to use assert_calls_with since we know what the 'form' item is
        mock_search_form_init.return_value = SearchForm(mock_request.GET)

        resp = book_search(mock_request)

        self.assertEquals(resp, mock_render.return_value)

        mock_search_form_init.assert_called_with(mock_request.GET)
        self.assertEquals(mock_render.call_count, 1)

        self.assertEquals(mock_render.call_args[0][0], mock_request)
        self.assertEquals(mock_render.call_args[0][1],
                          'reviews/search-results.html')
        self.assertEquals(mock_render.call_args[0][2]['form'],
                          mock_search_form_init.return_value)
        self.assertEquals(mock_render.call_args[0][2]['search_text'], 'king')

        self.assertEquals(len(mock_render.call_args[0][2]['books']), 1)
        for book in mock_render.call_args[0][2]['books']:
            self.assertEquals(book.title, 'The Talisman')
Ejemplo n.º 5
0
    def test_search_form_fields(self):
        """Test that the SearchForm is defined with the correct fields."""
        sf = SearchForm()
        self.assertEquals(len(sf.fields), 2)
        self.assertIsInstance(sf.fields['search'], forms.CharField)
        self.assertIsInstance(sf.fields['search_in'], forms.ChoiceField)
        self.assertEquals(sf.fields['search_in'].choices[0][0], 'title')
        self.assertEquals(sf.fields['search_in'].choices[0][1], 'Title')

        self.assertEquals(sf.fields['search_in'].choices[1][0], 'contributor')
        self.assertEquals(sf.fields['search_in'].choices[1][1], 'Contributor')