def test_most_recent_inbound_sms_paginates_properly(notify_api, sample_service): create_inbound_sms(sample_service, user_number='+447800900111', content='111 1', created_at=datetime(2017, 1, 1)) create_inbound_sms(sample_service, user_number='+447800900111', content='111 2', created_at=datetime(2017, 1, 2)) create_inbound_sms(sample_service, user_number='+447800900222', content='222 1', created_at=datetime(2017, 1, 3)) create_inbound_sms(sample_service, user_number='+447800900222', content='222 2', created_at=datetime(2017, 1, 4)) create_inbound_sms(sample_service, user_number='+447800900333', content='333 1', created_at=datetime(2017, 1, 5)) create_inbound_sms(sample_service, user_number='+447800900333', content='333 2', created_at=datetime(2017, 1, 6)) create_inbound_sms(sample_service, user_number='+447800900444', content='444 1', created_at=datetime(2017, 1, 7)) create_inbound_sms(sample_service, user_number='+447800900444', content='444 2', created_at=datetime(2017, 1, 8)) with set_config(notify_api, 'PAGE_SIZE', 2): # first page has most recent 444 and 333 res = dao_get_paginated_most_recent_inbound_sms_by_user_number_for_service(sample_service.id, page=1) assert len(res.items) == 2 assert res.has_next is True assert res.per_page == 2 assert res.items[0].content == '444 2' assert res.items[1].content == '333 2' # second page has no 444 or 333 - just most recent 222 and 111 res = dao_get_paginated_most_recent_inbound_sms_by_user_number_for_service(sample_service.id, page=2) assert len(res.items) == 2 assert res.has_next is False assert res.items[0].content == '222 2' assert res.items[1].content == '111 2'
def get_most_recent_inbound_sms_for_service(service_id): # used on the service inbox page page = request.args.get('page', 1) # get most recent message for each user for service results = dao_get_paginated_most_recent_inbound_sms_by_user_number_for_service( service_id, int(page)) return jsonify(data=[row.serialize() for row in results.items], has_next=results.has_next)
def test_most_recent_inbound_sms_only_returns_most_recent_for_each_number( notify_api, sample_service): create_inbound_sms( sample_service, user_number="447700900111", content="111 1", created_at=datetime(2017, 1, 1), ) create_inbound_sms( sample_service, user_number="447700900111", content="111 2", created_at=datetime(2017, 1, 2), ) create_inbound_sms( sample_service, user_number="447700900111", content="111 3", created_at=datetime(2017, 1, 3), ) create_inbound_sms( sample_service, user_number="447700900111", content="111 4", created_at=datetime(2017, 1, 4), ) create_inbound_sms( sample_service, user_number="447700900111", content="111 5", created_at=datetime(2017, 1, 5), ) create_inbound_sms( sample_service, user_number="447700900222", content="222 1", created_at=datetime(2017, 1, 1), ) create_inbound_sms( sample_service, user_number="447700900222", content="222 2", created_at=datetime(2017, 1, 2), ) with set_config(notify_api, "PAGE_SIZE", 3): with freeze_time("2017-01-02"): res = dao_get_paginated_most_recent_inbound_sms_by_user_number_for_service( sample_service.id, limit_days=7, page=1) # noqa assert len(res.items) == 2 assert res.has_next is False assert res.per_page == 3 assert res.items[0].content == "111 5" assert res.items[1].content == "222 2"
def get_most_recent_inbound_sms_for_service(service_id): # used on the service inbox page page = request.args.get("page", 1) inbound_data_retention = fetch_service_data_retention_by_notification_type( service_id, "sms") limit_days = inbound_data_retention.days_of_retention if inbound_data_retention else 7 # get most recent message for each user for service results = dao_get_paginated_most_recent_inbound_sms_by_user_number_for_service( service_id, int(page), limit_days) return jsonify(data=[row.serialize() for row in results.items], has_next=results.has_next)
def test_most_recent_inbound_sms_only_returns_values_within_7_days( notify_api, sample_service): create_inbound_sms(sample_service, user_number='447700900111', content='111 1', created_at=datetime(2017, 4, 1)) create_inbound_sms(sample_service, user_number='447700900111', content='111 2', created_at=datetime(2017, 4, 1)) create_inbound_sms(sample_service, user_number='447700900222', content='222 1', created_at=datetime(2017, 4, 1)) create_inbound_sms(sample_service, user_number='447700900222', content='222 2', created_at=datetime(2017, 4, 1)) create_inbound_sms(sample_service, user_number='447700900333', content='333 1', created_at=datetime(2017, 4, 2)) create_inbound_sms(sample_service, user_number='447700900333', content='333 2', created_at=datetime(2017, 4, 3)) create_inbound_sms(sample_service, user_number='447700900444', content='444 1', created_at=datetime(2017, 4, 4)) create_inbound_sms(sample_service, user_number='447700900444', content='444 2', created_at=datetime(2017, 4, 5)) # 7 days ago BST midnight create_inbound_sms(sample_service, user_number='447700900666', content='666 1', created_at='2017-04-02T23:00:00') with freeze_time('2017-04-09T12:00:00'): res = dao_get_paginated_most_recent_inbound_sms_by_user_number_for_service( sample_service.id, page=1) assert len(res.items) == 3 assert res.items[0].content == '444 2' assert res.items[1].content == '333 2' assert res.items[2].content == '666 1'
def test_most_recent_inbound_sms_only_returns_most_recent_for_each_number(notify_api, sample_service): create_inbound_sms(sample_service, user_number='+447800900111', content='111 1', created_at=datetime(2017, 1, 1)) create_inbound_sms(sample_service, user_number='+447800900111', content='111 2', created_at=datetime(2017, 1, 2)) create_inbound_sms(sample_service, user_number='+447800900111', content='111 3', created_at=datetime(2017, 1, 3)) create_inbound_sms(sample_service, user_number='+447800900111', content='111 4', created_at=datetime(2017, 1, 4)) create_inbound_sms(sample_service, user_number='+447800900111', content='111 5', created_at=datetime(2017, 1, 5)) create_inbound_sms(sample_service, user_number='+447800900222', content='222 1', created_at=datetime(2017, 1, 1)) create_inbound_sms(sample_service, user_number='+447800900222', content='222 2', created_at=datetime(2017, 1, 2)) with set_config(notify_api, 'PAGE_SIZE', 3): res = dao_get_paginated_most_recent_inbound_sms_by_user_number_for_service(sample_service.id, page=1) assert len(res.items) == 2 assert res.has_next is False assert res.per_page == 3 assert res.items[0].content == '111 5' assert res.items[1].content == '222 2'
def test_most_recent_inbound_sms_only_returns_values_within_7_days( sample_service): # just out of bounds create_inbound_sms(sample_service, user_number='1', content='old', created_at=datetime(2017, 4, 2, 22, 59, 59)) # just in bounds create_inbound_sms(sample_service, user_number='2', content='new', created_at=datetime(2017, 4, 2, 23, 0, 0)) with freeze_time('Monday 10th April 2017 12:00:00'): res = dao_get_paginated_most_recent_inbound_sms_by_user_number_for_service( sample_service.id, limit_days=7, page=1) # noqa assert len(res.items) == 1 assert res.items[0].content == 'new'
def test_most_recent_inbound_sms_only_returns_values_within_7_days( sample_service): # just out of bounds create_inbound_sms( sample_service, user_number="1", content="old", created_at=datetime(2017, 4, 3, 3, 59, 59), ) # just in bounds create_inbound_sms( sample_service, user_number="2", content="new", created_at=datetime(2017, 4, 3, 4, 0, 0), ) with freeze_time("Monday 10th April 2017 12:00:00"): res = dao_get_paginated_most_recent_inbound_sms_by_user_number_for_service( sample_service.id, limit_days=7, page=1) # noqa assert len(res.items) == 1 assert res.items[0].content == "new"
def test_most_recent_inbound_sms_paginates_properly(notify_api, sample_service): create_inbound_sms( sample_service, user_number="447700900111", content="111 1", created_at=datetime(2017, 1, 1), ) create_inbound_sms( sample_service, user_number="447700900111", content="111 2", created_at=datetime(2017, 1, 2), ) create_inbound_sms( sample_service, user_number="447700900222", content="222 1", created_at=datetime(2017, 1, 3), ) create_inbound_sms( sample_service, user_number="447700900222", content="222 2", created_at=datetime(2017, 1, 4), ) create_inbound_sms( sample_service, user_number="447700900333", content="333 1", created_at=datetime(2017, 1, 5), ) create_inbound_sms( sample_service, user_number="447700900333", content="333 2", created_at=datetime(2017, 1, 6), ) create_inbound_sms( sample_service, user_number="447700900444", content="444 1", created_at=datetime(2017, 1, 7), ) create_inbound_sms( sample_service, user_number="447700900444", content="444 2", created_at=datetime(2017, 1, 8), ) with set_config(notify_api, "PAGE_SIZE", 2): with freeze_time("2017-01-02"): # first page has most recent 444 and 333 res = dao_get_paginated_most_recent_inbound_sms_by_user_number_for_service( sample_service.id, limit_days=7, page=1) # noqa assert len(res.items) == 2 assert res.has_next is True assert res.per_page == 2 assert res.items[0].content == "444 2" assert res.items[1].content == "333 2" # second page has no 444 or 333 - just most recent 222 and 111 res = dao_get_paginated_most_recent_inbound_sms_by_user_number_for_service( sample_service.id, limit_days=7, page=2) # noqa assert len(res.items) == 2 assert res.has_next is False assert res.items[0].content == "222 2" assert res.items[1].content == "111 2"