spec/date_parser_spec.rb in sugarcube-1.0.7 vs spec/date_parser_spec.rb in sugarcube-1.1.0
- old
+ new
@@ -1,23 +1,72 @@
describe "Base Methods" do
+
it "parses a relative natural language string, returning a date" do
today = Time.now
t = SugarCube::DateParser.parse_date("tomorrow at 7:30 PM")
t.should.is_a Time
t.hour.should == 19
t.min.should == 30
t.sec.should == 0
(t.day - today.day).should == 1
end
-
+
it "parses a specific natural language string, returning a date" do
t = SugarCube::DateParser.parse_date("6/18/13 at 7:30 AM")
t.month.should == 6
t.day.should == 18
t.year.should == 2013
t.hour.should == 7
t.min.should == 30
end
+
+ it "returns nil on failure" do
+ t = SugarCube::DateParser.parse_date("NOT A DATE")
+ t.should == nil
+ end
+
+ describe "parses iso8601 dates" do
+
+ it "parses '2013-08-22T21:34:48.874Z'" do
+ t = SugarCube::DateParser.parse_date("2013-08-22T21:34:48.874Z")
+ t.month.should == 8
+ t.day.should == 22
+ t.year.should == 2013
+ t.min.should == 34
+ t.sec.should == 48
+ t.usec.should == 874000
+ end
+
+ it "parses '2013-08-22T21:34:48.874'" do
+ t = SugarCube::DateParser.parse_date("2013-08-22T21:34:48.874")
+ t.month.should == 8
+ t.day.should == 22
+ t.year.should == 2013
+ t.min.should == 34
+ t.sec.should == 48
+ t.usec.should == 874000
+ end
+
+ it "parses '2013-08-22T21:34:48Z'" do
+ t = SugarCube::DateParser.parse_date("2013-08-22T21:34:48Z")
+ t.month.should == 8
+ t.day.should == 22
+ t.year.should == 2013
+ t.min.should == 34
+ t.sec.floor.should == 48
+ end
+
+ it "parses '2013-08-22T21:34:48'" do
+ t = SugarCube::DateParser.parse_date("2013-08-22T21:34:48")
+ t.month.should == 8
+ t.day.should == 22
+ t.year.should == 2013
+ t.min.should == 34
+ t.sec.floor.should == 48
+ end
+
+ end
+
end
describe "String Extensions" do
it "parses a date the same as the base method" do
"tomorrow at 7:30 PM".to_date.should == SugarCube::DateParser.parse_date("tomorrow at 7:30 PM")
\ No newline at end of file