@@ -2702,6 +2702,261 @@ public function testGetTagSubscriptionsWithInvalidTagID()
2702
2702
$ result = $ this ->api ->get_tag_subscriptions (12345 );
2703
2703
}
2704
2704
2705
+ /**
2706
+ * Test that add_subscribers_to_forms() returns the expected data.
2707
+ *
2708
+ * @since 2.1.0
2709
+ *
2710
+ * @return void
2711
+ */
2712
+ public function testAddSubscribersToForms ()
2713
+ {
2714
+ // Create subscriber.
2715
+ $ emailAddress = $ this ->generateEmailAddress ();
2716
+ $ subscriber = $ this ->api ->create_subscriber (
2717
+ email_address: $ emailAddress
2718
+ );
2719
+
2720
+ // Set subscriber_id to ensure subscriber is unsubscribed after test.
2721
+ $ this ->subscriber_ids [] = $ subscriber ->subscriber ->id ;
2722
+
2723
+ // Add subscribers to forms.
2724
+ $ result = $ this ->api ->add_subscribers_to_forms (
2725
+ forms_subscribers_ids: [
2726
+ [
2727
+ 'form_id ' => (int ) $ _ENV ['CONVERTKIT_API_FORM_ID ' ],
2728
+ 'subscriber_id ' => $ subscriber ->subscriber ->id ,
2729
+ ],
2730
+ [
2731
+ 'form_id ' => (int ) $ _ENV ['CONVERTKIT_API_FORM_ID_2 ' ],
2732
+ 'subscriber_id ' => $ subscriber ->subscriber ->id ,
2733
+ ],
2734
+ ]
2735
+ );
2736
+
2737
+ // Assert no failures.
2738
+ $ this ->assertCount (0 , $ result ->failures );
2739
+
2740
+ // Confirm result is an array comprising of each subscriber that was created.
2741
+ $ this ->assertIsArray ($ result ->subscribers );
2742
+ }
2743
+
2744
+ /**
2745
+ * Test that add_subscribers_to_forms() returns the expected data
2746
+ * when a referrer URL is specified.
2747
+ *
2748
+ * @since 2.1.0
2749
+ *
2750
+ * @return void
2751
+ */
2752
+ public function testAddSubscribersToFormsWithReferrer ()
2753
+ {
2754
+ // Create subscriber.
2755
+ $ emailAddress = $ this ->generateEmailAddress ();
2756
+ $ subscriber = $ this ->api ->create_subscriber (
2757
+ email_address: $ emailAddress
2758
+ );
2759
+
2760
+ // Set subscriber_id to ensure subscriber is unsubscribed after test.
2761
+ $ this ->subscriber_ids [] = $ subscriber ->subscriber ->id ;
2762
+
2763
+ // Add subscribers to forms.
2764
+ $ result = $ this ->api ->add_subscribers_to_forms (
2765
+ forms_subscribers_ids: [
2766
+ [
2767
+ 'form_id ' => (int ) $ _ENV ['CONVERTKIT_API_FORM_ID ' ],
2768
+ 'subscriber_id ' => $ subscriber ->subscriber ->id ,
2769
+ 'referrer ' => 'https://mywebsite.com/bfpromo/ ' ,
2770
+ ],
2771
+ [
2772
+ 'form_id ' => (int ) $ _ENV ['CONVERTKIT_API_FORM_ID_2 ' ],
2773
+ 'subscriber_id ' => $ subscriber ->subscriber ->id ,
2774
+ 'referrer ' => 'https://mywebsite.com/bfpromo/ ' ,
2775
+ ],
2776
+ ]
2777
+ );
2778
+
2779
+ // Assert no failures.
2780
+ $ this ->assertCount (0 , $ result ->failures );
2781
+
2782
+ // Confirm result is an array comprising of each subscriber that was created.
2783
+ $ this ->assertIsArray ($ result ->subscribers );
2784
+
2785
+ // Assert referrer data set for subscribers.
2786
+ foreach ($ result ->subscribers as $ subscriber ) {
2787
+ $ this ->assertEquals (
2788
+ $ subscriber ->referrer ,
2789
+ 'https://mywebsite.com/bfpromo/ '
2790
+ );
2791
+ }
2792
+ }
2793
+
2794
+ /**
2795
+ * Test that add_subscribers_to_forms() returns the expected data
2796
+ * when a referrer URL with UTM parameters is specified.
2797
+ *
2798
+ * @since 2.1.0
2799
+ *
2800
+ * @return void
2801
+ */
2802
+ public function testAddSubscribersToFormsWithReferrerUTMParams ()
2803
+ {
2804
+ // Define referrer.
2805
+ $ referrerUTMParams = [
2806
+ 'utm_source ' => 'facebook ' ,
2807
+ 'utm_medium ' => 'cpc ' ,
2808
+ 'utm_campaign ' => 'black_friday ' ,
2809
+ 'utm_term ' => 'car_owners ' ,
2810
+ 'utm_content ' => 'get_10_off ' ,
2811
+ ];
2812
+ $ referrer = 'https://mywebsite.com/bfpromo/? ' . http_build_query ($ referrerUTMParams );
2813
+
2814
+ // Create subscriber.
2815
+ $ emailAddress = $ this ->generateEmailAddress ();
2816
+ $ subscriber = $ this ->api ->create_subscriber (
2817
+ email_address: $ emailAddress
2818
+ );
2819
+
2820
+ // Set subscriber_id to ensure subscriber is unsubscribed after test.
2821
+ $ this ->subscriber_ids [] = $ subscriber ->subscriber ->id ;
2822
+
2823
+ // Add subscribers to forms.
2824
+ $ result = $ this ->api ->add_subscribers_to_forms (
2825
+ forms_subscribers_ids: [
2826
+ [
2827
+ 'form_id ' => (int ) $ _ENV ['CONVERTKIT_API_FORM_ID ' ],
2828
+ 'subscriber_id ' => $ subscriber ->subscriber ->id ,
2829
+ 'referrer ' => $ referrer ,
2830
+ ],
2831
+ [
2832
+ 'form_id ' => (int ) $ _ENV ['CONVERTKIT_API_FORM_ID_2 ' ],
2833
+ 'subscriber_id ' => $ subscriber ->subscriber ->id ,
2834
+ 'referrer ' => $ referrer ,
2835
+ ],
2836
+ ]
2837
+ );
2838
+
2839
+ // Assert no failures.
2840
+ $ this ->assertCount (0 , $ result ->failures );
2841
+
2842
+ // Confirm result is an array comprising of each subscriber that was created.
2843
+ $ this ->assertIsArray ($ result ->subscribers );
2844
+
2845
+ // Assert referrer data set for subscribers.
2846
+ foreach ($ result ->subscribers as $ subscriber ) {
2847
+ $ this ->assertEquals (
2848
+ $ subscriber ->referrer ,
2849
+ $ referrer
2850
+ );
2851
+ $ this ->assertEquals (
2852
+ $ subscriber ->referrer_utm_parameters ->source ,
2853
+ $ referrerUTMParams ['utm_source ' ]
2854
+ );
2855
+ $ this ->assertEquals (
2856
+ $ subscriber ->referrer_utm_parameters ->medium ,
2857
+ $ referrerUTMParams ['utm_medium ' ]
2858
+ );
2859
+ $ this ->assertEquals (
2860
+ $ subscriber ->referrer_utm_parameters ->campaign ,
2861
+ $ referrerUTMParams ['utm_campaign ' ]
2862
+ );
2863
+ $ this ->assertEquals (
2864
+ $ subscriber ->referrer_utm_parameters ->term ,
2865
+ $ referrerUTMParams ['utm_term ' ]
2866
+ );
2867
+ $ this ->assertEquals (
2868
+ $ subscriber ->referrer_utm_parameters ->content ,
2869
+ $ referrerUTMParams ['utm_content ' ]
2870
+ );
2871
+ }
2872
+ }
2873
+
2874
+ /**
2875
+ * Test that add_subscribers_to_forms() returns the expected errors
2876
+ * when invalid Form IDs are specified.
2877
+ *
2878
+ * @since 2.1.0
2879
+ *
2880
+ * @return void
2881
+ */
2882
+ public function testAddSubscribersToFormsWithInvalidFormIDs ()
2883
+ {
2884
+ // Create subscriber.
2885
+ $ emailAddress = $ this ->generateEmailAddress ();
2886
+ $ subscriber = $ this ->api ->create_subscriber (
2887
+ email_address: $ emailAddress
2888
+ );
2889
+
2890
+ // Set subscriber_id to ensure subscriber is unsubscribed after test.
2891
+ $ this ->subscriber_ids [] = $ subscriber ->subscriber ->id ;
2892
+
2893
+ // Add subscribers to forms.
2894
+ $ result = $ this ->api ->add_subscribers_to_forms (
2895
+ forms_subscribers_ids: [
2896
+ [
2897
+ 'form_id ' => 9999999 ,
2898
+ 'subscriber_id ' => $ subscriber ->subscriber ->id ,
2899
+ ],
2900
+ [
2901
+ 'form_id ' => 9999999 ,
2902
+ 'subscriber_id ' => $ subscriber ->subscriber ->id ,
2903
+ ],
2904
+ ]
2905
+ );
2906
+
2907
+ // Assert failures.
2908
+ $ this ->assertCount (2 , $ result ->failures );
2909
+ foreach ($ result ->failures as $ failure ) {
2910
+ $ this ->assertEquals (
2911
+ $ failure ->errors [0 ],
2912
+ 'Form does not exist '
2913
+ );
2914
+ }
2915
+ }
2916
+
2917
+ /**
2918
+ * Test that add_subscribers_to_forms() returns the expected errors
2919
+ * when invalid Subscriber IDs are specified.
2920
+ *
2921
+ * @since 2.1.0
2922
+ *
2923
+ * @return void
2924
+ */
2925
+ public function testAddSubscribersToFormsWithInvalidSubscriberIDs ()
2926
+ {
2927
+ // Create subscriber.
2928
+ $ emailAddress = $ this ->generateEmailAddress ();
2929
+ $ subscriber = $ this ->api ->create_subscriber (
2930
+ email_address: $ emailAddress
2931
+ );
2932
+
2933
+ // Set subscriber_id to ensure subscriber is unsubscribed after test.
2934
+ $ this ->subscriber_ids [] = $ subscriber ->subscriber ->id ;
2935
+
2936
+ // Add subscribers to forms.
2937
+ $ result = $ this ->api ->add_subscribers_to_forms (
2938
+ forms_subscribers_ids: [
2939
+ [
2940
+ 'form_id ' => (int ) $ _ENV ['CONVERTKIT_API_FORM_ID ' ],
2941
+ 'subscriber_id ' => 999999 ,
2942
+ ],
2943
+ [
2944
+ 'form_id ' => (int ) $ _ENV ['CONVERTKIT_API_FORM_ID_2 ' ],
2945
+ 'subscriber_id ' => 999999 ,
2946
+ ],
2947
+ ]
2948
+ );
2949
+
2950
+ // Assert failures.
2951
+ $ this ->assertCount (2 , $ result ->failures );
2952
+ foreach ($ result ->failures as $ failure ) {
2953
+ $ this ->assertEquals (
2954
+ $ failure ->errors [0 ],
2955
+ 'Subscriber does not exist '
2956
+ );
2957
+ }
2958
+ }
2959
+
2705
2960
/**
2706
2961
* Test that add_subscriber_to_form_by_email() returns the expected data.
2707
2962
*
0 commit comments