-
Notifications
You must be signed in to change notification settings - Fork 524
Expand file tree
/
Copy pathpayments_test.go
More file actions
78 lines (67 loc) · 2.14 KB
/
Copy pathpayments_test.go
File metadata and controls
78 lines (67 loc) · 2.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package telebot
import (
"encoding/json"
"testing"
"github.com/stretchr/testify/assert"
)
func TestPaymentSubscriptionFields(t *testing.T) {
jsonData := `{
"currency": "XTR",
"total_amount": 1000,
"invoice_payload": "test_payload",
"telegram_payment_charge_id": "charge_123",
"provider_payment_charge_id": "provider_456",
"subscription_expiration_date": 1700000000,
"is_recurring": true,
"is_first_recurring": false
}`
var p Payment
err := json.Unmarshal([]byte(jsonData), &p)
assert.NoError(t, err)
assert.Equal(t, "XTR", p.Currency)
assert.Equal(t, 1000, p.Total)
assert.Equal(t, int64(1700000000), p.SubscriptionExpirationDate)
assert.True(t, p.IsRecurring)
assert.False(t, p.IsFirstRecurring)
}
func TestPaymentSubscriptionFieldsOmitEmpty(t *testing.T) {
p := Payment{
Currency: "XTR",
Total: 500,
TelegramChargeID: "charge_789",
}
data, err := json.Marshal(p)
assert.NoError(t, err)
// Verify subscription fields are omitted when zero value
var result map[string]interface{}
err = json.Unmarshal(data, &result)
assert.NoError(t, err)
assert.NotContains(t, result, "subscription_expiration_date")
assert.NotContains(t, result, "is_recurring")
assert.NotContains(t, result, "is_first_recurring")
}
func TestInvoiceSubscriptionFields(t *testing.T) {
invoice := Invoice{
Title: "Test Subscription",
Description: "Monthly subscription",
Currency: "XTR",
SubscriptionPeriod: 2592000, // 30 days in seconds
BusinessConnectionID: "conn_123",
}
params := invoice.params()
assert.Equal(t, "Test Subscription", params["title"])
assert.Equal(t, "Monthly subscription", params["description"])
assert.Equal(t, "XTR", params["currency"])
assert.Equal(t, "2592000", params["subscription_period"])
assert.Equal(t, "conn_123", params["business_connection_id"])
}
func TestInvoiceParamsOmitEmptySubscription(t *testing.T) {
invoice := Invoice{
Title: "Test Invoice",
Description: "One-time payment",
Currency: "USD",
}
params := invoice.params()
assert.NotContains(t, params, "subscription_period")
assert.NotContains(t, params, "business_connection_id")
}