github.com/stripe/stripe-go/v76@v76.25.0/subscription/client_test.go (about)

     1  package subscription
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	assert "github.com/stretchr/testify/require"
     8  	stripe "github.com/stripe/stripe-go/v76"
     9  	_ "github.com/stripe/stripe-go/v76/testing"
    10  )
    11  
    12  func TestSubscriptionCancel(t *testing.T) {
    13  	subscription, err := Cancel("sub_123", &stripe.SubscriptionCancelParams{
    14  		InvoiceNow: stripe.Bool(true),
    15  		Prorate:    stripe.Bool(true),
    16  	})
    17  	assert.Nil(t, err)
    18  	assert.NotNil(t, subscription)
    19  }
    20  
    21  func TestSubscriptionGet(t *testing.T) {
    22  	subscription, err := Get("sub_123", nil)
    23  	assert.Nil(t, err)
    24  	assert.NotNil(t, subscription)
    25  }
    26  
    27  func TestSubscriptionList(t *testing.T) {
    28  	i := List(&stripe.SubscriptionListParams{})
    29  
    30  	// Verify that we can get at least one subscription
    31  	assert.True(t, i.Next())
    32  	assert.Nil(t, i.Err())
    33  	assert.NotNil(t, i.Subscription())
    34  	assert.NotNil(t, i.SubscriptionList())
    35  }
    36  
    37  func TestSubscriptionNew(t *testing.T) {
    38  	subscription, err := New(&stripe.SubscriptionParams{
    39  		AddInvoiceItems: []*stripe.SubscriptionAddInvoiceItemParams{
    40  			{
    41  				Price:    stripe.String("price_123"),
    42  				Quantity: stripe.Int64(2),
    43  			},
    44  			{
    45  				PriceData: &stripe.InvoiceItemPriceDataParams{
    46  					Currency:   stripe.String(string(stripe.CurrencyUSD)),
    47  					UnitAmount: stripe.Int64(1000),
    48  					Product:    stripe.String("prod_123"),
    49  				},
    50  				Quantity: stripe.Int64(4),
    51  			},
    52  		},
    53  		BillingCycleAnchor: stripe.Int64(time.Now().AddDate(0, 0, 12).Unix()),
    54  		CollectionMethod:   stripe.String(string(stripe.SubscriptionCollectionMethodChargeAutomatically)),
    55  		Customer:           stripe.String("cus_123"),
    56  		DaysUntilDue:       stripe.Int64(30),
    57  		Items: []*stripe.SubscriptionItemsParams{
    58  			{
    59  				Price:    stripe.String("price_ABC"),
    60  				Quantity: stripe.Int64(10),
    61  			},
    62  			{
    63  				PriceData: &stripe.SubscriptionItemPriceDataParams{
    64  					Currency: stripe.String(string(stripe.CurrencyUSD)),
    65  					Product:  stripe.String("prod_ABC"),
    66  					Recurring: &stripe.SubscriptionItemPriceDataRecurringParams{
    67  						Interval:      stripe.String(string(stripe.PriceRecurringIntervalMonth)),
    68  						IntervalCount: stripe.Int64(6),
    69  					},
    70  					UnitAmount: stripe.Int64(1000),
    71  				},
    72  			},
    73  		},
    74  	})
    75  	assert.Nil(t, err)
    76  	assert.NotNil(t, subscription)
    77  }
    78  
    79  func TestSubscriptionNew_WithItems(t *testing.T) {
    80  	subscription, err := New(&stripe.SubscriptionParams{
    81  		Customer: stripe.String("cus_123"),
    82  		Items: []*stripe.SubscriptionItemsParams{
    83  			{
    84  				Plan:     stripe.String("gold"),
    85  				Quantity: stripe.Int64(0),
    86  			},
    87  		},
    88  	})
    89  	assert.Nil(t, err)
    90  	assert.NotNil(t, subscription)
    91  }
    92  
    93  func TestSubscriptionUpdate(t *testing.T) {
    94  	params := &stripe.SubscriptionParams{
    95  		ProrationBehavior: stripe.String("none"),
    96  	}
    97  	subscription, err := Update("sub_123", params)
    98  	assert.Nil(t, err)
    99  	assert.NotNil(t, subscription)
   100  }
   101  
   102  func TestDeleteDiscount(t *testing.T) {
   103  	discount, err := DeleteDiscount("sub_123", nil)
   104  	assert.Nil(t, err)
   105  	assert.NotNil(t, discount)
   106  }