Fix cancel broadcast by converting reference date to string

Datetime oobject is not json serializable, we have to convert
it to string for the created_at field of previous broadcast
provider messages.
This commit is contained in:
Pea Tyczynska
2020-12-18 17:22:11 +00:00
parent 519568970c
commit ee833bd65b
2 changed files with 26 additions and 14 deletions

View File

@@ -165,12 +165,16 @@ class CBCProxyEE(CBCProxyClientBase):
identifier, previous_provider_messages,
sent, message_number=None
):
from app import DATETIME_FORMAT
payload = {
'message_type': 'cancel',
'identifier': identifier,
'message_format': 'cap',
"references": [
{"message_id": str(message.id), "sent": message.created_at} for message in previous_provider_messages
{
"message_id": str(message.id),
"sent": message.created_at.strftime(DATETIME_FORMAT)
} for message in previous_provider_messages
],
'sent': sent,
}
@@ -219,6 +223,7 @@ class CBCProxyVodafone(CBCProxyClientBase):
):
# avoid cyclical import
from app.utils import format_sequential_number
from app import DATETIME_FORMAT
payload = {
'message_type': 'cancel',
@@ -229,7 +234,7 @@ class CBCProxyVodafone(CBCProxyClientBase):
{
"message_id": str(message.id),
"message_number": format_sequential_number(message.message_number),
"sent": message.created_at
"sent": message.created_at.strftime(DATETIME_FORMAT)
} for message in previous_provider_messages
],
'sent': sent,

View File

@@ -1,10 +1,12 @@
import json
import uuid
from collections import namedtuple
from datetime import datetime
from unittest.mock import Mock
import pytest
from app import DATETIME_FORMAT
from app.clients.cbc_proxy import CBCProxyClient, CBCProxyException, CBCProxyEE, CBCProxyCanary
@@ -119,13 +121,15 @@ def test_cbc_proxy_ee_create_and_send_invokes_function(mocker, cbc_proxy_ee):
def test_cbc_proxy_ee_cancel_invokes_function(mocker, cbc_proxy_ee):
identifier = 'my-identifier'
MockProviderMessage = namedtuple('BroadcastProviderMessage', ['id', 'message_number', 'created_at'])
MockProviderMessage = namedtuple(
'BroadcastProviderMessage', ['id', 'message_number', 'created_at']
)
provider_messages = [
MockProviderMessage(uuid.uuid4(), '0000007b', '2020-12-10 11:19:44.130585'),
MockProviderMessage(uuid.uuid4(), '0000004e', '2020-12-10 12:19:44.130585')
MockProviderMessage(uuid.uuid4(), '0000007b', datetime(2020, 12, 16)),
MockProviderMessage(uuid.uuid4(), '0000004e', datetime(2020, 12, 17))
]
sent = '2020-12-10 14:19:44.130585'
sent = '2020-12-17 14:19:44.130585'
ld_client_mock = mocker.patch.object(
cbc_proxy_ee,
@@ -161,11 +165,11 @@ def test_cbc_proxy_ee_cancel_invokes_function(mocker, cbc_proxy_ee):
assert payload['references'] == [
{
"message_id": str(provider_messages[0].id),
"sent": provider_messages[0].created_at
"sent": provider_messages[0].created_at.strftime(DATETIME_FORMAT)
},
{
"message_id": str(provider_messages[1].id),
"sent": provider_messages[1].created_at
"sent": provider_messages[1].created_at.strftime(DATETIME_FORMAT)
},
]
assert payload['sent'] == sent
@@ -233,13 +237,16 @@ def test_cbc_proxy_vodafone_create_and_send_invokes_function(mocker, cbc_proxy_v
def test_cbc_proxy_vodafone_cancel_invokes_function(mocker, cbc_proxy_vodafone):
identifier = 'my-identifier'
MockProviderMessage = namedtuple('BroadcastProviderMessage', ['id', 'message_number', 'created_at'])
MockProviderMessage = namedtuple(
'BroadcastProviderMessage',
['id', 'message_number', 'created_at']
)
provider_messages = [
MockProviderMessage(uuid.uuid4(), 78, '2020-12-10 11:19:44.130585'),
MockProviderMessage(uuid.uuid4(), 123, '2020-12-10 12:19:44.130585')
MockProviderMessage(uuid.uuid4(), 78, datetime(2020, 12, 16)),
MockProviderMessage(uuid.uuid4(), 123, datetime(2020, 12, 17))
]
sent = '2020-12-10 14:19:44.130585'
sent = '2020-12-18 14:19:44.130585'
ld_client_mock = mocker.patch.object(
cbc_proxy_vodafone,
@@ -276,12 +283,12 @@ def test_cbc_proxy_vodafone_cancel_invokes_function(mocker, cbc_proxy_vodafone):
{
"message_id": str(provider_messages[0].id),
"message_number": '0000004e',
"sent": provider_messages[0].created_at
"sent": provider_messages[0].created_at.strftime(DATETIME_FORMAT)
},
{
"message_id": str(provider_messages[1].id),
"message_number": '0000007b',
"sent": provider_messages[1].created_at
"sent": provider_messages[1].created_at.strftime(DATETIME_FORMAT)
},
]
assert payload['sent'] == sent