;;; khoj-tests.el --- Test suite for khoj.el -*- lexical-binding: t -*- ;; Copyright (C) 2023 Debanjum Singh Solanky ;; Author: Debanjum Singh Solanky ;; Version: 0.0.0 ;; Package-Requires: ((emacs "27.1") (transient "0.3.0") (dash "2.19.1") (org "9.0.0")) ;; URL: https://github.com/khoj-ai/khoj/tree/master/src/interface/emacs ;;; License: ;; This program is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License ;; as published by the Free Software Foundation; either version 3 ;; of the License, or (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;;; Commentary: ;; This file contains the test suite for khoj.el. ;;; Code: (require 'dash) (require 'ert) (require 'khoj) (require 'org) ;; ---------------------------------------------------- ;; Test Extract and Render Entries of each Content Type ;; ---------------------------------------------------- (ert-deftest khoj-tests--extract-entries-as-markdown () "Test `json-response', `query' from API formatted as markdown." (let ((user-query "Become God") (json-response-from-khoj-backend (json-read-from-string "[\ {\ \"entry\": \"## Upgrade\\n\\n Penance to Immortality\",\ \"score\": \"0.376\",\ \"additional\": {\ \"file\": \"/home/ravan/upgrade.md\",\ \"compiled\": \"## Upgrade Penance to Immortality\"\ }\ },\ {\ \"entry\": \"## Act\\n\\n Rule everything\",\ \"score\": \"0.153\",\ \"additional\": {\ \"file\": \"/home/ravan/act.md\",\ \"compiled\": \"## Act Rule everything\"\ }\ }]\ "))) (should (equal (khoj--extract-entries-as-markdown json-response-from-khoj-backend user-query) "\ # Become God\n\ ## Upgrade\n\ \n\ Penance to Immortality\n\n\ ## Act\n\ \n\ Rule everything\n\n")))) (ert-deftest khoj-tests--extract-entries-as-org () "Test `json-response', `query' from API formatted as org." (let ((user-query "Become God") (json-response-from-khoj-backend (json-read-from-string "[\ {\ \"entry\": \"** Upgrade\\n\\n Penance to Immortality\\n\",\ \"score\": \"0.42\",\ \"additional\": {\ \"file\": \"/home/ravan/upgrade.md\",\ \"compiled\": \"** Upgrade Penance to Immortality\"\ }\ },\ {\ \"entry\": \"** Act\\n\\n Rule everything\\n\",\ \"score\": \"0.42\",\ \"additional\": {\ \"file\": \"/home/ravan/act.md\",\ \"compiled\": \"** Act Rule everything\"\ }\ }]\ "))) (should (equal (khoj--extract-entries-as-org json-response-from-khoj-backend user-query) "\ * Become God\n\ ** Upgrade\n\ \n\ Penance to Immortality\n\ ** Act\n\ \n\ Rule everything\n\ \n")))) ;; ------------------------------------- ;; Test Helpers for Find Similar Feature ;; ------------------------------------- (ert-deftest khoj-tests--get-current-outline-entry-text () "Test get current outline-mode entry text'." (with-temp-buffer (insert "\ * Become God\n\ ** Upgrade\n\ \n\ Penance to Immortality\n\ ** Act\n\ \n\ Rule everything\\n") (goto-char (point-min)) ;; Test getting current entry text from cursor at start of outline heading (outline-next-visible-heading 1) (should (equal (khoj--get-current-outline-entry-text) "\ ** Upgrade\n\ \n\ Penance to Immortality")) ;; Test getting current entry text from cursor within outline entry (forward-line) (should (equal (khoj--get-current-outline-entry-text) "\ ** Upgrade\n\ \n\ Penance to Immortality")) )) (ert-deftest khoj-tests--get-current-paragraph-text () "Test get current paragraph text'." (with-temp-buffer (insert "\ * Become God\n\ ** Upgrade\n\ \n\ Penance to Immortality\n\ ** Act\n\ \n\ Rule everything\n") ;; Test getting current paragraph text from cursor at start of buffer (goto-char (point-min)) (should (equal (khoj--get-current-paragraph-text) "* Become God\n\ ** Upgrade")) ;; Test getting current paragraph text from cursor within paragraph (goto-char (point-min)) (forward-line 1) (should (equal (khoj--get-current-paragraph-text) "* Become God\n\ ** Upgrade")) ;; Test getting current paragraph text from cursor at paragraph end (goto-char (point-min)) (forward-line 2) (should (equal (khoj--get-current-paragraph-text) "* Become God\n\ ** Upgrade")) ;; Test getting current paragraph text from cursor at start of middle paragraph (goto-char (point-min)) (forward-line 3) (should (equal (khoj--get-current-paragraph-text) "Penance to Immortality\n\ ** Act")) ;; Test getting current paragraph text from cursor at end of buffer (goto-char (point-max)) (should (equal (khoj--get-current-paragraph-text) "Rule everything")) )) (provide 'khoj-tests) ;;; khoj-tests.el ends here