1
0
Fork 0

Refactored summarizer engine selection and added tests

This commit is contained in:
Bram Schoenmakers 2024-02-18 20:19:44 +01:00
parent 7d6f6f1cf1
commit 01a761a2ff
Signed by: bram
GPG key ID: 0CCD19DFDC63258F
2 changed files with 29 additions and 4 deletions

View file

@ -304,6 +304,21 @@ https://www.example.com"
(it "returns a summary for an HTTP URL"
(expect (kagi-summarize dummy-http-url) :to-equal dummy-output))
(it "throws for an unsupported URL scheme"
(expect (kagi-summarize dummy-ftp-url) :to-throw)))))
(expect (kagi-summarize dummy-ftp-url) :to-throw))
(it "return a summary for a valid engine with different capitalization"
(expect (kagi-summarize dummy-https-url nil "Daphne") :to-equal dummy-output)
(let ((args (car (spy-calls-args-for #'kagi--call-summarizer 0))))
(expect (map-elt args "engine") :to-equal "daphne"))
)
(it "uses kagi-summarizer-engine variable for invalid engine values"
(setq kagi-summarizer-engine "Daphne")
(expect (kagi-summarize dummy-https-url nil "bram") :to-equal dummy-output)
(let ((args (car (spy-calls-args-for #'kagi--call-summarizer 0))))
(expect (map-elt args "engine") :to-equal "daphne")))
(it "uses the cecil engine when an invalid engine is configured"
(setq kagi-summarizer-engine "steve")
(expect (kagi-summarize dummy-https-url) :to-equal dummy-output)
(let ((args (car (spy-calls-args-for #'kagi--call-summarizer 0))))
(expect (map-elt args "engine") :to-equal "cecil"))))))
;;; kagi-test.el ends here

16
kagi.el
View file

@ -539,6 +539,18 @@ to `kagi-summarizer-default-language'."
kagi-summarizer-default-language)
(t "EN")))
(defun kagi--valid-engine-p (engine)
"Return non-nil when the given ENGINE is valid."
(and (stringp engine)
(map-elt kagi--summarizer-engines (downcase engine))))
(defun kagi--summarizer-engine (hint)
"Return a valid engine name based on the name given in HINT."
(cond ((kagi--valid-engine-p hint) (downcase hint))
((kagi--valid-engine-p kagi-summarizer-engine)
(downcase kagi-summarizer-engine))
(t "cecil")))
(defun kagi-summarize (text-or-url &optional language engine format)
"Return the summary of the given TEXT-OR-URL.
@ -554,9 +566,7 @@ of text and `takeaway' returns a bullet list."
(let* ((kagi-summarizer-default-language
(kagi--summarizer-determine-language language))
(kagi-summarizer-engine
(if (stringp engine)
(downcase engine)
kagi-summarizer-engine))
(kagi--summarizer-engine engine))
(kagi-summarizer-default-summary-format format))
(if-let* ((response (if (kagi--url-p text-or-url)
(kagi--call-url-summarizer text-or-url)