[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/ebdb 6549647 198/350: More tests
From: |
Eric Abrahamsen |
Subject: |
[elpa] externals/ebdb 6549647 198/350: More tests |
Date: |
Mon, 14 Aug 2017 11:46:36 -0400 (EDT) |
branch: externals/ebdb
commit 6549647a384895771113aaafea4746d6143bf421
Author: Eric Abrahamsen <address@hidden>
Commit: Eric Abrahamsen <address@hidden>
More tests
* ebdb-test.el (ebdb-test-with-database, ebdb-test-save-vars): Macros
for set-up and protection against polluting a running EBDB
environment.
(ebdb-test-database-1): Make a temp file name for creating a test
database.
(ebdb-make-database, ebdb-read-database, ebdb-database-unsynced,
ebdb-make-record, ebdb-add-record): New tests.
---
ebdb-test.el | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 73 insertions(+), 1 deletion(-)
diff --git a/ebdb-test.el b/ebdb-test.el
index a1598a3..4687fcf 100644
--- a/ebdb-test.el
+++ b/ebdb-test.el
@@ -24,9 +24,81 @@
;;; Code:
(require 'ert)
-(require 'pcase)
(require 'ebdb)
(require 'ebdb-snarf)
+(eval-when-compile
+ (require 'cl-macs))
+
+;; Testing macros.
+
+(defmacro ebdb-test-with-database (db-and-filename &rest body)
+ "Macro providing a temporary database to work with."
+ (declare (indent 1) (debug t))
+ `(let ((,(car db-and-filename) (make-instance 'ebdb-db-file
+ :file ,(nth 1 db-and-filename)
+ :dirty t)))
+ (ebdb-db-save ,(car db-and-filename))
+ (unwind-protect
+ (progn
+ ,@body)
+ (delete-file ,(nth 1 db-and-filename))
+ (setq ebdb-db-list (remove ,(car db-and-filename)
+ ebdb-db-list)))))
+
+(defmacro ebdb-test-save-vars (&rest body)
+ "Don't let EBDB tests pollute `ebdb-record-tracker'."
+ (declare (indent 0) (debug t))
+ (let ((old-record-tracker (cl-gensym)))
+ `(let ((,old-record-tracker ebdb-record-tracker)
+ (ebdb-record-tracker nil))
+ (unwind-protect
+ (progn
+ ,@body)
+ (setq ebdb-record-tracker ,old-record-tracker)))))
+
+;; Test database file name.
+(defvar ebdb-test-database-1 (make-temp-name
+ (expand-file-name
+ "ebdb-test-db-1-"
+ temporary-file-directory)))
+
+(ert-deftest ebdb-make-database ()
+ "Make a database and save it to disk."
+ (ebdb-test-with-database (db ebdb-test-database-1)
+ (should (file-exists-p ebdb-test-database-1))
+ (should (null (slot-value db 'dirty)))))
+
+(ert-deftest ebdb-read-database ()
+ "Read a database from file."
+ (ebdb-test-with-database (db ebdb-test-database-1)
+ (let ((reloaded
+ (eieio-persistent-read ebdb-test-database-1 'ebdb-db t)))
+ (should (object-of-class-p reloaded 'ebdb-db-file)))))
+
+(ert-deftest ebdb-database-unsynced ()
+ "Make sure database knows it's unsynced."
+ (ebdb-test-with-database (db ebdb-test-database-1)
+ ;; Sync-time doesn't get updated until we load it.
+ (ebdb-db-load db)
+ ;; Apparently the two calls are too close together to register a
+ ;; difference in time, which I find weird.
+ (sit-for 0.1)
+ (append-to-file "\n;; Junk string" nil (slot-value db 'file))
+ (should (ebdb-db-unsynced db))))
+
+(ert-deftest ebdb-make-record ()
+ (ebdb-test-save-vars
+ (let ((rec (make-instance ebdb-default-record-class)))
+ (should (object-of-class-p rec 'ebdb-record)))))
+
+(ert-deftest ebdb-add-record ()
+ "Create a record, add it to DB, and make sure it has a UUID."
+ (ebdb-test-save-vars
+ (ebdb-test-with-database (db ebdb-test-database-1)
+ (let ((rec (make-instance 'ebdb-record-person)))
+ (should (null (ebdb-record-uuid rec)))
+ (ebdb-db-add-record db rec)
+ (should (stringp (ebdb-record-uuid rec)))))))
;; Very basic sanity tests for field instances.
- [elpa] externals/ebdb c8bdb70 194/350: Don't assume Chinese names have both surname and given-names, (continued)
- [elpa] externals/ebdb c8bdb70 194/350: Don't assume Chinese names have both surname and given-names, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 212a1e1 212/350: Snarfing shouldn't pop up its own window, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb fc813dd 193/350: Yet more fixes to proper name formatting, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 06123d9 217/350: Make sure database files are decoded as utf-8-emacs, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb c07babf 203/350: If alt-names search fails, fall back on actual name field search, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 501edfb 149/350: Give Org mode its own popup window, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 0612d92 153/350: Comment out ebdb-mua-auto-snarf-signature, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 957fc1b 157/350: Implement popping of buffer search history, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 3cb827e 181/350: Check for existence of fiel-attribute-modification-time, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb aabe2c0 189/350: Stupid mistake in previous commit, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 6549647 198/350: More tests,
Eric Abrahamsen <=
- [elpa] externals/ebdb f316417 202/350: Change keybinding for ebdb-prev-field, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb bfc5d9d 208/350: Internationalized ebdb-parse method for names must accept slots arg, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 0c2056c 209/350: Basic tests for EBDB's internationalization support, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 2bfb04e 220/350: Move ebdb-message-search to ebdb.el, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 40d71b9 222/350: Steal UUID generating function from Org, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 4937cbd 225/350: Specify class of name fields when updating from MUA, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 13c0a38 216/350: Tweaks to testing macros, more tests, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 2b28f57 239/350: Bump to version 0.2, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb ff3cfa4 232/350: ebdb-parse-i18n for Chinese phones should pass class arg through, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb d5bec83 229/350: Fix to UUID change, Eric Abrahamsen, 2017/08/14