channel_monitor_service_grok_test.go 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. //go:build unit
  2. package service
  3. import "testing"
  4. func TestApplyMonitorUpdate_ProviderOnlySwitchToGrokUsesDefaultModel(t *testing.T) {
  5. grok := MonitorProviderGrok
  6. existing := &ChannelMonitor{
  7. Provider: MonitorProviderOpenAI,
  8. APIMode: MonitorAPIModeResponses,
  9. Endpoint: "https://api.openai.com/v1",
  10. PrimaryModel: "gpt-5",
  11. IntervalSeconds: 60,
  12. }
  13. err := applyMonitorUpdate(existing, ChannelMonitorUpdateParams{Provider: &grok})
  14. if err != nil {
  15. t.Fatalf("provider-only switch to Grok failed: %v", err)
  16. }
  17. if existing.PrimaryModel != MonitorDefaultGrokModel {
  18. t.Fatalf("expected Grok default model %q, got %q", MonitorDefaultGrokModel, existing.PrimaryModel)
  19. }
  20. if existing.APIMode != MonitorAPIModeChatCompletions {
  21. t.Fatalf("expected Grok API mode %q, got %q", MonitorAPIModeChatCompletions, existing.APIMode)
  22. }
  23. }
  24. func TestApplyMonitorUpdate_SwitchToGrokPreservesExplicitModel(t *testing.T) {
  25. grok := MonitorProviderGrok
  26. explicitModel := "grok-4.3"
  27. existing := &ChannelMonitor{
  28. Provider: MonitorProviderOpenAI,
  29. APIMode: MonitorAPIModeChatCompletions,
  30. Endpoint: "https://api.openai.com/v1",
  31. PrimaryModel: "gpt-5",
  32. IntervalSeconds: 60,
  33. }
  34. err := applyMonitorUpdate(existing, ChannelMonitorUpdateParams{
  35. Provider: &grok,
  36. PrimaryModel: &explicitModel,
  37. })
  38. if err != nil {
  39. t.Fatalf("switch to Grok with explicit model failed: %v", err)
  40. }
  41. if existing.PrimaryModel != explicitModel {
  42. t.Fatalf("expected explicit model %q, got %q", explicitModel, existing.PrimaryModel)
  43. }
  44. }
  45. func TestApplyMonitorUpdate_SameGrokProviderDoesNotResetExistingModel(t *testing.T) {
  46. grok := MonitorProviderGrok
  47. existing := &ChannelMonitor{
  48. Provider: MonitorProviderGrok,
  49. APIMode: MonitorAPIModeChatCompletions,
  50. Endpoint: "https://api.x.ai",
  51. PrimaryModel: "grok-4.3",
  52. IntervalSeconds: 60,
  53. }
  54. err := applyMonitorUpdate(existing, ChannelMonitorUpdateParams{Provider: &grok})
  55. if err != nil {
  56. t.Fatalf("same-provider Grok update failed: %v", err)
  57. }
  58. if existing.PrimaryModel != "grok-4.3" {
  59. t.Fatalf("same-provider update reset existing model to %q", existing.PrimaryModel)
  60. }
  61. }
  62. func TestApplyMonitorUpdate_SwitchToGrokRejectsResponsesMode(t *testing.T) {
  63. grok := MonitorProviderGrok
  64. responses := MonitorAPIModeResponses
  65. existing := &ChannelMonitor{
  66. Provider: MonitorProviderOpenAI,
  67. APIMode: MonitorAPIModeChatCompletions,
  68. PrimaryModel: "gpt-5",
  69. IntervalSeconds: 60,
  70. }
  71. err := applyMonitorUpdate(existing, ChannelMonitorUpdateParams{
  72. Provider: &grok,
  73. APIMode: &responses,
  74. })
  75. if err == nil {
  76. t.Fatal("Grok responses mode should remain unsupported")
  77. }
  78. }