| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- package service
- import (
- "testing"
- "github.com/stretchr/testify/require"
- )
- func TestClassifyImageBillingTier(t *testing.T) {
- tests := []struct {
- name string
- size string
- wantTier string
- wantOK bool
- }{
- {name: "explicit 2k square", size: "2048x2048", wantTier: "2K", wantOK: true},
- {name: "explicit 2k landscape", size: "2048x1152", wantTier: "2K", wantOK: true},
- {name: "explicit 4k landscape", size: "3840x2160", wantTier: "4K", wantOK: true},
- {name: "explicit 4k portrait", size: "2160x3840", wantTier: "4K", wantOK: true},
- {name: "long edge 1k", size: "1024X768", wantTier: "1K", wantOK: true},
- {name: "long edge 2k", size: "1280x768", wantTier: "2K", wantOK: true},
- {name: "long edge 4k", size: "2560x1600", wantTier: "4K", wantOK: true},
- {name: "tier string 1k", size: "1k", wantTier: "1K", wantOK: true},
- {name: "empty", size: "", wantOK: false},
- {name: "auto", size: "auto", wantOK: false},
- {name: "invalid", size: "not-a-size", wantOK: false},
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- gotTier, gotOK := ClassifyImageBillingTier(tt.size)
- require.Equal(t, tt.wantOK, gotOK)
- require.Equal(t, tt.wantTier, gotTier)
- })
- }
- }
- func TestResolveImageBillingSize(t *testing.T) {
- tests := []struct {
- name string
- inputSize string
- outputSizes []string
- wantBilling string
- wantOutput string
- wantSource string
- wantBreakdown map[string]int
- }{
- {
- name: "output wins over input",
- inputSize: "1024x1024",
- outputSizes: []string{"3840x2160"},
- wantBilling: "4K",
- wantOutput: "3840x2160",
- wantSource: ImageSizeSourceOutput,
- wantBreakdown: map[string]int{"4K": 1},
- },
- {
- name: "input fallback",
- inputSize: "1024x1024",
- wantBilling: "1K",
- wantSource: ImageSizeSourceInput,
- },
- {
- name: "auto defaults",
- inputSize: "auto",
- wantBilling: "2K",
- wantSource: ImageSizeSourceDefault,
- },
- {
- name: "empty defaults",
- inputSize: "",
- wantBilling: "2K",
- wantSource: ImageSizeSourceDefault,
- },
- {
- name: "invalid defaults",
- inputSize: "largest",
- wantBilling: "2K",
- wantSource: ImageSizeSourceDefault,
- },
- {
- name: "mixed output chooses highest tier",
- inputSize: "1024x1024",
- outputSizes: []string{"1024x1024", "3840x2160", "1280x720"},
- wantBilling: "4K",
- wantOutput: "1024x1024",
- wantSource: ImageSizeSourceOutput,
- wantBreakdown: map[string]int{"1K": 1, "2K": 1, "4K": 1},
- },
- {
- name: "unparseable output falls back to parseable input",
- inputSize: "2048x1152",
- outputSizes: []string{"auto"},
- wantBilling: "2K",
- wantOutput: "auto",
- wantSource: ImageSizeSourceInput,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- got := ResolveImageBillingSize(tt.inputSize, tt.outputSizes)
- require.Equal(t, tt.wantBilling, got.BillingSize)
- require.Equal(t, tt.inputSize, got.InputSize)
- require.Equal(t, tt.wantOutput, got.OutputSize)
- require.Equal(t, tt.wantSource, got.Source)
- require.Equal(t, tt.wantBreakdown, got.Breakdown)
- })
- }
- }
|