Skip to content

Commit

Permalink
Merge pull request #225 from sarah256/recent-stories
Browse files Browse the repository at this point in the history
Add API endpoint for recent stories
  • Loading branch information
sarah256 committed Feb 18, 2019
2 parents 707bee2 + 3a70074 commit 80ad032
Show file tree
Hide file tree
Showing 2 changed files with 164 additions and 0 deletions.
14 changes: 14 additions & 0 deletions estuary/api/v1.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from estuary.models.base import EstuaryStructuredNode

from estuary.utils.general import str_to_bool, get_neo4j_node, inflate_node, login_required
from estuary.utils.recents import get_recent_nodes
from estuary.error import ValidationError
import estuary.utils.story

Expand Down Expand Up @@ -339,3 +340,16 @@ def get_artifact_relationships(resource, uid, relationship):
results['data'].append(serialized_node)

return jsonify(results)


@api_v1.route('/recents')
@login_required
def get_recent_stories():
"""Get stories that were most recently updated, by their artifact type."""
nodes = get_recent_nodes()
result = {
'data': nodes,
'metadata': {}
}

return jsonify(result)
150 changes: 150 additions & 0 deletions tests/api/test_recents.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
# SPDX-License-Identifier: GPL-3.0+

from __future__ import unicode_literals
import json
from datetime import datetime

from estuary.models.koji import KojiBuild
from estuary.models.bugzilla import BugzillaBug
from estuary.models.distgit import DistGitCommit
from estuary.models.errata import Advisory
from estuary.models.freshmaker import FreshmakerEvent


def test_get_recent_nodes(client):
"""Test the get_recent_nodes function."""
expected = {
'data': {
'Advisory': [
{
'advisory_name': None,
'update_date': '2017-05-30T11:44:38+00:00',
'issue_date': None,
'created_at': None,
'state': None,
'product_short_name': None,
'product_name': None,
'content_types': None,
'security_sla': None,
'synopsis': None,
'security_impact': None,
'status_time': None,
'actual_ship_date': None,
'release_date': None,
'id': '66666'
}
],
'DistGitCommit': [
{
'log_message': None,
'author_date': None,
'hash': '55555',
'commit_date': '2017-05-02T11:44:38+00:00'
}
],
'FreshmakerEvent': [
{
'state_reason': None,
'state_name': None,
'id': '77777',
'state': None,
'event_type_id': None,
'message_id': None
}
],
'KojiBuild': [
{
'name': None,
'extra': None,
'start_time': None,
'creation_time': None,
'state': None,
'completion_time': '2017-05-27T11:44:38+00:00',
'epoch': None,
'version': None,
'release': None,
'id': '44444'
}
],
'BugzillaBug': [
{
'status': None,
'votes': None,
'severity': None,
'classification': None,
'resolution': None,
'product_version': None,
'creation_time': None,
'modified_time': '2017-06-26T11:44:38+00:00',
'product_name': None,
'priority': None,
'short_description': None,
'target_milestone': None,
'id': '22222'
},
{
'status': None,
'votes': None,
'severity': None,
'classification': None,
'resolution': None,
'product_version': None,
'creation_time': None,
'modified_time': '2017-05-26T11:44:38+00:00',
'product_name': None,
'priority': None,
'short_description': None,
'target_milestone': None,
'id': '33333'
},
{
'status': None,
'votes': None,
'severity': None,
'classification': None,
'resolution': None,
'product_version': None,
'creation_time': None,
'modified_time': '2017-04-26T11:44:38+00:00',
'product_name': None,
'priority': None,
'short_description': None,
'target_milestone': None,
'id': '11111'
}
]
},
'metadata': {}
}

BugzillaBug.get_or_create({
'id_': '11111',
'modified_time': datetime(2017, 4, 26, 11, 44, 38)
})
BugzillaBug.get_or_create({
'id_': '22222',
'modified_time': datetime(2017, 6, 26, 11, 44, 38)
})
BugzillaBug.get_or_create({
'id_': '33333',
'modified_time': datetime(2017, 5, 26, 11, 44, 38)
})
KojiBuild.get_or_create({
'id_': '44444',
'completion_time': datetime(2017, 5, 27, 11, 44, 38)
})
DistGitCommit.get_or_create({
'hash_': '55555',
'commit_date': datetime(2017, 5, 2, 11, 44, 38)
})
Advisory.get_or_create({
'id_': '66666',
'update_date': datetime(2017, 5, 30, 11, 44, 38)
})
FreshmakerEvent.get_or_create({
'id_': '77777'
})

rv = client.get('/api/v1/recents')
assert rv.status_code == 200
assert json.loads(rv.data.decode('utf-8')) == expected

0 comments on commit 80ad032

Please sign in to comment.