Skip to content

Commit 276ebdc

Browse files
committed
test: unit test added for client, response, internal pkg
1 parent ac673bd commit 276ebdc

File tree

3 files changed

+149
-0
lines changed

3 files changed

+149
-0
lines changed

client/client_unit_test.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package client
2+
3+
import (
4+
"testing"
5+
6+
"github.com/go-deepseek/deepseek/request"
7+
"github.com/stretchr/testify/assert"
8+
)
9+
10+
func TestValidateChatParams(t *testing.T) {
11+
12+
t.Run("no err for valid req", func(t *testing.T) {
13+
chatReq := &request.ChatCompletionsRequest{
14+
Model: "deepseek-chat",
15+
Stream: false,
16+
}
17+
err := validateChatParams(chatReq, false, "deepseek-chat")
18+
assert.NoError(t, err)
19+
})
20+
21+
t.Run("err for invalid req having wrong model", func(t *testing.T) {
22+
chatReq := &request.ChatCompletionsRequest{
23+
Model: "deepseek-reasoner",
24+
Stream: false,
25+
}
26+
err := validateChatParams(chatReq, false, "deepseek-chat")
27+
assert.NotNil(t, err)
28+
assert.Contains(t, err.Error(), "deepseek-chat")
29+
})
30+
31+
t.Run("err for invalid req having wrong stream", func(t *testing.T) {
32+
chatReq := &request.ChatCompletionsRequest{
33+
Model: "deepseek-chat",
34+
Stream: true,
35+
}
36+
err := validateChatParams(chatReq, false, "deepseek-chat")
37+
assert.NotNil(t, err)
38+
assert.Contains(t, err.Error(), "false")
39+
})
40+
41+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package internal_test
2+
3+
import (
4+
"testing"
5+
6+
"github.com/go-deepseek/deepseek/internal"
7+
"github.com/stretchr/testify/assert"
8+
)
9+
10+
func TestParseError(t *testing.T) {
11+
12+
t.Run("no err for valid error response", func(t *testing.T) {
13+
body := `{
14+
"error": {
15+
"message": "Authentication Fails (no such user)",
16+
"type": "authentication_error",
17+
"param": null,
18+
"code": "invalid_request_error"
19+
}
20+
}`
21+
22+
got, err := internal.ParseError([]byte(body))
23+
assert.NoError(t, err)
24+
assert.NotNil(t, got)
25+
assert.Equal(t, `Authentication Fails (no such user)`, got.Error.Message)
26+
assert.Equal(t, `authentication_error`, got.Error.Type)
27+
assert.Equal(t, `invalid_request_error`, got.Error.Code)
28+
})
29+
30+
t.Run("err for invalid non-json error response", func(t *testing.T) {
31+
body := `Invalid request`
32+
_, err := internal.ParseError([]byte(body))
33+
assert.Error(t, err)
34+
})
35+
36+
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package response_test
2+
3+
import (
4+
"encoding/json"
5+
"testing"
6+
7+
"github.com/go-deepseek/deepseek/response"
8+
"github.com/stretchr/testify/assert"
9+
)
10+
11+
func TestChatResponse_LoadJson(t *testing.T) {
12+
content := `{
13+
"id": "7713fabe-5401-4fbb-905f-0bead65ce42f",
14+
"object": "chat.completion",
15+
"created": 1738119582,
16+
"model": "deepseek-chat",
17+
"choices": [
18+
{
19+
"index": 0,
20+
"message": {
21+
"role": "assistant",
22+
"content": "Hello! How can I assist you today? 😊"
23+
},
24+
"logprobs": null,
25+
"finish_reason": "stop"
26+
}
27+
],
28+
"usage": {
29+
"prompt_tokens": 11,
30+
"completion_tokens": 11,
31+
"total_tokens": 22,
32+
"prompt_tokens_details": {
33+
"cached_tokens": 0
34+
},
35+
"prompt_cache_hit_tokens": 0,
36+
"prompt_cache_miss_tokens": 11
37+
},
38+
"system_fingerprint": "fp_3a5770e1b4"
39+
}`
40+
chatResp := &response.ChatCompletionsResponse{}
41+
42+
err := json.Unmarshal([]byte(content), chatResp)
43+
44+
assert.NoError(t, err)
45+
46+
// assert chatResp
47+
assert.NotNil(t, chatResp)
48+
assert.Equal(t, chatResp.Id, "7713fabe-5401-4fbb-905f-0bead65ce42f")
49+
assert.Equal(t, chatResp.Object, "chat.completion")
50+
assert.Equal(t, chatResp.Created, 1738119582)
51+
assert.Equal(t, "deepseek-chat", chatResp.Model)
52+
assert.Equal(t, "fp_3a5770e1b4", chatResp.SystemFingerprint)
53+
54+
// assert choices
55+
assert.Len(t, chatResp.Choices, 1)
56+
choice := chatResp.Choices[0]
57+
assert.Equal(t, 0, choice.Index)
58+
assert.NotNil(t, choice.Message)
59+
assert.Equal(t, "assistant", choice.Message.Role)
60+
assert.Equal(t, "Hello! How can I assist you today? 😊", choice.Message.Content)
61+
assert.Equal(t, "stop", choice.FinishReason)
62+
63+
// assert usage
64+
assert.NotNil(t, chatResp.Usage)
65+
assert.Equal(t, 11, chatResp.Usage.PromptTokens)
66+
assert.Equal(t, 11, chatResp.Usage.CompletionTokens)
67+
assert.Equal(t, 22, chatResp.Usage.TotalTokens)
68+
assert.NotNil(t, chatResp.Usage.PromptTokensDetails)
69+
assert.Equal(t, 0, chatResp.Usage.PromptTokensDetails.CachedTokens)
70+
assert.Equal(t, 0, chatResp.Usage.PromptCacheHitTokens)
71+
assert.Equal(t, 11, chatResp.Usage.PromptCacheMissTokens)
72+
}

0 commit comments

Comments
 (0)