mirror of
https://github.com/GSA/notifications-api.git
synced 2026-05-20 00:30:41 -04:00
fix schema and primary key
* version is an additional primary key so we need to indicate that * schema no longer relies on Template model, and uses nested user
This commit is contained in:
@@ -249,7 +249,7 @@ class TemplateHistory(db.Model):
|
||||
subject = db.Column(db.Text)
|
||||
created_by_id = db.Column(UUID(as_uuid=True), db.ForeignKey('users.id'), index=True, nullable=False)
|
||||
created_by = db.relationship('User')
|
||||
version = db.Column(db.Integer)
|
||||
version = db.Column(db.Integer, primary_key=True)
|
||||
|
||||
|
||||
MMG_PROVIDER = "mmg"
|
||||
|
||||
@@ -172,17 +172,11 @@ class TemplateSchema(BaseTemplateSchema):
|
||||
|
||||
class TemplateHistorySchema(BaseSchema):
|
||||
|
||||
class Meta:
|
||||
# Use the base model class that the history class is created from
|
||||
model = models.Template
|
||||
# We have to use a method here because the relationship field on the
|
||||
# history object is not created.
|
||||
created_by = fields.Method("populate_created_by", dump_only=True)
|
||||
created_by = fields.Nested(UserSchema, only=['id', 'name', 'email_address'], dump_only=True)
|
||||
created_at = field_for(models.Template, 'created_at', format='%Y-%m-%d %H:%M:%S.%f')
|
||||
|
||||
def populate_created_by(self, data):
|
||||
usr = models.User.query.filter_by(id=data.created_by_id).one()
|
||||
return {'id': str(usr.id), 'name': usr.name, 'email_address': usr.email_address}
|
||||
class Meta:
|
||||
model = models.TemplateHistory
|
||||
|
||||
|
||||
class NotificationsStatisticsSchema(BaseSchema):
|
||||
|
||||
@@ -176,7 +176,7 @@ def get_service_provider_aggregate_statistics(service_id):
|
||||
# tables. This is so product owner can pass stories as done
|
||||
@service.route('/<uuid:service_id>/history', methods=['GET'])
|
||||
def get_service_history(service_id):
|
||||
from app.models import (Service, ApiKey, Template, Event)
|
||||
from app.models import (Service, ApiKey, Template, TemplateHistory, Event)
|
||||
from app.schemas import (
|
||||
service_history_schema,
|
||||
api_key_history_schema,
|
||||
|
||||
@@ -29,6 +29,7 @@ from app.models import (
|
||||
VerifyCode,
|
||||
ApiKey,
|
||||
Template,
|
||||
TemplateHistory,
|
||||
Job,
|
||||
Notification,
|
||||
NotificationHistory,
|
||||
|
||||
@@ -6,7 +6,7 @@ from app.dao.templates_dao import (
|
||||
dao_update_template,
|
||||
dao_get_template_versions)
|
||||
from tests.app.conftest import sample_template as create_sample_template
|
||||
from app.models import Template
|
||||
from app.models import Template, TemplateHistory
|
||||
import pytest
|
||||
|
||||
|
||||
@@ -261,12 +261,16 @@ def test_get_template_versions(sample_template):
|
||||
sample_template.content = 'new version'
|
||||
dao_update_template(sample_template)
|
||||
versions = dao_get_template_versions(service_id=sample_template.service_id, template_id=sample_template.id)
|
||||
assert versions.__len__() == 2
|
||||
for x in versions:
|
||||
if x.version == 2:
|
||||
assert x.content == 'new version'
|
||||
else:
|
||||
assert x.content == original_content
|
||||
assert len(versions) == 2
|
||||
versions = sorted(versions, key=lambda x: x.version)
|
||||
assert versions[0].content == original_content
|
||||
assert versions[1].content == 'new version'
|
||||
|
||||
assert versions[0].created_at == versions[1].created_at
|
||||
|
||||
assert versions[0].updated_at is None
|
||||
assert versions[1].updated_at is not None
|
||||
|
||||
from app.schemas import template_history_schema
|
||||
v = template_history_schema.load(versions, many=True)
|
||||
assert v.__len__() == 2
|
||||
assert len(v) == 2
|
||||
|
||||
Reference in New Issue
Block a user