diff options
Diffstat (limited to 'tests/test-org-roam-config-slug.el')
| -rw-r--r-- | tests/test-org-roam-config-slug.el | 223 |
1 files changed, 0 insertions, 223 deletions
diff --git a/tests/test-org-roam-config-slug.el b/tests/test-org-roam-config-slug.el deleted file mode 100644 index eb3149dd..00000000 --- a/tests/test-org-roam-config-slug.el +++ /dev/null @@ -1,223 +0,0 @@ -;;; test-org-roam-config-slug.el --- Tests for cj/--generate-roam-slug -*- lexical-binding: t; -*- - -;;; Commentary: -;; Tests for the cj/--generate-roam-slug function from org-roam-config.el -;; -;; This function converts a title to a filename-safe slug by: -;; 1. Converting to lowercase -;; 2. Replacing non-alphanumeric characters with hyphens -;; 3. Removing leading and trailing hyphens -;; -;; Examples: -;; Input: "My Project Name" -;; Output: "my-project-name" -;; -;; Input: "Hello, World!" -;; Output: "hello-world" - -;;; Code: - -(require 'ert) -(require 'testutil-general) - -;; Add modules directory to load path -(add-to-list 'load-path (expand-file-name "modules" user-emacs-directory)) - -;; Now load the actual production module -(require 'org-roam-config) - -;;; Test Helpers - -(defun test-slug (title) - "Test cj/--generate-roam-slug on TITLE. -Returns the slugified string." - (cj/--generate-roam-slug title)) - -;;; Normal Cases - Simple Titles - -(ert-deftest test-slug-simple-word () - "Should return lowercase simple word." - (let ((result (test-slug "Hello"))) - (should (string= result "hello")))) - -(ert-deftest test-slug-multiple-words () - "Should replace spaces with hyphens." - (let ((result (test-slug "My Project Name"))) - (should (string= result "my-project-name")))) - -(ert-deftest test-slug-already-lowercase () - "Should handle already lowercase text." - (let ((result (test-slug "simple"))) - (should (string= result "simple")))) - -(ert-deftest test-slug-mixed-case () - "Should convert mixed case to lowercase." - (let ((result (test-slug "MixedCaseTitle"))) - (should (string= result "mixedcasetitle")))) - -;;; Normal Cases - Punctuation - -(ert-deftest test-slug-with-comma () - "Should remove commas." - (let ((result (test-slug "Hello, World"))) - (should (string= result "hello-world")))) - -(ert-deftest test-slug-with-period () - "Should remove periods." - (let ((result (test-slug "Version 2.0"))) - (should (string= result "version-2-0")))) - -(ert-deftest test-slug-with-exclamation () - "Should remove exclamation marks." - (let ((result (test-slug "Hello World!"))) - (should (string= result "hello-world")))) - -(ert-deftest test-slug-with-question () - "Should remove question marks." - (let ((result (test-slug "What Is This?"))) - (should (string= result "what-is-this")))) - -(ert-deftest test-slug-with-colon () - "Should remove colons." - (let ((result (test-slug "Note: Important"))) - (should (string= result "note-important")))) - -(ert-deftest test-slug-with-parentheses () - "Should remove parentheses." - (let ((result (test-slug "Item (copy)"))) - (should (string= result "item-copy")))) - -;;; Normal Cases - Numbers - -(ert-deftest test-slug-with-numbers () - "Should preserve numbers." - (let ((result (test-slug "Chapter 42"))) - (should (string= result "chapter-42")))) - -(ert-deftest test-slug-only-numbers () - "Should handle titles with only numbers." - (let ((result (test-slug "123"))) - (should (string= result "123")))) - -(ert-deftest test-slug-mixed-alphanumeric () - "Should preserve alphanumeric characters." - (let ((result (test-slug "Test123ABC"))) - (should (string= result "test123abc")))) - -;;; Boundary Cases - Multiple Consecutive Special Chars - -(ert-deftest test-slug-multiple-spaces () - "Should collapse multiple spaces into single hyphen." - (let ((result (test-slug "Hello World"))) - (should (string= result "hello-world")))) - -(ert-deftest test-slug-mixed-punctuation () - "Should collapse mixed punctuation into single hyphen." - (let ((result (test-slug "Hello, ... World!"))) - (should (string= result "hello-world")))) - -(ert-deftest test-slug-consecutive-hyphens () - "Should collapse consecutive hyphens." - (let ((result (test-slug "Hello---World"))) - (should (string= result "hello-world")))) - -;;; Boundary Cases - Leading/Trailing Special Chars - -(ert-deftest test-slug-leading-space () - "Should remove leading hyphen from leading space." - (let ((result (test-slug " Hello"))) - (should (string= result "hello")))) - -(ert-deftest test-slug-trailing-space () - "Should remove trailing hyphen from trailing space." - (let ((result (test-slug "Hello "))) - (should (string= result "hello")))) - -(ert-deftest test-slug-leading-punctuation () - "Should remove leading hyphen from leading punctuation." - (let ((result (test-slug "...Hello"))) - (should (string= result "hello")))) - -(ert-deftest test-slug-trailing-punctuation () - "Should remove trailing hyphen from trailing punctuation." - (let ((result (test-slug "Hello!!!"))) - (should (string= result "hello")))) - -(ert-deftest test-slug-leading-and-trailing () - "Should remove both leading and trailing hyphens." - (let ((result (test-slug " Hello World "))) - (should (string= result "hello-world")))) - -;;; Boundary Cases - Empty and Short - -(ert-deftest test-slug-empty-string () - "Should return empty string for empty input." - (let ((result (test-slug ""))) - (should (string= result "")))) - -(ert-deftest test-slug-only-punctuation () - "Should return empty string for only punctuation." - (let ((result (test-slug "!!!"))) - (should (string= result "")))) - -(ert-deftest test-slug-only-spaces () - "Should return empty string for only spaces." - (let ((result (test-slug " "))) - (should (string= result "")))) - -(ert-deftest test-slug-single-char () - "Should handle single character." - (let ((result (test-slug "A"))) - (should (string= result "a")))) - -;;; Edge Cases - Special Characters - -(ert-deftest test-slug-with-underscore () - "Should replace underscores with hyphens." - (let ((result (test-slug "my_variable_name"))) - (should (string= result "my-variable-name")))) - -(ert-deftest test-slug-with-slash () - "Should remove slashes." - (let ((result (test-slug "path/to/file"))) - (should (string= result "path-to-file")))) - -(ert-deftest test-slug-with-at-sign () - "Should remove at signs." - (let ((result (test-slug "user@example"))) - (should (string= result "user-example")))) - -(ert-deftest test-slug-with-hash () - "Should remove hash symbols." - (let ((result (test-slug "#hashtag"))) - (should (string= result "hashtag")))) - -(ert-deftest test-slug-with-dollar () - "Should remove dollar signs." - (let ((result (test-slug "$price"))) - (should (string= result "price")))) - -;;; Edge Cases - Unicode (if supported) - -(ert-deftest test-slug-with-unicode () - "Should remove unicode characters." - (let ((result (test-slug "Café"))) - (should (string= result "caf")))) - -(ert-deftest test-slug-with-emoji () - "Should remove emoji." - (let ((result (test-slug "Hello 😀 World"))) - (should (string= result "hello-world")))) - -;;; Edge Cases - Long Titles - -(ert-deftest test-slug-very-long-title () - "Should handle very long titles." - (let* ((long-title (mapconcat #'identity (make-list 20 "word") " ")) - (result (test-slug long-title))) - (should (string-prefix-p "word-" result)) - (should (string-suffix-p "-word" result)) - (should (not (string-match-p " " result))))) - -(provide 'test-org-roam-config-slug) -;;; test-org-roam-config-slug.el ends here |
