mirror of
https://github.com/hanzoai/commerce.git
synced 2026-10-30 15:08:42 +00:00
Multi-tenant commerce and billing: orders, subscriptions, invoices, plans, usage metering and a credit ledger. One Go binary. MIT OR Apache-2.0. Claude-Session: https://claude.ai/code/session_01SAtaDFm8VDiWrhYHNNtxMw
99 lines
2.8 KiB
Go
99 lines
2.8 KiB
Go
package engine
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/hanzoai/commerce/config"
|
|
)
|
|
|
|
func TestTierForReferralCount_Starter(t *testing.T) {
|
|
tier := tierForReferralCount(0)
|
|
if tier.Id != "starter" {
|
|
t.Fatalf("expected starter tier for 0 referrals, got %s", tier.Id)
|
|
}
|
|
if tier.Rewards.RevenueSharePercent != 15 {
|
|
t.Fatalf("expected 15%% revenue share for starter, got %.2f%%", tier.Rewards.RevenueSharePercent)
|
|
}
|
|
}
|
|
|
|
func TestTierForReferralCount_Growth(t *testing.T) {
|
|
tier := tierForReferralCount(10)
|
|
if tier.Id != "growth" {
|
|
t.Fatalf("expected growth tier for 10 referrals, got %s", tier.Id)
|
|
}
|
|
if tier.Rewards.RevenueSharePercent != 15 {
|
|
t.Fatalf("expected 15%% revenue share for growth, got %.2f%%", tier.Rewards.RevenueSharePercent)
|
|
}
|
|
}
|
|
|
|
func TestTierForReferralCount_Pro(t *testing.T) {
|
|
tier := tierForReferralCount(50)
|
|
if tier.Id != "pro" {
|
|
t.Fatalf("expected pro tier for 50 referrals, got %s", tier.Id)
|
|
}
|
|
if tier.Rewards.RevenueSharePercent != 20 {
|
|
t.Fatalf("expected 20%% revenue share for pro, got %.2f%%", tier.Rewards.RevenueSharePercent)
|
|
}
|
|
}
|
|
|
|
func TestTierForReferralCount_Partner(t *testing.T) {
|
|
tier := tierForReferralCount(200)
|
|
if tier.Id != "partner" {
|
|
t.Fatalf("expected partner tier for 200 referrals, got %s", tier.Id)
|
|
}
|
|
if tier.Rewards.RevenueSharePercent != 25 {
|
|
t.Fatalf("expected 25%% revenue share for partner, got %.2f%%", tier.Rewards.RevenueSharePercent)
|
|
}
|
|
}
|
|
|
|
func TestTierForReferralCount_HighCount(t *testing.T) {
|
|
tier := tierForReferralCount(1000)
|
|
if tier.Id != "partner" {
|
|
t.Fatalf("expected partner tier for 1000 referrals, got %s", tier.Id)
|
|
}
|
|
}
|
|
|
|
func TestTierForReferralCount_BoundaryGrowth(t *testing.T) {
|
|
// 9 should be starter, 10 should be growth
|
|
tier9 := tierForReferralCount(9)
|
|
if tier9.Id != "starter" {
|
|
t.Fatalf("expected starter for 9 referrals, got %s", tier9.Id)
|
|
}
|
|
|
|
tier10 := tierForReferralCount(10)
|
|
if tier10.Id != "growth" {
|
|
t.Fatalf("expected growth for 10 referrals, got %s", tier10.Id)
|
|
}
|
|
}
|
|
|
|
func TestTierForReferralCount_BoundaryPro(t *testing.T) {
|
|
tier49 := tierForReferralCount(49)
|
|
if tier49.Id != "growth" {
|
|
t.Fatalf("expected growth for 49 referrals, got %s", tier49.Id)
|
|
}
|
|
|
|
tier50 := tierForReferralCount(50)
|
|
if tier50.Id != "pro" {
|
|
t.Fatalf("expected pro for 50 referrals, got %s", tier50.Id)
|
|
}
|
|
}
|
|
|
|
func TestTierForReferralCount_BoundaryPartner(t *testing.T) {
|
|
tier199 := tierForReferralCount(199)
|
|
if tier199.Id != "pro" {
|
|
t.Fatalf("expected pro for 199 referrals, got %s", tier199.Id)
|
|
}
|
|
|
|
tier200 := tierForReferralCount(200)
|
|
if tier200.Id != "partner" {
|
|
t.Fatalf("expected partner for 200 referrals, got %s", tier200.Id)
|
|
}
|
|
}
|
|
|
|
func TestLoadReferralProgram_HasTiers(t *testing.T) {
|
|
cfg := config.GetReferralProgram()
|
|
if len(cfg.Tiers) != 4 {
|
|
t.Fatalf("expected 4 tiers, got %d", len(cfg.Tiers))
|
|
}
|
|
}
|