~fabricematrat/charmworld/redirect-charm

« back to all changes in this revision

Viewing changes to charmworld/tests/test_search.py

  • Committer: Tarmac
  • Author(s): Brad Crittenden
  • Date: 2014-10-16 14:02:32 UTC
  • mfrom: (517.1.3 bug-1379397)
  • Revision ID: tarmac-20141016140232-dyls640scsvdz0a3
Add 'start' parameter to API search.

The start is the zero-based index into the search results.  It can be used
in conjunction with limit.

https://codereview.appspot.com/158010043/

R=jcsackett. Fixes: https://bugs.launchpad.net/bugs/1379397.

Approved by Juju Gui Bot.

Show diffs side-by-side

added added

removed removed

Lines of Context:
35
35
    IndexMissing,
36
36
    IndexNotReady,
37
37
    InvalidCharmType,
 
38
    InvalidStart,
38
39
    update,
39
40
    NegativeLimit,
40
41
    reindex,
801
802
        result = self.index_client.api_search('charms', {}, None)
802
803
        self.assertEqual(22, len(result))
803
804
 
 
805
    def test_charms_start(self):
 
806
        """Start provides the starting offset for results."""
 
807
        result = self.index_client.api_search(
 
808
            '', {}, None, limit=6, min_score=0, start=0)
 
809
        self.assertEqual(0, len(result))
 
810
        # Make ten charms
 
811
        for i in range(10):
 
812
            self.makeCharm()
 
813
        # Starting at 0, all charms are returned.
 
814
        result = self.index_client.api_search(
 
815
            '', {}, None, min_score=0, start=0)
 
816
        self.assertEqual(10, len(result))
 
817
        # Starting at 1, nine are returned.
 
818
        result = self.index_client.api_search(
 
819
            '', {}, None, min_score=0, start=1)
 
820
        self.assertEqual(9, len(result))
 
821
        # Starting at 9, one is returned.
 
822
        result = self.index_client.api_search(
 
823
            '', {}, None, min_score=0, start=9)
 
824
        self.assertEqual(1, len(result))
 
825
        # Test in combination with limit.
 
826
        # Starting at 0, the limit number are returned.
 
827
        result = self.index_client.api_search(
 
828
            '', {}, None, limit=5, min_score=0, start=0)
 
829
        self.assertEqual(5, len(result))
 
830
        # Starting at 3, the limit number are still returned.
 
831
        result = self.index_client.api_search(
 
832
            '', {}, None, limit=5, min_score=0, start=3)
 
833
        self.assertEqual(5, len(result))
 
834
        # If we start beyond 'limit' point, not all are returned.
 
835
        result = self.index_client.api_search(
 
836
            '', {}, None, limit=5, min_score=0, start=6)
 
837
        self.assertEqual(4, len(result))
 
838
        # Start is zero-based, so asking for start=10 returns no results.
 
839
        result = self.index_client.api_search(
 
840
            '', {}, None, limit=1, min_score=0, start=10)
 
841
        self.assertEqual(0, len(result))
 
842
        with self.assertRaises(InvalidStart):
 
843
            result = self.index_client.api_search(
 
844
                '', {}, None, start=-1, min_score=0)
 
845
 
804
846
    def test_api_search_with_store_error(self):
805
847
        """api_search() does not return charms withs errors by default."""
806
848
        self.makeCharm(name='evil-charm', charm_error=True)