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')
        self.assertIsNone(stack.client)
        self.assertTrue(stack.ssl_verify)
        self.assertIsNone(stack.access_token)

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

        stack = StackExchange(site='stackoverflow', tag='')
        self.assertEqual(stack.site, 'stackoverflow')
        self.assertEqual(stack.origin, 'stackoverflow')
        self.assertEqual(stack.tag, 'stackoverflow')

        # When access_token is defined but api_token is not,
        # raise exception
        with self.assertRaises(BackendError):
            _ = StackExchange(site='stackoverflow', access_token='aaa')
    def test_fetch(self):
        """Test whether a list of questions is returned"""

        question = read_file('data/stackexchange/stackexchange_question')

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

        stack = StackExchange(site="stackoverflow",
                              tagged="python",
                              api_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])
    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')
        self.assertIsNone(stack.client)

        # 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')
Example #4
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",
                              api_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)
 def setUp(self):
     super().setUp()
     self.backend_write_archive = StackExchange(site="stackoverflow.com", tagged="python",
                                                api_token="aaa", max_questions=1,
                                                archive=self.archive)
     self.backend_read_archive = StackExchange(site="stackoverflow.com", tagged="python",
                                               api_token="bbb", max_questions=1,
                                               archive=self.archive)
Example #6
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",
                              api_token="aaa", max_questions=1)

        with self.assertRaises(CacheError):
            _ = [cache_question for cache_question in stack.fetch_from_cache()]
Example #7
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",
                              api_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)
    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",
                              api_token="aaa", max_questions=1)
        questions = [question for question in stack.fetch(from_date=None)]

        self.assertEqual(len(questions), 0)
 def setUp(self):
     super().setUp()
     self.backend = StackExchange(site="stackoverflow",
                                  tagged="python",
                                  api_token="aaa",
                                  max_questions=1,
                                  archive=self.archive)
    def test_search_fields(self):
        """Test whether the search_fields is properly set"""

        question = read_file('data/stackexchange/stackexchange_question')

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

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

        question = questions[0]
        self.assertEqual(stack.metadata_id(question['data']), question['search_fields']['item_id'])
        self.assertListEqual(question['data']['tags'], ['python', 'pandas'])
        self.assertEqual(question['data']['tags'], question['search_fields']['tags'])
    def test_parse_questions(self):
        """Test question parsing"""

        raw_parse = read_file('data/stackexchange/stackexchange_question_page')
        parse = read_file('data/stackexchange/stackexchange_question_parse')
        parse = json.loads(parse)

        questions = StackExchange.parse_questions(raw_parse)

        result = [question for question in questions]

        self.assertDictEqual(result[0], parse[0])
        self.assertDictEqual(result[1], parse[1])
    def test_has_resuming(self):
        """Test if it returns True when has_resuming is called"""

        self.assertEqual(StackExchange.has_resuming(), True)
    def test_has_caching(self):
        """Test if it returns False when has_caching is called"""

        self.assertEqual(StackExchange.has_caching(), False)