From 0935ff4d96ad9821d11fc3749587f2448e7cff9b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Thomas=20Sch=C3=BCttler?= Date: Wed, 28 Sep 2022 13:25:50 +0200 Subject: [PATCH] APIv4 - Save time part to subsciption history date --- CRM/Contact/BAO/SubscriptionHistory.php | 2 +- .../api/v4/Entity/SubscriptionHistoryTest.php | 65 +++++++++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 tests/phpunit/api/v4/Entity/SubscriptionHistoryTest.php diff --git a/CRM/Contact/BAO/SubscriptionHistory.php b/CRM/Contact/BAO/SubscriptionHistory.php index 4e51bb852e..5deb2c729f 100644 --- a/CRM/Contact/BAO/SubscriptionHistory.php +++ b/CRM/Contact/BAO/SubscriptionHistory.php @@ -31,7 +31,7 @@ class CRM_Contact_BAO_SubscriptionHistory extends CRM_Contact_DAO_SubscriptionHi */ public static function create($params) { $history = new CRM_Contact_BAO_SubscriptionHistory(); - $history->date = date('Ymd'); + $history->date = date('YmdHis'); $history->copyValues($params); $history->save(); return $history; diff --git a/tests/phpunit/api/v4/Entity/SubscriptionHistoryTest.php b/tests/phpunit/api/v4/Entity/SubscriptionHistoryTest.php new file mode 100644 index 0000000000..94cb3aeb5f --- /dev/null +++ b/tests/phpunit/api/v4/Entity/SubscriptionHistoryTest.php @@ -0,0 +1,65 @@ +createTestRecord('Contact'); + $group = $this->createTestRecord('Group'); + $timeAdded = time(); + $groupContact = $this->createTestRecord('GroupContact', [ + 'group_id' => $group['id'], + 'contact_id' => $contact['id'], + ]); + $historyAdded = SubscriptionHistory::get() + ->addSelect('*') + ->addWhere('group_id', '=', $group['id']) + ->addWhere('status', '=', 'Added') + ->addWhere('contact_id', '=', $contact['id']) + ->execute(); + $this->assertCount(1, $historyAdded); + $this->assertGreaterThanOrEqual($timeAdded, strtotime($historyAdded->single()['date'])); + $this->assertLessThanOrEqual(time(), strtotime($historyAdded->single()['date'])); + + $timeRemoved = time(); + GroupContact::update() + ->addValue('status', 'Removed') + ->addWhere('id', '=', $groupContact['id']) + ->execute(); + $historyRemoved = SubscriptionHistory::get() + ->addSelect('*') + ->addWhere('group_id', '=', $group['id']) + ->addWhere('status', '=', 'Removed') + ->addWhere('contact_id', '=', $contact['id']) + ->execute(); + $this->assertCount(1, $historyRemoved); + $this->assertGreaterThanOrEqual($timeRemoved, strtotime($historyRemoved->single()['date'])); + $this->assertLessThanOrEqual(time(), strtotime($historyRemoved->single()['date'])); + } + +} -- 2.25.1