PluginProbe
Defender Security – Malware Scanner, Login Security & Firewall / 6.3.0
Defender Security – Malware Scanner, Login Security & Firewall v6.3.0
6.3.0 6.2.3 6.2.4 6.2.0 6.2.1 6.2.2 6.1.0 5.3.1 5.4.0 5.4.1 5.5.0 5.5.1 5.6.0 5.6.1 5.6.2 5.7.0 5.7.1 5.7.2 5.8.0 5.8.1 5.9.0 6.0.0 6.0.1 3.0.1 3.1.0 All 141 releases
defender-security / extra / wpmudev-analytics / tests / test-wpmudev-analytics.php

test-wpmudev-analytics.php in Defender Security – Malware Scanner, Login Security & Firewall 6.3.0, at extra/wpmudev-analytics/tests/test-wpmudev-analytics.php

94 lines 2.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 class Test_WPMUDEV_Analytics extends WP_UnitTestCase {
4 private $time;
5
6 public function set_up() {
7 parent::set_up();
8
9 Testable_Mixpanel::$track_count = array();
10 }
11
12 /**
13 * @dataProvider mysql_version
14 */
15 public function test_event_limit_enforced( $mysql_version ) {
16 $time = time();
17 $this->set_time( $time );
18
19 $event_limit = 3;
20 $analytics = $this->given_analytics( $event_limit );
21 $analytics->set_mysql_version( $mysql_version );
22 $analytics->track( 'event' );
23 $analytics->track( 'event' );
24 $analytics->track( 'event' );
25 // 3 events tracked
26 $this->then_event_tracked_times( 'event', 3 );
27
28 $analytics->track( 'event' );
29 // Event not tracked but exceeded limit event is generated
30 $this->then_event_tracked_times( 'event', 3 );
31 $this->then_event_tracked_times( 'exceeded_daily_limit', 1 );
32
33 $analytics->track( 'event' );
34 // Nothing happened
35 $this->then_event_tracked_times( 'event', 3 );
36 $this->then_event_tracked_times( 'exceeded_daily_limit', 1 );
37
38 $time_window = HOUR_IN_SECONDS * 24;
39 $this->set_time( $time + $time_window );
40 $analytics->track( 'event' );
41 $this->then_event_tracked_times( 'event', 3 );
42 $this->then_event_tracked_times( 'exceeded_daily_limit', 1 );
43
44 $this->set_time( $time + $time_window + 1 );
45 $analytics->track( 'event' );
46 $analytics->track( 'event' );
47 $analytics->track( 'event' );
48 // Time window has passed, 3 more events generated
49 $this->then_event_tracked_times( 'event', 6 );
50 $this->then_event_tracked_times( 'exceeded_daily_limit', 1 );
51
52 $analytics->track( 'event' );
53 // Another exceeded event
54 $this->then_event_tracked_times( 'event', 6 );
55 $this->then_event_tracked_times( 'exceeded_daily_limit', 2 );
56 }
57
58 private function then_event_tracked_times( $event_name, $expected_count ) {
59 $this->assertEquals( $expected_count, Testable_Mixpanel::$track_count[ $event_name ] );
60 }
61
62 private function set_time( $time ) {
63 $this->time = $time;
64 }
65
66 public function time_function() {
67 return $this->time;
68 }
69
70 private function given_analytics( $event_limit ) {
71 $options = array(
72 'time_function' => array( $this, 'time_function' ),
73 );
74 $analytics = new WPMUDEV_Analytics_V4( 'plugin_slug', 'plugin_name', $event_limit, 'project_token', $options );
75 $analytics->set_mixpanel( new Testable_Mixpanel() );
76 return $analytics;
77 }
78
79 public function mysql_version() {
80 return [
81 [ '5.6' ],
82 [ '5.7' ],
83 ];
84 }
85 }
86
87 class Testable_Mixpanel {
88 static $track_count = array();
89
90 public function track( $event_name ) {
91 self::$track_count[ $event_name ] ++;
92 }
93 }
94