makes specs way more readable
This commit is contained in:
parent
ff556ab648
commit
8344b85938
23 changed files with 234 additions and 182 deletions
2
.rspec
Normal file
2
.rspec
Normal file
|
@ -0,0 +1,2 @@
|
|||
--color
|
||||
--format doc
|
|
@ -34,7 +34,7 @@ module Microformats2
|
|||
property = klass.new(element, property_class).parse
|
||||
properties = format_classes(element).empty? ? PropertyParser.parse(element.children) : []
|
||||
|
||||
properties << property
|
||||
[property].concat properties
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -2,11 +2,138 @@ require "spec_helper"
|
|||
require "microformats2"
|
||||
|
||||
describe Microformats2::Collection do
|
||||
describe "case" do
|
||||
describe "spec/support/lib/microformats2" do
|
||||
|
||||
describe "simple.html" do
|
||||
before do
|
||||
html = "spec/support/lib/microformats2/simple.html"
|
||||
@collection = Microformats2.parse(html)
|
||||
end
|
||||
describe "#to_json" do
|
||||
it "returns the correct JSON" do
|
||||
json = "spec/support/lib/microformats2/simple.js"
|
||||
json = open(json).read
|
||||
JSON.parse(@collection.to_json).should == JSON.parse(json)
|
||||
end
|
||||
end
|
||||
describe "#card" do
|
||||
it "returns array of HCard objects" do
|
||||
@collection.card.first.should be_kind_of HCard
|
||||
end
|
||||
end
|
||||
describe "HCard#name parsed from '.h-card .p-name'" do
|
||||
it "assigns Property from '.h-card .p-name' to HCard#name[]" do
|
||||
@collection.first.name.first.should be_kind_of Microformats2::Property::Text
|
||||
end
|
||||
it "assigns inner_text to Property#value" do
|
||||
@collection.first.name.first.value.should == "Jessica Lynn Suttles"
|
||||
end
|
||||
end
|
||||
describe "HCard#url parsed from '.h-card .p-url'" do
|
||||
it "assigns Property from '.h-card .p-url' to HCard#url[]" do
|
||||
@collection.first.url.first.should be_kind_of Microformats2::Property::Url
|
||||
end
|
||||
it "assigns inner_text to Property#value" do
|
||||
urls = ["http://flickr.com/jlsuttles", "http://twitter.com/jlsuttles"]
|
||||
@collection.first.url.map(&:value).should == urls
|
||||
end
|
||||
end
|
||||
describe "HCard#bday parsed from '.h-card .p-bday'" do
|
||||
it "assigns Property from '.h-card .p-bday' to HCard#bday[]" do
|
||||
@collection.first.bday.first.should be_kind_of Microformats2::Property::DateTime
|
||||
end
|
||||
it "assigns datetime attribute to Property#string_value" do
|
||||
@collection.first.bday.first.value.to_s.should == "1990-10-15T20:45:33-08:00"
|
||||
end
|
||||
it "assigns DateTime object to Property#value" do
|
||||
@collection.first.bday.first.value.should be_kind_of DateTime
|
||||
end
|
||||
end
|
||||
describe "HCard#content parsed from '.h-card .p-content'" do
|
||||
it "assigns Property from '.h-card .p-content' to HCard#content[]" do
|
||||
@collection.first.content.first.should be_kind_of Microformats2::Property::Embedded
|
||||
end
|
||||
it "assigns inner_text to Property#value" do
|
||||
@collection.first.content.first.value.should == "Vegan. Cat lover. Coder."
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "nested-property.html" do
|
||||
before do
|
||||
html = "spec/support/lib/microformats2/nested-property.html"
|
||||
@collection = Microformats2.parse(html)
|
||||
end
|
||||
describe "#to_json" do
|
||||
it "returns the correct JSON" do
|
||||
json = "spec/support/lib/microformats2/nested-property.js"
|
||||
json = open(json).read
|
||||
JSON.parse(@collection.to_json).should == JSON.parse(json)
|
||||
end
|
||||
end
|
||||
describe "#card" do
|
||||
it "returns array of HCard objects" do
|
||||
@collection.card.first.should be_kind_of HCard
|
||||
end
|
||||
end
|
||||
describe "HCard#name parsed from '.h-card .p-name'" do
|
||||
it "assigns Property from '.h-card .p-name' to HCard#name[]" do
|
||||
@collection.first.name.first.should be_kind_of Microformats2::Property::Text
|
||||
end
|
||||
it "assigns inner_text to Property#value" do
|
||||
@collection.first.name.first.value.should == "jlsuttles"
|
||||
end
|
||||
end
|
||||
describe "HCard#nickname parsed from '.h-card .p-nickname'" do
|
||||
it "assigns Property from '.h-card .p-nickname' to HCard#nickname[]" do
|
||||
@collection.first.nickname.first.should be_kind_of Microformats2::Property::Text
|
||||
end
|
||||
it "assigns inner_text to Property#value" do
|
||||
@collection.first.nickname.first.value.should == "jlsuttles"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "nested-format-with-property.html" do
|
||||
before do
|
||||
html = "spec/support/lib/microformats2/nested-format-with-property.html"
|
||||
@collection = Microformats2.parse(html)
|
||||
end
|
||||
describe "#to_json" do
|
||||
it "returns the correct JSON" do
|
||||
json = "spec/support/lib/microformats2/nested-format-with-property.js"
|
||||
json = open(json).read
|
||||
JSON.parse(@collection.to_json).should == JSON.parse(json)
|
||||
end
|
||||
end
|
||||
describe "#entry" do
|
||||
it "returns array of HEntry objects" do
|
||||
@collection.entry.first.should be_kind_of HEntry
|
||||
end
|
||||
end
|
||||
describe "HEntry#author parsed from '.h-entry .p-author.h-card'" do
|
||||
it "assigns Property to HEntry#author[]" do
|
||||
@collection.first.author.first.should be_kind_of Microformats2::Property::Text
|
||||
end
|
||||
it "assigns inner_text to Property#value" do
|
||||
@collection.first.author.first.value.should == "Jessica Lynn Suttles"
|
||||
end
|
||||
it "assigns HCard to Property#formats[]" do
|
||||
@collection.first.author.first.formats.first.should be_kind_of HCard
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
#
|
||||
# these cases were scraped from the internet using `rake specs:update`
|
||||
#
|
||||
describe "spec/support/cases" do
|
||||
cases_dir = "spec/support/cases/*"
|
||||
Dir[File.join(cases_dir, "*")].each do |page_dir|
|
||||
describe page_dir.split("/")[-2..-1].join("/") do
|
||||
Dir[File.join(page_dir, "*")].keep_if { |f| f =~ /([.]html$)/ }.each do |html_file|
|
||||
it "#{html_file}" do
|
||||
it "#{html_file.split("/").last}" do
|
||||
json_file = html_file.gsub(/([.]html$)/, ".js")
|
||||
html = open(html_file).read
|
||||
json = open(json_file).read
|
||||
|
@ -16,121 +143,5 @@ describe Microformats2::Collection do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe ".h-card simple" do
|
||||
before do
|
||||
html = "spec/support/hcard-simple.html"
|
||||
@collection = Microformats2.parse(html)
|
||||
end
|
||||
|
||||
describe "#parse" do
|
||||
it "creates ruby class HCard" do
|
||||
@collection.all.first.should be_kind_of HCard
|
||||
@collection.first.should be_kind_of HCard
|
||||
@collection.card.first.should be_kind_of HCard
|
||||
end
|
||||
it "assigns .h-card .p-name to HCard#name" do
|
||||
@collection.first.name.first.value.should == "Jessica Lynn Suttles"
|
||||
end
|
||||
it "assigns both .h-card .u-url to HCard#url" do
|
||||
urls = ["http://flickr.com/jlsuttles", "http://twitter.com/jlsuttles"]
|
||||
@collection.first.url.map(&:value).should == urls
|
||||
end
|
||||
it "assings .h-card .dt-bday to HCard#bday" do
|
||||
@collection.first.bday.first.value.should be_kind_of DateTime
|
||||
@collection.first.bday.first.value.to_s.should == "1990-10-15T20:45:33-08:00"
|
||||
end
|
||||
it "assigns .h-card .e-content to HCard#content" do
|
||||
@collection.first.content.first.value.should == "Vegan. Cat lover. Coder."
|
||||
end
|
||||
end
|
||||
|
||||
describe "#to_hash" do
|
||||
it "returns the correct Hash" do
|
||||
hash = {
|
||||
:items => [{
|
||||
:type => ["h-card"],
|
||||
:properties => {
|
||||
:url => ["http://flickr.com/jlsuttles", "http://twitter.com/jlsuttles"],
|
||||
:name => ["Jessica Lynn Suttles"],
|
||||
:bday => ["1990-10-15T20:45:33-08:00"],
|
||||
:content => ["Vegan. Cat lover. Coder."]
|
||||
}
|
||||
}]
|
||||
}
|
||||
@collection.to_hash.should == hash
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe ".h-entry .p-author.h-card nested" do
|
||||
before do
|
||||
html = "spec/support/hentry-pauthor-hcard-nested.html"
|
||||
@collection = Microformats2.parse(html)
|
||||
end
|
||||
|
||||
describe "#parse" do
|
||||
it "creates ruby class HEntry" do
|
||||
@collection.all.first.should be_kind_of HEntry
|
||||
@collection.first.should be_kind_of HEntry
|
||||
@collection.entry.first.should be_kind_of HEntry
|
||||
end
|
||||
it "assigns .h-entry .p-author to HEntry#author" do
|
||||
@collection.first.author.first.value.should == "Jessica Lynn Suttles"
|
||||
end
|
||||
end
|
||||
|
||||
describe "#to_hash" do
|
||||
it "returns the correct Hash" do
|
||||
hash = {
|
||||
:items => [{
|
||||
:type => ["h-entry"],
|
||||
:properties => {
|
||||
:author => [{
|
||||
:value => "Jessica Lynn Suttles",
|
||||
:type => ["h-card", "h-org"],
|
||||
:properties => {
|
||||
:url => ["http://twitter.com/jlsuttles"],
|
||||
:name => ["Jessica Lynn Suttles"]
|
||||
}
|
||||
}],
|
||||
:name => ["Jessica Lynn Suttles"]
|
||||
}
|
||||
}]
|
||||
}
|
||||
@collection.to_hash.should == hash
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe ".h-card .p-name .p-nickname nested" do
|
||||
before do
|
||||
html = "spec/support/hcard-pname-pnickname-nested.html"
|
||||
@collection = Microformats2.parse(html)
|
||||
end
|
||||
|
||||
describe "#parse" do
|
||||
it "assigns .h-card .p-name to HCard#name" do
|
||||
@collection.first.name.first.value.should == "jlsuttles"
|
||||
end
|
||||
it "assigns .h-card .p-nickname to HCard#nickname" do
|
||||
@collection.first.nickname.first.value.should == "jlsuttles"
|
||||
end
|
||||
end
|
||||
|
||||
describe "#to_hash" do
|
||||
it "returns the correct Hash" do
|
||||
hash = {
|
||||
:items => [{
|
||||
:type => ["h-card"],
|
||||
:properties => {
|
||||
:name => ["jlsuttles"],
|
||||
:nickname => ["jlsuttles"]
|
||||
}
|
||||
}]
|
||||
}
|
||||
@collection.to_hash.should == hash
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,14 +2,15 @@ require "spec_helper"
|
|||
require "microformats2"
|
||||
|
||||
describe Microformats2::ImpliedProperty::Name do
|
||||
describe "spec/support/lib/microformats/implied_property" do
|
||||
describe "name-pass.html" do
|
||||
html = "spec/support/lib/microformats2/implied_property/name-pass.html"
|
||||
collection = Microformats2.parse(html)
|
||||
it "should have the correct number of formats" do
|
||||
it "should have 6 microformats" do
|
||||
collection.all.length.should == 6
|
||||
end
|
||||
collection.all.each_with_index do |format, index|
|
||||
it "passes case #{index+1}" do
|
||||
it "implies name to be 'Jessica' in case #{index+1}" do
|
||||
format.name.first.value.should == "Jessica"
|
||||
end
|
||||
end
|
||||
|
@ -17,13 +18,14 @@ describe Microformats2::ImpliedProperty::Name do
|
|||
describe "name-fail.html" do
|
||||
html = "spec/support/lib/microformats2/implied_property/name-fail.html"
|
||||
collection = Microformats2.parse(html)
|
||||
it "should have the correct number of formats" do
|
||||
it "should have 8 microformats" do
|
||||
collection.all.length.should == 8
|
||||
end
|
||||
collection.all.each_with_index do |format, index|
|
||||
it "fails case #{index+1}" do
|
||||
it "implies name to be '' in case #{index+1}" do
|
||||
format.name.first.value.should == ""
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,14 +2,15 @@ require "spec_helper"
|
|||
require "microformats2"
|
||||
|
||||
describe Microformats2::ImpliedProperty::Photo do
|
||||
describe "spec/support/lib/microformats/implied_property" do
|
||||
describe "photo-pass.html" do
|
||||
html = "spec/support/lib/microformats2/implied_property/photo-pass.html"
|
||||
collection = Microformats2.parse(html)
|
||||
it "should have the correct number of formats" do
|
||||
it "should have 6 microformats" do
|
||||
collection.all.length.should == 6
|
||||
end
|
||||
collection.all.each_with_index do |format, index|
|
||||
it "passes case #{index+1}" do
|
||||
it "implies photo to be 'http://gravatar.com/jlsuttles' in case #{index+1}" do
|
||||
format.photo.first.value.should == "http://gravatar.com/jlsuttles"
|
||||
end
|
||||
end
|
||||
|
@ -17,13 +18,14 @@ describe Microformats2::ImpliedProperty::Photo do
|
|||
describe "photo-fail.html" do
|
||||
html = "spec/support/lib/microformats2/implied_property/photo-fail.html"
|
||||
collection = Microformats2.parse(html)
|
||||
it "should have the correct number of formats" do
|
||||
it "should have 8 microformats" do
|
||||
collection.all.length.should == 8
|
||||
end
|
||||
collection.all.each_with_index do |format, index|
|
||||
it "fails case #{index+1}" do
|
||||
it "implies photo to be nil in case #{index+1}" do
|
||||
format.photo.should be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,14 +2,15 @@ require "spec_helper"
|
|||
require "microformats2"
|
||||
|
||||
describe Microformats2::ImpliedProperty::Url do
|
||||
describe "spec/support/lib/microformats/implied_property" do
|
||||
describe "url-pass.html" do
|
||||
html = "spec/support/lib/microformats2/implied_property/url-pass.html"
|
||||
collection = Microformats2.parse(html)
|
||||
it "should have the correct number of formats" do
|
||||
it "should have 2 microformats" do
|
||||
collection.all.length.should == 2
|
||||
end
|
||||
collection.all.each_with_index do |format, index|
|
||||
it "passes case #{index+1}" do
|
||||
it "implies url to be 'http://github.com/jlsuttles' in case #{index+1}" do
|
||||
format.url.first.value.should == "http://github.com/jlsuttles"
|
||||
end
|
||||
end
|
||||
|
@ -17,13 +18,14 @@ describe Microformats2::ImpliedProperty::Url do
|
|||
describe "url-fail.html" do
|
||||
html = "spec/support/lib/microformats2/implied_property/url-fail.html"
|
||||
collection = Microformats2.parse(html)
|
||||
it "should have the correct number of formats" do
|
||||
it "should have 2 microformats" do
|
||||
collection.all.length.should == 2
|
||||
end
|
||||
collection.all.each_with_index do |format, index|
|
||||
it "fails case #{index+1}" do
|
||||
it "implies url to be nil in case #{index+1}" do
|
||||
format.url.should be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -19,7 +19,7 @@ describe Microformats2 do
|
|||
Microformats2.read_html(@html).should include @html
|
||||
end
|
||||
it "can be a file path to html" do
|
||||
html = "spec/support/hcard-simple.html"
|
||||
html = "spec/support/lib/microformats2/simple.html"
|
||||
Microformats2.read_html(html).should include "<div class=\"h-card\">"
|
||||
end
|
||||
it "can be a url to html" do
|
||||
|
|
|
@ -6,6 +6,5 @@ require 'rspec'
|
|||
require 'rspec/autorun'
|
||||
|
||||
RSpec.configure do |config|
|
||||
# config.order = "random"
|
||||
config.color = true
|
||||
config.order = "random"
|
||||
end
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
{ "items": [{
|
||||
"type": ["h-entry"],
|
||||
"properties": {
|
||||
"author": [{
|
||||
"value": "Jessica Lynn Suttles",
|
||||
"type": ["h-card", "h-org"],
|
||||
"properties": {
|
||||
"url": ["http://twitter.com/jlsuttles"],
|
||||
"name": ["Jessica Lynn Suttles"]
|
||||
}
|
||||
}],
|
||||
"name": ["Jessica Lynn Suttles"]
|
||||
}
|
||||
}]
|
||||
}
|
9
spec/support/lib/microformats2/nested-property.js
Normal file
9
spec/support/lib/microformats2/nested-property.js
Normal file
|
@ -0,0 +1,9 @@
|
|||
{ "items": [{
|
||||
"type": ["h-card"],
|
||||
"properties": {
|
||||
"name": ["jlsuttles"],
|
||||
"nickname": ["jlsuttles"]
|
||||
}
|
||||
}]
|
||||
}
|
||||
|
10
spec/support/lib/microformats2/simple.js
Normal file
10
spec/support/lib/microformats2/simple.js
Normal file
|
@ -0,0 +1,10 @@
|
|||
{ "items": [{
|
||||
"type": ["h-card"],
|
||||
"properties": {
|
||||
"url": ["http://flickr.com/jlsuttles", "http://twitter.com/jlsuttles"],
|
||||
"name": ["Jessica Lynn Suttles"],
|
||||
"bday": ["1990-10-15T20:45:33-08:00"],
|
||||
"content": ["Vegan. Cat lover. Coder."]
|
||||
}
|
||||
}]
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue