package qualityowner import "testing" func TestParseConfigValueDefaultsAndValidation(t *testing.T) { rules, err := ParseConfigValue(`{"insurance_fee_bps":800,"premium_insurance_fee_bps":400}`) if err != nil { t.Fatalf("ParseConfigValue() error = %v", err) } if rules.DepositAmountCent != defaultDepositCent || rules.InsuranceFeeBps != 800 || rules.PremiumInsuranceFeeBps != 400 { t.Fatalf("unexpected rules: %+v", rules) } if rules.AgreementTitle != defaultAgreementTitle || rules.AgreementReadSeconds != defaultAgreementReadSeconds || rules.AgreementContent == "" { t.Fatalf("unexpected agreement defaults: %+v", rules) } if _, err := ParseConfigValue(`{"deposit_amount_cent":20000,"insurance_fee_bps":400,"premium_insurance_fee_bps":800}`); err == nil { t.Fatal("expected premium rate above normal rate to be rejected") } if _, err := ParseConfigValue(`{"deposit_amount_cent":0}`); err == nil { t.Fatal("expected zero deposit to be rejected") } if _, err := ParseConfigValue(`{"agreement_read_seconds":14}`); err == nil { t.Fatal("expected agreement reading time below 15 seconds to be rejected") } } func TestDefaultConfigValueCanBeParsed(t *testing.T) { rules, err := ParseConfigValue(DefaultConfigValue()) if err != nil { t.Fatalf("ParseConfigValue(DefaultConfigValue()) error = %v", err) } if rules.DepositAmountCent != 20000 || rules.InsuranceFeeBps != 800 || rules.PremiumInsuranceFeeBps != 400 { t.Fatalf("unexpected default rules: %+v", rules) } if rules.AgreementReadSeconds != 15 || rules.AgreementTitle == "" || rules.AgreementContent == "" { t.Fatalf("unexpected default agreement: %+v", rules) } }