group_test.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. //go:build unit
  2. package service
  3. import (
  4. "testing"
  5. "github.com/stretchr/testify/require"
  6. )
  7. // TestGroup_GetImagePrice_1K 测试 1K 尺寸返回正确价格
  8. func TestGroup_GetImagePrice_1K(t *testing.T) {
  9. price := 0.10
  10. group := &Group{
  11. ImagePrice1K: &price,
  12. }
  13. result := group.GetImagePrice("1K")
  14. require.NotNil(t, result)
  15. require.InDelta(t, 0.10, *result, 0.0001)
  16. }
  17. // TestGroup_GetImagePrice_2K 测试 2K 尺寸返回正确价格
  18. func TestGroup_GetImagePrice_2K(t *testing.T) {
  19. price := 0.15
  20. group := &Group{
  21. ImagePrice2K: &price,
  22. }
  23. result := group.GetImagePrice("2K")
  24. require.NotNil(t, result)
  25. require.InDelta(t, 0.15, *result, 0.0001)
  26. }
  27. // TestGroup_GetImagePrice_4K 测试 4K 尺寸返回正确价格
  28. func TestGroup_GetImagePrice_4K(t *testing.T) {
  29. price := 0.30
  30. group := &Group{
  31. ImagePrice4K: &price,
  32. }
  33. result := group.GetImagePrice("4K")
  34. require.NotNil(t, result)
  35. require.InDelta(t, 0.30, *result, 0.0001)
  36. }
  37. // TestGroup_GetImagePrice_UnknownSize 测试未知尺寸回退 2K
  38. func TestGroup_GetImagePrice_UnknownSize(t *testing.T) {
  39. price2K := 0.15
  40. group := &Group{
  41. ImagePrice2K: &price2K,
  42. }
  43. // 未知尺寸 "3K" 应该回退到 2K
  44. result := group.GetImagePrice("3K")
  45. require.NotNil(t, result)
  46. require.InDelta(t, 0.15, *result, 0.0001)
  47. // 空字符串也回退到 2K
  48. result = group.GetImagePrice("")
  49. require.NotNil(t, result)
  50. require.InDelta(t, 0.15, *result, 0.0001)
  51. }
  52. // TestGroup_GetImagePrice_NilValues 测试未配置时返回 nil
  53. func TestGroup_GetImagePrice_NilValues(t *testing.T) {
  54. group := &Group{
  55. // 所有 ImagePrice 字段都是 nil
  56. }
  57. require.Nil(t, group.GetImagePrice("1K"))
  58. require.Nil(t, group.GetImagePrice("2K"))
  59. require.Nil(t, group.GetImagePrice("4K"))
  60. require.Nil(t, group.GetImagePrice("unknown"))
  61. }
  62. // TestGroup_GetImagePrice_PartialConfig 测试部分配置
  63. func TestGroup_GetImagePrice_PartialConfig(t *testing.T) {
  64. price1K := 0.10
  65. group := &Group{
  66. ImagePrice1K: &price1K,
  67. // ImagePrice2K 和 ImagePrice4K 未配置
  68. }
  69. result := group.GetImagePrice("1K")
  70. require.NotNil(t, result)
  71. require.InDelta(t, 0.10, *result, 0.0001)
  72. // 2K 和 4K 返回 nil
  73. require.Nil(t, group.GetImagePrice("2K"))
  74. require.Nil(t, group.GetImagePrice("4K"))
  75. }