30 lines
948 B
Go
30 lines
948 B
Go
package qoder
|
|
|
|
import "testing"
|
|
|
|
// The listing marks a model free with is_free or a price_factor of 0, in
|
|
// snake or camel case; Qoder's client shows either as free.
|
|
func TestParseModelsFree(t *testing.T) {
|
|
body := []byte(`{"chat":[
|
|
{"key":"flag","enable":true,"is_free":true,"price_factor":1},
|
|
{"key":"camel-flag","enable":true,"isFree":true},
|
|
{"key":"zero","enable":true,"price_factor":0},
|
|
{"key":"camel-zero","enable":true,"priceFactor":0},
|
|
{"key":"paid","enable":true,"is_free":false,"price_factor":0.5},
|
|
{"key":"unsaid","enable":true}
|
|
]}`)
|
|
ms, err := ParseModels(body, ProviderKey)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
want := map[string]bool{"flag": true, "camel-flag": true, "zero": true, "camel-zero": true, "paid": false, "unsaid": false}
|
|
if len(ms) != len(want) {
|
|
t.Fatalf("models %+v", ms)
|
|
}
|
|
for _, m := range ms {
|
|
if m.Free != want[m.ID] {
|
|
t.Errorf("%s: Free = %v, want %v", m.ID, m.Free, want[m.ID])
|
|
}
|
|
}
|
|
}
|