Beispiel #1
0
    def test_initialization(self):
        """Test whether attributes are initializated"""

        stack = StackExchange(site='stackoverflow',
                              tagged='python',
                              max_questions=1,
                              tag='test')

        self.assertEqual(stack.site, 'stackoverflow')
        self.assertEqual(stack.tagged, 'python')
        self.assertEqual(stack.max_questions, 1)
        self.assertEqual(stack.origin, 'stackoverflow')
        self.assertEqual(stack.tag, 'test')

        # When tag is empty or None it will be set to
        # the value in site
        stack = StackExchange(site='stackoverflow')
        self.assertEqual(stack.site, 'stackoverflow')
        self.assertEqual(stack.origin, 'stackoverflow')
        self.assertEqual(stack.tag, 'stackoverflow')

        stack = StackExchange(site='stackoverflow', tag='')
        self.assertEqual(stack.site, 'stackoverflow')
        self.assertEqual(stack.origin, 'stackoverflow')
        self.assertEqual(stack.tag, 'stackoverflow')
Beispiel #2
0
    def test_fetch(self):
        """Test whether a list of questions is returned"""

        question = read_file('data/stackexchange_question')

        httpretty.register_uri(httpretty.GET,
                               STACKEXCHANGE_QUESTIONS_URL,
                               body=question,
                               status=200)

        stack = StackExchange(site="stackoverflow",
                              tagged="python",
                              token="aaa",
                              max_questions=1)
        questions = [question for question in stack.fetch(from_date=None)]

        self.assertEqual(questions[0]['origin'], 'stackoverflow')
        self.assertEqual(questions[0]['uuid'],
                         '43953bd75d1d4dbedb457059acb4b79fcf6712a8')
        self.assertEqual(questions[0]['updated_on'], 1459975066.0)
        self.assertEqual(questions[0]['category'], 'question')
        self.assertEqual(questions[0]['tag'], 'stackoverflow')

        data = json.loads(question)
        self.assertDictEqual(questions[0]['data'], data['items'][0])
Beispiel #3
0
    def test_fetch_from_cache(self):
        """ Test whether a list of questions is returned from cache """

        question = read_file('data/stackexchange_question')

        httpretty.register_uri(httpretty.GET,
                               STACKEXCHANGE_QUESTIONS_URL,
                               body=question,
                               status=200)

        # First, we fetch the bugs from the server, storing them
        # in a cache
        cache = Cache(self.tmp_path)
        stack = StackExchange(site="stackoverflow",
                              tagged="python",
                              token="aaa",
                              max_questions=1,
                              cache=cache)

        questions = [question for question in stack.fetch(from_date=None)]
        del questions[0]['timestamp']

        # Now, we get the bugs from the cache.
        # The contents should be the same and there won't be
        # any new request to the server
        cache_questions = [
            cache_question for cache_question in stack.fetch_from_cache()
        ]
        del cache_questions[0]['timestamp']

        self.assertEqual(cache_questions, questions)
Beispiel #4
0
    def test_fetch_from_non_set_cache(self):
        """Test if a error is raised when the cache was not set"""

        stack = StackExchange(site="stackoverflow", tagged="python", token="aaa", max_questions=1)

        with self.assertRaises(CacheError):
            _ = [cache_question for cache_question in stack.fetch_from_cache()]
Beispiel #5
0
    def test_fetch_from_empty_cache(self):
        """Test if there are not any questions returned when the cache is empty"""

        cache = Cache(self.tmp_path)
        stack = StackExchange(site="stackoverflow", tagged="python", token="aaa", max_questions=1, cache=cache)

        cache_questions = [cache_question for cache_question in stack.fetch_from_cache()]

        self.assertEqual(len(cache_questions), 0)
Beispiel #6
0
    def test_fetch_empty(self):
        """Test whether a list of questions is returned"""

        # Required fields
        question = '{"total": 0, "page_size": 0, "quota_remaining": 0, "quota_max": 0, "has_more": false, "items": []}'
        httpretty.register_uri(httpretty.GET,
                               STACKEXCHANGE_QUESTIONS_URL,
                               body=question, status=200)

        stack = StackExchange(site="stackoverflow", tagged="python", token="aaa", max_questions=1)
        questions = [question for question in stack.fetch(from_date=None)]

        self.assertEqual(len(questions), 0)