@@ -2702,6 +2702,261 @@ public function testGetTagSubscriptionsWithInvalidTagID()
27022702 $ result = $ this ->api ->get_tag_subscriptions (12345 );
27032703 }
27042704
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+
27052960 /**
27062961 * Test that add_subscriber_to_form_by_email() returns the expected data.
27072962 *
0 commit comments