;;; test-counsel-projectile.el --- Buttercup tests for counsel-projectile -*- lexical-binding: t; -*- ;;; Commentary: ;;; Code: (require 'with-simulated-input) (require 'counsel-projectile) ;; Example test! (describe "counsel-projectile-switch-project with a mock" (before-each (spy-on 'ivy-read) (spy-on 'projectile-project-root :and-return-value "/usr/fake-project") (setq projectile-known-projects '("/usr/fake-project" "~/some-project") counsel-projectile-switch-project-action 'counsel-projectile-switch-project-action)) (it "spies on ivy-read arguments" (counsel-projectile-switch-project) (expect 'projectile-project-root :to-have-been-called) (expect 'ivy-read :to-have-been-called-with "[fake-project] Switch to project: " '("/usr/fake-project" "~/some-project") :preselect "/usr/fake-project" :action counsel-projectile-switch-project-action :require-match t :sort nil :caller 'counsel-projectile-switch-project))) (describe "counsel-projectile-switch-project with the real ivy-read" (before-each (spy-on 'projectile-project-root :and-return-value "/usr/fake-project") (setq counsel-projectile-switch-project-action 'counsel-projectile-switch-project-action)) (it "signals error when project is unknown" (expect (with-simulated-input "/usr/fake RET" (condition-case err (counsel-projectile-switch-project) (file-missing (error-message-string err)))) :to-equal "Setting current directory: No such file or directory, /usr/fake-project"))) ;;; test-counsel-projectile.el ends here