[X] New user
Sign-up form
[X] Create new account
E-mail activation link
[X] Activate account
[X] Login
[X] Lost password
User profile
Change password
Change e-mail and description
Logout, login, save login
Microblog Post
[X] Create microblog
[X] Display microblog
[X] Delete microblog
[X] Undelete microblog
[X] Microblog formatting
Char limit
[X] Microblog stream
Blog Post
[X] Create blog post
no content
blog titles
namespace titles
existing blog titles
[X] Display blog post
blog post source markup
blog post versions
compare blog posts
related blog posts
Blog stream
[X] Delete blog post
[X] Undelete blog post
Blog archives
Blog archives stream
Edit blog posts
Split-screen Blog Editing
Hashtags
Streams
Search and Tags
Search
Tags
Special blog_ tag
RSS
Feed command
Replies
Following
Follow Users
Follow Tags
Rest
Backlinks
Invalid function
Generic post display
Last Blog Viewed
Text size
Theme
Template Includes
Valid HTML Tags
Custom formatting commands
Bracket case
External links
Image Headers
Power Commands
Embedding Media
HTML Entities
In Progress - Junco end-user testing
#inprogress
#juncotodo add webmention info
- webmention endpoint for receiving mentions
- comment in microblog posts
Manually testing the Junco Web app like a user with a browser.
Related: Junco user actions
Homepage
Logged-out user:
- visit "homepage"
- fix the display issue of this page on IE v8
- ensure that all footer links and info work properly:
- about - help - contact - archives - tags - search
- home page link at bottom
- current date and time info at bottom
[X] New user
Sign-up form
- (signup - Signup - show_signup_form)
- click the blue sign-up button.
[X] Create new account
- (createnewuser - Signup - create_new_user)
- enter valid, unique username
- username must contain fewer than 31 characters, and only letters, numbers, and underscores are allowed.
- enter valid, unique e-mail address
- e-mail must be shorter than 256 characters long and properly syntaxed.
- test entering invalid username and e-mail address:
- too short
- too long
- unacceptable characters
- invalid e-mail syntax
- test entering a username that already exists in database.
- test entering an e-mail address that already exists in database.
E-mail activation link
- after signing-up with valid username and e-mail address, test:
- sending of e-mail with activation link (enable/add code)
[X] Activate account
- (acct - Signup - activate_account)
- clicking the activation link in e-mail to activate account
- system automatically creates password for initial account creation, verify password in e-mail.
- if running in debug mode, the auto-generated password and the activation link are displayed immediately after entering username and e-mail address info. when in debug, a valid, functioning e-mail address is not required. the e-mail still needs to have valid syntax, such as x@x.com and username and e-mail still need to be unique, but the system does not send a message to the e-mail address given.
- after clicking the account activation link, login screen should display.
[X] Login
- (login - Login - login)
- test logging in from the homepage.
- login with e-mail address and the auto-gen password.
- (loginform - Login - show_login_form)
- also test logging in via the login form.
[X] Lost password
- (newpassword - Password - create_new_password)
- at bottom of login page, a section exists to have system create and e-mail a new password.
- enter username and e-mail address for the account.
- click button "Mail me a new password."
- test the system sending the e-mail.
- if running in debug mode, the new password will be displayed in the browser.
User profile
Change password
- (user - Profile - show_user)
- (settings - UserSettings - show_user_settings_form)
- (changepassword - Password - change_password)
- after successfully logging in for the first time, change password to something more meaningful and memorable.
- click on username
- click "Change your password, e-mail address, or description info"
- test incorrect info:
- enter incorrect old password
- enter two new passwords that do not match
- test invalid passwords
- test correct info:
- enter old password
- enter new password twice
- click the "modify/password" button
- requirements for passwords created by user:
- must be least 8 chars long.
- max char length is 30.
- must contain at least 4 alpha chars.
- must contain at least 2 numeric chars.
- must contain at least 2 chars from the following list: !@$%^&*
- the alphas, digits, and jibberish chars do not have to be unique, so a password can contain two exclamation marks, which satisfies the jibberish requirement.
Change e-mail and description
- (customizeuser - UserSettings - customize_user)
- (savedchanges - UserSettings - show_user_changes)
- click on "Change your password, e-mail address, or description info"
- change e-mail address
- test invalid e-mail syntax
- enter text in description area
- when pages have been created, test using the include template function to include info from another page or post that will display on user profile page.
Logout, login, save login
- (logout - Logout - logout)
- after successfully changing password, logout, and then log back in with the new password.
- logout and then login by clicking "save login" checkbox.
- close browser
- re-open browser
- visit website to verify that account is automatically logged into site.
Microblog Post
[X] Create microblog
- (addmicroblog - Microblog - add_microblog)
- create microblog post
[X] Display microblog
- (microblogpost - Microblog - show_microblog_post)
- display microblog post
[X] Delete microblog
- (deletemicroblog - Microblog - delete_microblog)
- delete microblog post
[X] Undelete microblog
- (undeletemicroblog - Microblog - undelete_microblog)
- undelete microblog post
[X] Microblog formatting
- The only formatting options permitted within a microblog post are:
- raw URLS that get converted into a clickable link.
- hashtags that get converted into a tag search link.
- the id for a blog or microblog post surrounded by forward slashes like this /847/ which automatically gets made into a "post" link to the blog or microblog.
- create microblog post with a raw URL
Char limit
- create a microblog post with more than the max-allowed characters.
- should receive an error
- example:
- Error: 352 chars entered. Max is 300.
[X] Microblog stream
- (microblog - Stream - show_microblog_stream)
- on user profile page, click on links following "Micro Blog posts:"
- the microblog count link, which displays a stream of the user's microblog posts
- the rss link for the user's microblog posts
- when viewing the user's stream of microblog posts, click on "all microblog postings" to show stream of all users' microblog posts if the code is open to multiple authors
Blog Post
[X] Create blog post
- (blogpostform - BlogAdd - show_blog_post_form)
- (addarticle - BlogAdd - add_blog_post)
- click on "post" link to get the basic textarea box for creating a blog post/article (longform post)
no content
- add no content and click:
- preview button
- post button
- should receive error:
- "You must enter content. You must give a title for your article."
blog titles
- click the "post" link.
- enter content in text area box for blog post.
- click preview button.
- click post button.
- the first line to the first hard return should be automatically turned into the title for the post.
- click the "post" link for a blog post.
- create a blog post with a lengthy bit of content but with no hard return.
- if no hard return, the first X-number of characters will automatically be made into the title.
- click the "post" link.
- create a long title line with a hard return followed by body text.
- the first X-number of characters of the title line will automatically be made into the title. (default max_blog_post_title_length: 150)
- although not required, the markup commands for heading one for Textile and Markdown are permitted on the title line within a blog post. this markup syntax gets ignored by the app, but it's good to include the markup for semantic purposes when viewing markup source or saving markup elsewhere.
- the app converts the first character to uppercase in the title line for display purposes, but the markup is not altered.
namespace titles
- if the title contains a colon punctuation mark, then the text preceding the punctuation mark must equal the username of the user creating the post. this namespace type of naming allows for users to create common titles with their username in the title.
existing blog titles
- create blog post that is titled the same thing as an existing post.
- should receive an error about title already existing.
[X] Display blog post
- (blogpost - BlogDisplay - show_blog_post)
- from the home page stream, click on link for blog post to display it.
- if blog post is private, and user trying to view the post is not logged in and not the owner/author of the post, then the post will not be displayed.
- if older version being displayed, a related message should appear at top of page with a link to the most recent version of blog post.
- if toc command NOT set to "no" then the table of contents should display in upper right part of page. but if browser has been resized smaller or page is displayed on a small screen, the the table of contents will not display regardless of the toc command's value.
- click on the blog title, which should be a link. it will display itself.
- at the bottom of the blog post, click links on the "From" line:
- the author's name, which should display the user's profiel page.
- the "blog" link, which will display a stream of all blog posts created by the author
- click the pound sign permalink for the post to display itself
- click the links for:
- source
- versions
- reply
- EDIT
blog post source markup
- (source - BlogSource - show_blog_source)
- blog post source link:
- displays in plain text the markup of the post.
- Content-type: text/plain
- displays in plain text the markup of the post.
blog post versions
- (versions - BlogVersions - show_version_list)
- blog post versions link:
- displays all versions created for the blog post.
- comparisons or diffs can be made between any two versions.
- if the top-level blog post is private, and the user clicking the versions link is not the logged-in owner of the blog post, then the versions function will error out.
compare blog posts
- (compare - BlogCompare - compare_versions)
- if more than one version exists, by default, the most recent two versions are automatically selected for comparison.
- if desire a different comparison, select the proper radio buttons, then click the "Compare Versions" button.
- the compare page will show lines that are:
- + added (green background color)
- - removed (red background color)
- c changed (yellow background color)
- u unmodified (default background color)
- test user B comparing private blog posts for user A, which depends upon:
- is top-level post public or private?
- are old versions public or private?
- verify behavior for diffs on private posts:
- if top level post is private, and if user not logged in, then compare fails.
- if top level post is private, and if logged-in user is not the owner of the blog post, then the compare fails.
- if at least one of the versions being compared is private, and the author is not the logged in user, then compare fails.
related blog posts
- (relatedblogposts - BlogRelated - show_related_blog_posts)
- create two blog posts where each post contains at least two hashtags that are the same.
- view one of the blog posts. at the bottom of the page, should see: title called "Related blog posts" with the similar blog posts displayed underneath.
- the related blog posts list is based upon at least two hashtags that are the same and shared by more than one post.
- up to five related blog posts are displayed.
- if more than five exist, then a more link is added.
- clicking the more link will list all of the related blog post title links.
Blog stream
- (stream - Stream - show_entire_stream)
- (blog - Stream - show_blog_stream)
- on the home page stream or blog post stream, if the blog body text is greater than X-number of chars defined in config file, then the "more" link will display. (not yet defined in config file. the max number is 250 chars set in Stream.pm)
- if tags exist, then the list of tags will display as small, grey text links on the same line as the date the post was created.
- if the blog body text is shorter than X-number of chars, then the entire post is displayed on the stream page, including the hashtags in the post. it will look similar to a microblog post.
- the tag list will not display as small, grey links since the body text was short enough to display entirely on the home page stream.
- if the power command "showintro=no" was used within the blog body text, then displayed on the home page stream will be:
- blog post title link
- more link
- date created as a small grey text link
- tag list as small grey text links
[X] Delete blog post
- (deleteblog - BlogDelete - delete_blog)
- on the home page, delete a blog post.
[X] Undelete blog post
- (undeleteblog - BlogUndelete - undelete_blog)
- on the home page, undelete a blog post.
Blog archives
- (blogarchives - Archives - show_archives)
- at the bottom of the site or on a user's profile page, click on the "archives" link.
- a list of links that are months and years will be displayed from recent to oldest:
- September 2013
- August 2013
- the list is based upon the creation date of blog posts.
- if clicking the archives link on a user's profile page, then the list is based upon blog posts created by that user.
- if clicking the archives link at the bottom of the site, then the list is based upon blog posts created by all users.
Blog archives stream
- (blogarchivepage - Stream - show_archives_month_year)
- on the archives page, click a month-year link.
- a stream of all blog posts created that month will be displayed like any other stream, youngest to oldest.
Edit blog posts
- (edit - BlogEdit - edit_blog_post)
- (updateblog - BlogUpdate - update_blog_post)
- click link on home page to display blog post.
- at either the top of the blog post or at the bottom of the blog post, click the "EDIT" link.
- test preview button.
- update blog post with no changes.
- update blog post by changing the title line to match an existing blog post.
- should receive an error about the title already being used.
Split-screen Blog Editing
splitscreen - BlogAdd - show_splitscreen_form
splitscreenedit - BlogEdit - splitscreen_edit
Hashtags
For microblog posts and for adding and updating blog posts:
- (tag - Search - tag_search)
- create post with one hashtag
- hashtag should automatically be made into a clickable link, which is a tag search result
- click hashtag links within a post both on the home page stream and within the post when displaying it.
- create post with max number of hashtags defined in config file (default max_unique_hashtags: 8)
- create post with one-plus the max-allowed hashtags.
- should receive an error
- the acceptable chars for a hashtag are what?
- i think it's same as username when creating an account:
- alphanumeric and underscore.
- i think it's same as username when creating an account:
- verify acceptable hashtag chars.
- create hashtag with all non-acceptable chars.
- create hashtag with mix of acceptable and non-acceptable chars.
- a hashtag that is all numbers is not made into a hashtag.
- test creating a hashtag with all numbers.
- when deleting and undeleting blog and microblog posts that contain hashtags, verify that the counts for those hashtags update accordingly.
- correct error message in Microblog.pm - _add_microblog subroutine,which currently states:
- "Only 7 unique hashtags are permitted."
- Instead of a hardcoded number, use the config value in the error message, which is currently set at 8.
Streams
- (blog - Stream - show_blog_stream)
- (stream - Stream - show_entire_stream)
- (microblog - Stream - show_microblog_stream)
- (blogarchivepage - Stream - show_archives_month_year)
- (private - Stream - show_private_blog_stream)
- (draft - Stream - show_draft_blog_stream)
- show stream of all microblog and blog posts for a user.
- show stream of all microblog and blog posts by all users.
- default number of posts displayed per page = 15 (max_entries_on_page)
- when the number of posts in the stream exceeds max_entries_on_page, then the "Older" link appears in the lower right hand corner of page.
- when viewing page 2-plus, the "Newer" link appears in the lower left hand corner of page.
- the entire microblog post is displayed.
- for blog posts, content displayed includes:
- the link title.
- only the first X-number of characters of body text.
- "more" link if body text exceeds the X-number of characters permitted on the stream display.
- if showintro=no command used in body text, then display only the title and the "more" link.
- when the browser is resized smaller or when viewing the site on a small screen, the blog post intro text is not displayed, regardless of the showintro command. the entire microblog post, however, is still displayed.
Search and Tags
- (search - Search - search)
- (searchform - Search - display_search_form)
Search
- enter search term(s)
- enter terms separated by AND
- enter terms separated by OR
- after search results, test clicking on the pound sign permalink for the search
- after search results, test clicking on the RSS link
- the basic SQL search will match on partial words. So "junco" will also match "juncocode."
Tags
- (tag - Search - tag_search)
- (tags - Search - show_tags)
- click on hashtags within blog and microblog posts
- (tagscounts - Search - show_tags_by_counts)
- (tagscountstop - Search - show_tags_by_top_counts)
- when editing a blog post, remove and add tags to verify that the counts update correctly
Special blog_ tag
- blog_username hashtag formats the stream differently.
- the "username" after blog_ has to match the username of the logged in user.
- after clicking on any blog_username, the stream will display like a typical blog.
- the entire blog post can be shown on the stream results page, or if the author uses the "more." command, then only the contents prior to the "more." command will be displayed on the stream results page along with the more link to inform user that more info exists.
- a photo can be displayed within blog_username blog posts on the stream results page for this special tag.
RSS
- (rss - RSS - get_rss)
- check RSS links on user profile page for:
- blog posts
- microblog posts
- stream
- search:
- tag search
- normal search result
Feed command
- use the double-curly brace feed command to display results from a RSS or atom feed within the page. {{feed= URL followed by two right curly braces.
- do above except include the "desc" attribute within the double-curly brace and after the URL to the RSS/atom feed.
- the "desc" attribute should display description information if it's available within the XML file.
Replies
- (reply - Reply - show_reply_form)
- (addreply - Reply - add_reply)
- (replies - Reply - show_replies)
- (repliesstream - Reply - show_replies_stream)
- click reply link to get the reply form.
- replies are microblog posts with the same formatting and max character limitations.
- test formatting and max char count for a reply.
- add legitimate reply.
- view thread of replies and parent post.
- test reply to a reply.
- verify links for discussion thread and parent post within a reply thread.
- test replies from another user. after clicking "replies" link in nav bar, a stream of replies from other users will appear.
- add reply to a post created by another user.
Following
- (follow - Following - follow_user)
- (followtag - Following - follow_tag)
- (following - Following - show_following)
- (followedby - Following - show_followed_by (disabled))
- (unfollow - Following - unfollow_user)
- (unfollowtag - Following - unfollow_tag)
- (followingstream - Following - show_following_stream)
Follow Users
- click on profile of another user.
- click the follow button.
- check own profile page for the following info:
- show list of users being followed
- click on stream of posts by followed users
- click on the following link in the nav bar to show stream of posts by followed users.
- click on the followed user's profile page and click the unfollow button.
- verify the unfollowing changes on own profile page and within the following link in navbar.
Follow Tags
- click on a hashtag and click on the follow button.
- check own profile page for the following info:
- show list of tags being followed.
- click on stream of posts that contain the followed tags.
- click on the following link in the nav bar to show stream of posts that contain the followed tags.
- click on the followed tag to get a search result, and click the unfollow button.
- verify the unfollowing changes on own profile page and within the following link in navbar.
Rest
- (rest - Rest - do_rest)
- Rest.pm - (describe later, since not fully implemented.)
Backlinks
- (backlinks - Backlinks - show_backlinks)
- create a blog post that contains a normal URL link or a double-bracket case link to an existing blog post within the app.
- click the link for the other blog post.
- at the bottom of this other blog post, should see a "backlinks" link.
- click the "backlinks" link.
- should see a list of all pages that link to the other blog post.
- test linking from blog post A to blog post B multiple times within blog post A.
- when clicking the backlinks link at the bottom of blog post B, blog post A should appear only once, regardless of the number of times blog post A links to B.
- currently, if the blog post URL contains "blogpost" then it will be counted as a backlink. but the app also allows for the generic "post" command, which can be used for both blog and microblog posts. at moment, will not count the "post" function as a backlink.
- test remove the link to A from B to ensure that B does not appear under backlinks when viewing A.
Invalid function
- (showerror - Function - do_invalid_function)
- in the URL path info, if an invalid command or function is given:
- "Invalid function: xxxxx"
- "It's not supported."
Generic post display
This will work for displaying either a microblog or blog post.
Instread of the URL containing "microblog" or "blog," the function/action word "post" can be used.
- (post - ShowContent - show_content)
Last Blog Viewed
- For each blog post viewed, the user's db table is updated that stores the blog post id number for the blog post currently viewed.
- when browser closed and re-opened or when user logs out and logs back in regardless of device, the last viewed blog post will be automatically displayed first. The last viewed blog post is the first thing the user sees after restarting browser with saved-login cookie set or when logging back in.
Text size
- (textsize - TextSize - set_text_size)
- click on the five "A" links at the bottom of the website to change the font size.
- a cookie will be set to preserve font size on next visit after browser was closed.
- a user does not need to be logged in to change font size.
Theme
- (theme - Theme - set_theme)
- two themes supported at moment:
- default theme uses black and/or dark grey text on a white background.
- nightmode theme uses light grey text on a charcoal-colored background along with a few other changes.
Template Includes
- for blog posts.
- double-curly brace command around the title of an existing blog post will include the HTML content from that post into the post initiating the include command.
- if the tmpl. and tmpl.. commands are used in the other blog post, then only the content within those commands will be included.
- example:
- blog post A exists titled "This is Test A"
- blog post B wants to include content from blog post A by using: {{This is Test A} } within the post B body text.
- (except no space between the two right hand curly braces)
- the user's profile description area can also use the double-curly brace include command.
Valid HTML Tags
- test usage of valid and invalid HTML tags based upon setting in config file.
- valid html defined in config file:
- div span table a th tr td center pre dl dt dd img code pt em strong br blockquote big small strike del ins b i u
Custom formatting commands
- Textile like.
- defined in Format.pm
- q. and q..
- tmpl. and tmpl..
- hr.
- br.
- more.
- code. and code..
Bracket case
- double-bracket case surrounding the title of an existing post will automatically be turned into a link to that post.
- EX: [[Lake Erie West] ]
- (except no space between the right brackets)
- EX: [[Lake Erie West] ]
- can also use the vertical bar to display different link text to the user.
- EX: [[Lake Erie West | LEW] ]
- will use LEW as the link display text.
- if post defined within double brackets does not exist, then nothing happens during PREVIEW. the text and the brackets display as is. no links.
- but after the post has been saved, then a draft post is automatically created with the hashtag draftstub.
- a link is automatically created in the formatted content where the double-bracket case was used.
- the stub count can be observed by the user on the user's profile page.
External links
- URLs that point to other websites have the class="extlink" added to the HTML anchor tag.
- currently, the CSS is defined to display red link text color when mousing over an external link. obviously, not applicable to touch screens.
- maybe change the external link color some, so that the link can be identified on touchscreens.
Image Headers
- for blog posts.
- is not displayed during the special blog_username stream display.
- gets displayed when viewing the blog post.
- two command types that specify URL to image after equal sign:
- imageheader=
- largeimageheader=
Power Commands
- can be used within blog posts:
- toc=yes|no
- draft=yes|no
- replies=yes|no
- private=yes|no
- showintro=yes|no
- code=yes|no
- markdown=yes|no
- imageheader=URL
- largeimageheader=URL
Embedding Media
- the img HTML tag is permitted.
- Markdown and Textile provide commands to display an image.
- custom commands to display other media:
- gmap=
- kickstarter=
- facebook=
- youtube=
- vimeo=
- gist=
more info:
(except replace eq with the actual equals sign)you tube video: - use url from the youtube embed code in the command
url to page: http://www.youtube.com/watch?v=nfOUn6LgN3c
command to embed: youtube eq nfOUn6LgN3cfacebook video: - grab url to use with command from the embed or share at the facebook page
url to video: http://www.facebook.com/video/embed?video_id=10152670330945433
command to embed: facebook eq 10152670330945433google map: - grab url from the link command
url to map: http://maps.google.com/maps/ms?msa=0&msid=115189530534020686385.000458eaca4e382f6e81b&cd=2&hl=en&ie=UTF8&ll=41.655824,-83.53858&spn=0.021611,0.032959&z=15
command to embed: gmap eq maps/ms?msa=0&msid=115189530534020686385.000458eaca4e382f6e81b&cd=2&hl=en&ie=UTF8&ll=41.648656,-83.538566&spn=0.017445,0.004533&output=embedkickstarter video: - grab url to use with the command from the embed code
url to video page: http://www.kickstarter.com/projects/lanceroper/actual-coffee-a-toledo-coffee-roaster
command to embed: kickstarter eq lanceroper/actual-coffee-a-toledo-coffee-roaster/widget/video.htmlvimeo:
url to video page: http://vimeo.com/8578344
command to embed: vimeo eq 8578344gist:
src="https://gist.github.com/adactio/6575229.js"
command to embed: gist eq 6575229
HTML Entities
- less than and greater than symbols are converted to their respective entities if not part of valid HTML list.
From JR's : articles
4178 words - 26452 chars
- 23 min read
created on
updated on
- #
source
- versions
- backlinks
Related articles
Junco Curl testing - Nov 19, 2013
In Progress - Add webmention client code to Junco - Oct 21, 2013
In Progress - Add Microformats support - Oct 07, 2013
Valid chars in Junco attributes - Oct 12, 2013
In Progress - Migrating content to live site - Dec 06, 2013