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