def test_fetch_from_date(self): """Test wether if fetches a set of issues from the given date""" http_requests = setup_http_server() from_date = datetime.datetime(2016, 7, 27) redmine = Redmine(REDMINE_URL, api_token='AAAA', max_issues=3) issues = [issue for issue in redmine.fetch(from_date=from_date)] self.assertEqual(len(issues), 1) issue = issues[0] self.assertEqual(issue['data']['id'], 7311) self.assertEqual(issue['uuid'], '4ab289ab60aee93a66e5490529799cf4a2b4d94c') self.assertEqual(issue['origin'], REDMINE_URL) self.assertEqual(issue['updated_on'], 1469607427.0) self.assertEqual(issue['category'], 'issue') self.assertEqual(issue['tag'], REDMINE_URL) self.assertEqual(issue['data']['author_data']['id'], 24) self.assertEqual(issue['data']['journals'][0]['user_data']['id'], 4) expected = [{ 'key' : ['AAAA'], 'status_id' : ['*'], 'sort' : ['updated_on'], 'updated_on' : ['>=2016-07-27T00:00:00Z'], 'offset' : ['0'], 'limit' : ['3'] }, { 'key' : ['AAAA'], 'include' : ['attachments,changesets,children,journals,relations,watchers'] }, { 'key' : ['AAAA'] }, { 'key' : ['AAAA'] }, { 'key' : ['AAAA'] }, { 'key' : ['AAAA'] }, { 'key' : ['AAAA'], 'status_id' : ['*'], 'sort' : ['updated_on'], 'updated_on' : ['>=2016-07-27T00:00:00Z'], 'offset' : ['3'], 'limit' : ['3'] }] self.assertEqual(len(http_requests), len(expected)) for i in range(len(expected)): self.assertDictEqual(http_requests[i].querystring, expected[i])
def test_fetch_from_date(self): """Test wether if fetches a set of issues from the given date""" http_requests = setup_http_server() from_date = datetime.datetime(2016, 7, 27) redmine = Redmine(REDMINE_URL, api_token='AAAA', max_issues=3) issues = [issue for issue in redmine.fetch(from_date=from_date)] self.assertEqual(len(issues), 1) issue = issues[0] self.assertEqual(issue['data']['id'], 7311) self.assertEqual(issue['uuid'], '4ab289ab60aee93a66e5490529799cf4a2b4d94c') self.assertEqual(issue['origin'], REDMINE_URL) self.assertEqual(issue['updated_on'], 1469607427.0) self.assertEqual(issue['category'], 'issue') self.assertEqual(issue['tag'], REDMINE_URL) self.assertEqual(issue['data']['author_data']['id'], 24) self.assertEqual(issue['data']['journals'][0]['user_data']['id'], 4) expected = [{ 'key': ['AAAA'], 'status_id': ['*'], 'sort': ['updated_on'], 'updated_on': ['>=2016-07-27T00:00:00Z'], 'offset': ['0'], 'limit': ['3'] }, { 'key': ['AAAA'], 'include': ['attachments,changesets,children,journals,relations,watchers'] }, { 'key': ['AAAA'] }, { 'key': ['AAAA'] }, { 'key': ['AAAA'] }, { 'key': ['AAAA'] }, { 'key': ['AAAA'], 'status_id': ['*'], 'sort': ['updated_on'], 'updated_on': ['>=2016-07-27T00:00:00Z'], 'offset': ['3'], 'limit': ['3'] }] self.assertEqual(len(http_requests), len(expected)) for i in range(len(expected)): self.assertDictEqual(http_requests[i].querystring, expected[i])
def test_fetch_from_cache(self): """Test whether the cache works""" http_requests = setup_http_server() # First, we fetch the issues from the server, # storing them in a cache cache = Cache(self.tmp_path) redmine = Redmine(REDMINE_URL, api_token='AAAA', max_issues=3, cache=cache) issues = [issue for issue in redmine.fetch()] self.assertEqual(len(http_requests), 12) # Now, we get the issues from the cache. # The issues should be the same and there won't be # any new request to the server cached_issues = [issue for issue in redmine.fetch_from_cache()] self.assertEqual(len(cached_issues), len(issues)) expected = [(9, '91a8349c2f6ebffcccc49409529c61cfd3825563', 1323367020.0, 3, 3), (5, 'c4aeb9e77fec8e4679caa23d4012e7cc36ae8b98', 1323367075.0, 3, 3), (2, '3c3d67925b108a37f88cc6663f7f7dd493fa818c', 1323367117.0, 3, 3), (7311, '4ab289ab60aee93a66e5490529799cf4a2b4d94c', 1469607427.0, 24, 4)] self.assertEqual(len(cached_issues), len(expected)) for x in range(len(cached_issues)): issue = cached_issues[x] expc = expected[x] self.assertEqual(issue['data']['id'], expc[0]) self.assertEqual(issue['uuid'], expc[1]) self.assertEqual(issue['origin'], REDMINE_URL) self.assertEqual(issue['updated_on'], expc[2]) self.assertEqual(issue['category'], 'issue') self.assertEqual(issue['tag'], REDMINE_URL) self.assertEqual(issue['data']['author_data']['id'], expc[3]) self.assertEqual(issue['data']['journals'][0]['user_data']['id'], expc[4]) self.assertDictEqual(issue['data'], issues[x]['data']) # The user 99 does not have information self.assertEqual(issues[3]['data']['journals'][1]['user']['id'], 99) self.assertDictEqual(issues[3]['data']['journals'][1]['user_data'], {}) # No more requests were sent self.assertEqual(len(http_requests), 12)
def test_not_found_user(self): """Test if it works when a user is not found""" http_requests = setup_http_server() from_date = datetime.datetime(2016, 7, 27) redmine = Redmine(REDMINE_URL, api_token='AAAA', max_issues=3) issues = [issue for issue in redmine.fetch(from_date=from_date)] self.assertEqual(len(issues), 1) # The user 99 does not have information self.assertEqual(issues[0]['data']['journals'][1]['user']['id'], 99) self.assertDictEqual(issues[0]['data']['journals'][1]['user_data'], {})
def test_fetch_empty(self): """Test if nothing is returnerd when there are no issues""" http_requests = setup_http_server() from_date = datetime.datetime(2017, 1, 1) redmine = Redmine(REDMINE_URL, api_token='AAAA', max_issues=3) issues = [issue for issue in redmine.fetch(from_date=from_date)] self.assertEqual(len(issues), 0) expected = { 'key': ['AAAA'], 'status_id': ['*'], 'sort': ['updated_on'], 'updated_on': ['>=2017-01-01T00:00:00Z'], 'offset': ['0'], 'limit': ['3'] } self.assertEqual(len(http_requests), 1) self.assertDictEqual(http_requests[0].querystring, expected)
def test_fetch_empty(self): """Test if nothing is returnerd when there are no issues""" http_requests = setup_http_server() from_date = datetime.datetime(2017, 1, 1) redmine = Redmine(REDMINE_URL, api_token='AAAA', max_issues=3) issues = [issue for issue in redmine.fetch(from_date=from_date)] self.assertEqual(len(issues), 0) expected = { 'key' : ['AAAA'], 'status_id' : ['*'], 'sort' : ['updated_on'], 'updated_on' : ['>=2017-01-01T00:00:00Z'], 'offset' : ['0'], 'limit' : ['3'] } self.assertEqual(len(http_requests), 1) self.assertDictEqual(http_requests[0].querystring, expected)
def test_fetch(self): """Test whether it fetches a set of issues""" http_requests = setup_http_server() redmine = Redmine(REDMINE_URL, api_token='AAAA', max_issues=3) issues = [issue for issue in redmine.fetch()] expected = [(9, '91a8349c2f6ebffcccc49409529c61cfd3825563', 1323367020.0, 3, 3), (5, 'c4aeb9e77fec8e4679caa23d4012e7cc36ae8b98', 1323367075.0, 3, 3), (2, '3c3d67925b108a37f88cc6663f7f7dd493fa818c', 1323367117.0, 3, 3), (7311, '4ab289ab60aee93a66e5490529799cf4a2b4d94c', 1469607427.0, 24, 4)] self.assertEqual(len(issues), len(expected)) for x in range(len(issues)): issue = issues[x] expc = expected[x] self.assertEqual(issue['data']['id'], expc[0]) self.assertEqual(issue['uuid'], expc[1]) self.assertEqual(issue['origin'], REDMINE_URL) self.assertEqual(issue['updated_on'], expc[2]) self.assertEqual(issue['category'], 'issue') self.assertEqual(issue['tag'], REDMINE_URL) self.assertEqual(issue['data']['author_data']['id'], expc[3]) self.assertEqual(issue['data']['journals'][0]['user_data']['id'], expc[4]) # Check requests expected = [{ 'key' : ['AAAA'], 'status_id' : ['*'], 'sort' : ['updated_on'], 'updated_on' : ['>=1970-01-01T00:00:00Z'], 'offset' : ['0'], 'limit' : ['3'] }, { 'key' : ['AAAA'], 'include' : ['attachments,changesets,children,journals,relations,watchers'] }, { 'key' : ['AAAA'] }, { 'key' : ['AAAA'], 'include' : ['attachments,changesets,children,journals,relations,watchers'] }, { 'key' : ['AAAA'], 'include' : ['attachments,changesets,children,journals,relations,watchers'] }, { 'key' : ['AAAA'], 'status_id' : ['*'], 'sort' : ['updated_on'], 'updated_on' : ['>=1970-01-01T00:00:00Z'], 'offset' : ['3'], 'limit' : ['3'] }, { 'key' : ['AAAA'], 'include' : ['attachments,changesets,children,journals,relations,watchers'] }, { 'key' : ['AAAA'] }, { 'key' : ['AAAA'] }, { 'key' : ['AAAA'] }, { 'key' : ['AAAA'] }, { 'key' : ['AAAA'], 'status_id' : ['*'], 'sort' : ['updated_on'], 'updated_on' : ['>=1970-01-01T00:00:00Z'], 'offset' : ['6'], 'limit' : ['3'] }] self.assertEqual(len(http_requests), len(expected)) for i in range(len(expected)): self.assertDictEqual(http_requests[i].querystring, expected[i])
def test_fetch(self): """Test whether it fetches a set of issues""" http_requests = setup_http_server() redmine = Redmine(REDMINE_URL, api_token='AAAA', max_issues=3) issues = [issue for issue in redmine.fetch()] expected = [ (9, '91a8349c2f6ebffcccc49409529c61cfd3825563', 1323367020.0), (5, 'c4aeb9e77fec8e4679caa23d4012e7cc36ae8b98', 1323367075.0), (2, '3c3d67925b108a37f88cc6663f7f7dd493fa818c', 1323367117.0), (7311, '4ab289ab60aee93a66e5490529799cf4a2b4d94c', 1469607427.0) ] self.assertEqual(len(issues), len(expected)) for x in range(len(issues)): issue = issues[x] expc = expected[x] self.assertEqual(issue['data']['id'], expc[0]) self.assertEqual(issue['uuid'], expc[1]) self.assertEqual(issue['origin'], REDMINE_URL) self.assertEqual(issue['updated_on'], expc[2]) self.assertEqual(issue['category'], 'issue') self.assertEqual(issue['tag'], REDMINE_URL) # Check requests expected = [{ 'key': ['AAAA'], 'status_id': ['*'], 'sort': ['updated_on'], 'updated_on': ['>=1970-01-01T00:00:00Z'], 'offset': ['0'], 'limit': ['3'] }, { 'key': ['AAAA'], 'include': ['attachments,changesets,children,journals,relations,watchers'] }, { 'key': ['AAAA'], 'include': ['attachments,changesets,children,journals,relations,watchers'] }, { 'key': ['AAAA'], 'include': ['attachments,changesets,children,journals,relations,watchers'] }, { 'key': ['AAAA'], 'status_id': ['*'], 'sort': ['updated_on'], 'updated_on': ['>=1970-01-01T00:00:00Z'], 'offset': ['3'], 'limit': ['3'] }, { 'key': ['AAAA'], 'include': ['attachments,changesets,children,journals,relations,watchers'] }, { 'key': ['AAAA'], 'status_id': ['*'], 'sort': ['updated_on'], 'updated_on': ['>=1970-01-01T00:00:00Z'], 'offset': ['6'], 'limit': ['3'] }] self.assertEqual(len(http_requests), len(expected)) for i in range(len(expected)): self.assertDictEqual(http_requests[i].querystring, expected[i])