Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

TST: Add basic test for metaweblog.el

  • Loading branch information...
commit 20cced3ca402fe4de6da57147508aaddacd15991 1 parent 39a2525
@punchagan punchagan authored
Showing with 138 additions and 1 deletion.
  1. +1 −1  metaweblog.el
  2. +137 −0 test-metaweblog.el
View
2  metaweblog.el
@@ -346,7 +346,7 @@ title of the post, post contents, list of categories, and date respectively."
(defun metaweblog-get-post (blog-xmlrpc user-name password post-id)
"Retrieves a post from the weblog. POST-ID is the id of the post
-which is to be returned"
+which is to be returned. Can be used with pages as well."
(xml-rpc-method-call blog-xmlrpc
"metaWeblog.getPost"
post-id
View
137 test-metaweblog.el
@@ -0,0 +1,137 @@
+;;; test-metaweblog.el --- tests for metaweblog.el
+;; Copyright (C) 2012 Puneeth Chaganti
+
+(require 'metaweblog)
+
+;;;;; Test env-setup ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(setq blog-xmlrpc "http://localhost/xmlrpc.php"
+ blog-user "admin"
+ blog-pass "test123"
+ blog-id "1")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Util functions
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun random-string (length)
+ "Return a random string of given length"
+ (let ((alpha "abcdefghijklmnopqrstuvwxyz")
+ (char-list))
+ (dotimes (char length)
+ (setq char-list (cons (string (elt "abcdefghijklmnopqrstuvwxyz" (random 25))) char-list)))
+ (mapconcat 'identity char-list "")))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Tests
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(ert-deftest test-new-category ()
+ "Test if creating a new category works."
+ (let* ((category (random-string 8))
+ ;; Add new category
+ (category-id (wp-new-category blog-xmlrpc blog-user blog-pass blog-id category)))
+ ;; List all categories and check if our category is present that list
+ (setq categories (metaweblog-get-categories blog-xmlrpc blog-user blog-pass blog-id))
+ (dolist (cat categories)
+ (if (equal (cdr (assoc "categoryId" cat)) category-id)
+ (should (equal (cdr (assoc "categoryName" cat)) category))))))
+
+(ert-deftest test-new-tag ()
+ "Test if getting tags works. This test does nothing, just
+checks if Wordpress version has the API.
+FIXME: Make this a real test ..."
+ (let* ()
+ (setq tag-list (wp-get-tags blog-xmlrpc blog-user blog-pass blog-id))))
+
+(ert-deftest test-pages ()
+ "Test if creating, listing, fetching content and deleting pages works."
+ (let* ((content '(("date" . "20120817T18:30:00+0000")
+ ("title" . "Hello World")
+ ("tags" "org2blog" "emacs")
+ ("categories" "org2blog" "emacs")
+ ("post-id")
+ ("parent" . "0")
+ ("excerpt" . "")
+ ("permalink" . "")
+ ("description" . "<p>Test content.</p>")))
+
+ ;; Post a new page
+ (page-id (wp-new-page blog-xmlrpc blog-user blog-pass blog-id content nil))
+ (fetched-page (metaweblog-get-post blog-xmlrpc blog-user blog-pass page-id))
+ (new-content "<p>New Content</p>"))
+
+ ;; Check if fetched-page's content and posted content match
+ (should (equal (cdr (assoc "description" fetched-page)) (cdr (assoc "description" content))))
+
+ ;; Change content and post again...
+ (setcdr (assoc "description" content) new-content)
+ (wp-edit-page blog-xmlrpc blog-user blog-pass blog-id page-id content nil)
+ ;; Fetch page again and check if content changed
+ (setq fetched-page (metaweblog-get-post blog-xmlrpc blog-user blog-pass page-id))
+ (should (equal (cdr (assoc "description" fetched-page)) (cdr (assoc "description" content))))
+
+ ;; List pages
+ ;; Check if our page is listed in minimal listing
+ (dolist (page (wp-get-pagelist blog-xmlrpc blog-user blog-pass blog-id))
+ (if (equal (cdr (assoc "post_id" page)) page-id)
+ (should (equal (cdr (assoc "page_title" page)) (cdr (assoc "title" content))))))
+
+ ;; Check if our page is listed in full listing
+ (dolist (page (wp-get-pages blog-xmlrpc blog-user blog-pass blog-id))
+ (if (equal (cdr (assoc "post_id" page)) page-id)
+ (should (equal (cdr (assoc "page_title" page)) (cdr (assoc "title" content))))))
+
+ ;; Delete page
+ (wp-delete-page blog-xmlrpc blog-id blog-user blog-pass page-id)))
+
+(ert-deftest test-posts ()
+ "Test if creating, listing, fetching content and deleting posts works."
+ (let* ((content '(("date" . "20120817T18:30:00+0000")
+ ("title" . "Hello World")
+ ("tags" "org2blog" "emacs")
+ ("categories" "org2blog" "emacs")
+ ("post-id")
+ ("parent" . "0")
+ ("excerpt" . "")
+ ("permalink" . "")
+ ("description" . "<p>Test content.</p>")))
+
+ ;; Make a new post
+ (post-id (metaweblog-new-post blog-xmlrpc blog-user blog-pass blog-id content nil))
+ (fetched-post (metaweblog-get-post blog-xmlrpc blog-user blog-pass post-id))
+ (new-content "<p>New Content</p>"))
+
+ ;; Check if fetched-post's content and posted content match
+ (should (equal (cdr (assoc "description" fetched-post)) (cdr (assoc "description" content))))
+
+ ;; Change content and post again...
+ (setcdr (assoc "description" content) new-content)
+ (metaweblog-edit-post blog-xmlrpc blog-user blog-pass post-id content nil)
+ ;; Fetch post again and check if content changed
+ (setq fetched-post (metaweblog-get-post blog-xmlrpc blog-user blog-pass post-id))
+ (should (equal (cdr (assoc "description" fetched-post)) (cdr (assoc "description" content))))
+
+ ;; List recent posts and check if our post is listed
+ (dolist (post (metaweblog-get-recent-posts blog-xmlrpc blog-id blog-user blog-pass 1000))
+ (when (equal (cdr (assoc "postid" post)) post-id)
+ (should (equal (cdr (assoc "title" post)) (cdr (assoc "title" content))))
+ (should (equal (cdr (assoc "description" post)) (cdr (assoc "description" content))))))
+
+ ;; Delete post
+ (metaweblog-delete-post blog-xmlrpc blog-user blog-pass post-id)))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; FIXME: Write tests for these functions ...
+;; (defun get-file-properties (file)
+;; "Gets the properties of a file. Returns an assoc list with
+;; name - file name
+;; bits - data of the file as a base64 encoded string
+;; type - mimetype of file deduced from extension.")
+
+;; (defun metaweblog-upload-file (blog-xmlrpc user-name password blog-id file)
+;; "Uploads file to the blog. FILE will be an alist name, type,
+;; bits, as keys mapped to name of the file, mime type and the
+;; data.")
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Please sign in to comment.
Something went wrong with that request. Please try again.