From c512b31afd9c995ce24f2d361f899fa10ffd4119 Mon Sep 17 00:00:00 2001 From: Imdad Ahad Date: Tue, 7 Feb 2017 12:38:56 +0000 Subject: [PATCH 1/3] Update provider history when auto switching provider --- app/dao/provider_details_dao.py | 3 ++- tests/app/dao/test_provider_details_dao.py | 12 ++++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/app/dao/provider_details_dao.py b/app/dao/provider_details_dao.py index 1ee2a99ae..edbcef54a 100644 --- a/app/dao/provider_details_dao.py +++ b/app/dao/provider_details_dao.py @@ -59,7 +59,8 @@ def dao_switch_sms_provider_to_provider_with_identifier(identifier): if not provider_is_already_primary_or_inactive(current_provider, new_provider, identifier): update_provider_priorities(current_provider, new_provider) - db.session.add_all([current_provider, new_provider]) + dao_update_provider_details(current_provider) + dao_update_provider_details(new_provider) def get_provider_details_by_notification_type(notification_type): diff --git a/tests/app/dao/test_provider_details_dao.py b/tests/app/dao/test_provider_details_dao.py index 9050248c7..91e0698e0 100644 --- a/tests/app/dao/test_provider_details_dao.py +++ b/tests/app/dao/test_provider_details_dao.py @@ -122,8 +122,7 @@ def test_get_alternative_sms_provider_returns_expected_provider(notify_db, provi def test_switch_sms_provider_to_current_provider_does_not_switch( restore_provider_details, - current_sms_provider, - mocker + current_sms_provider ): dao_switch_sms_provider_to_provider_with_identifier(current_sms_provider.identifier) new_provider = get_current_provider('sms') @@ -134,8 +133,7 @@ def test_switch_sms_provider_to_current_provider_does_not_switch( def test_switch_sms_provider_to_inactive_provider_does_not_switch( restore_provider_details, - current_sms_provider, - mocker + current_sms_provider ): alternative_sms_provider = get_alternative_sms_provider(current_sms_provider.identifier) alternative_sms_provider.active = False @@ -150,8 +148,7 @@ def test_switch_sms_provider_to_inactive_provider_does_not_switch( def test_toggle_sms_provider_switches_provider( restore_provider_details, - current_sms_provider, - mocker + current_sms_provider ): dao_toggle_sms_provider(current_sms_provider.identifier) new_provider = get_current_provider('sms') @@ -161,8 +158,7 @@ def test_toggle_sms_provider_switches_provider( def test_toggle_sms_provider_switches_when_provider_priorities_are_equal( restore_provider_details, - current_sms_provider, - mocker + current_sms_provider ): new_provider = get_alternative_sms_provider(current_sms_provider.identifier) current_sms_provider.priority = new_provider.priority From 42bb2f14da1f32589438334ebcae2cb60f5974e7 Mon Sep 17 00:00:00 2001 From: Imdad Ahad Date: Wed, 8 Feb 2017 14:15:45 +0000 Subject: [PATCH 2/3] Add test to check version is updated after switch --- tests/app/dao/test_provider_details_dao.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/app/dao/test_provider_details_dao.py b/tests/app/dao/test_provider_details_dao.py index 91e0698e0..fc994da60 100644 --- a/tests/app/dao/test_provider_details_dao.py +++ b/tests/app/dao/test_provider_details_dao.py @@ -168,3 +168,14 @@ def test_toggle_sms_provider_switches_when_provider_priorities_are_equal( assert new_provider.identifier != current_sms_provider.identifier assert new_provider.priority < current_sms_provider.priority + + +def test_toggle_sms_provider_updates_version( + restore_provider_details, + current_sms_provider +): + version_before = current_sms_provider.version + dao_toggle_sms_provider(current_sms_provider.identifier) + version_after = current_sms_provider.version + + assert version_after - version_before == 1 From 41a689f4be06d47f7402a4140d0a4d11c11b7115 Mon Sep 17 00:00:00 2001 From: Imdad Ahad Date: Wed, 8 Feb 2017 17:14:46 +0000 Subject: [PATCH 3/3] Update test to assert that the provider history table has been updated --- tests/app/dao/test_provider_details_dao.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/tests/app/dao/test_provider_details_dao.py b/tests/app/dao/test_provider_details_dao.py index fc994da60..b9569e37e 100644 --- a/tests/app/dao/test_provider_details_dao.py +++ b/tests/app/dao/test_provider_details_dao.py @@ -3,6 +3,7 @@ import pytest from datetime import datetime from freezegun import freeze_time +from sqlalchemy import desc from app.models import ProviderDetails, ProviderDetailsHistory from app import clients @@ -170,12 +171,23 @@ def test_toggle_sms_provider_switches_when_provider_priorities_are_equal( assert new_provider.priority < current_sms_provider.priority -def test_toggle_sms_provider_updates_version( +def test_toggle_sms_provider_updates_provider_history( restore_provider_details, current_sms_provider ): - version_before = current_sms_provider.version - dao_toggle_sms_provider(current_sms_provider.identifier) - version_after = current_sms_provider.version + provider_history_rows = ProviderDetailsHistory.query.filter( + ProviderDetailsHistory.id == current_sms_provider.id + ).order_by( + desc(ProviderDetailsHistory.version) + ).all() - assert version_after - version_before == 1 + dao_toggle_sms_provider(current_sms_provider.identifier) + + updated_provider_history_rows = ProviderDetailsHistory.query.filter( + ProviderDetailsHistory.id == current_sms_provider.id + ).order_by( + desc(ProviderDetailsHistory.version) + ).all() + + assert len(updated_provider_history_rows) - len(provider_history_rows) == 1 + assert updated_provider_history_rows[0].version - provider_history_rows[0].version == 1