]> gitweb.michael.orlitzky.com - dead/halcyon.git/blobdiff - src/Twitter/Status.hs
Bump tagsoup dependency.
[dead/halcyon.git] / src / Twitter / Status.hs
index 176619d0ed5a6e2d9f2720b13fe4abed61350cfd..92cf899fae1786562ad96b0c7e7a98ac5915e645 100644 (file)
@@ -1,13 +1,19 @@
 {-# LANGUAGE NoMonomorphismRestriction #-}
 
 -- | Functions and data for working with Twitter statuses.
-module Twitter.Status
+module Twitter.Status (
+  Status(..),
+  Timeline,
+  get_max_status_id,
+  pretty_print,
+  status_tests,
+  utc_time_to_rfc822)
 where
 
 import Control.Applicative ((<$>), (<*>))
 import Control.Monad (liftM)
 import Data.Aeson ((.:), FromJSON(..), Value(Object))
-import Data.Maybe (fromMaybe, mapMaybe, isJust)
+import Data.Maybe (mapMaybe, isJust)
 import Data.Monoid (mempty)
 import Data.String.Utils (join, splitWs)
 import Data.Text (pack)
@@ -16,12 +22,14 @@ import Data.Time.Clock (UTCTime)
 import Data.Time.Format (parseTime)
 import Data.Time.LocalTime (TimeZone, utcToZonedTime)
 import System.Locale (defaultTimeLocale, rfc822DateFormat)
-import Test.HUnit
+import Test.Framework (Test, testGroup)
+import Test.Framework.Providers.HUnit (testCase)
+import Test.HUnit (Assertion, assertEqual)
 import Text.Regex (matchRegex, mkRegex)
 
 import Html (replace_entities)
 import StringUtils (listify)
-import Twitter.User
+import Twitter.User (User(..), screen_name_to_timeline_url)
 
 data Status = Status {
   created_at :: Maybe UTCTime,
@@ -77,7 +85,7 @@ utc_time_to_rfc822 mtz utc =
 
 show_created_at :: Maybe TimeZone -> Status -> String
 show_created_at mtz =
-  (fromMaybe "") . (fmap $ utc_time_to_rfc822 mtz) . created_at
+  (maybe "" (utc_time_to_rfc822 mtz)) . created_at
 
 -- | Returns a nicely-formatted String representing the given 'Status'
 --   object.
@@ -136,26 +144,30 @@ make_user_timeline_urls status =
     usernames = parse_usernames_from_status status
 
 
-status_tests :: [Test]
-status_tests = [ test_parse_usernames ]
+status_tests :: Test
+status_tests =
+  testGroup "Status Tests" [ tc1 ]
+  where
+    tc1 = testCase "All usernames are parsed." test_parse_usernames
 
 
-test_parse_usernames :: Test
+test_parse_usernames :: Assertion
 test_parse_usernames =
-    TestCase $
-      assertEqual
-      "All usernames are parsed."
-      expected_usernames
-      actual_usernames
-    where
-      dummy_user = User { screen_name = "nobody" }
-      dummy_status = Status { status_id = 1,
-                              created_at = Nothing,
-                              text = "Hypothesis: @donsbot and @bonus500 are two personalities belonging to the same person.",
-                              user = dummy_user,
-                              reply = False,
-                              retweeted = False
-                            }
-
-      actual_usernames = parse_usernames_from_status dummy_status
-      expected_usernames = ["donsbot", "bonus500"]
+  assertEqual
+    "All usernames are parsed."
+    expected_usernames
+    actual_usernames
+  where
+    dummy_user = User { screen_name = "nobody" }
+    dummy_text = "Hypothesis: @donsbot and @bonus500 are two " ++
+                 "personalities belonging to the same person."
+    dummy_status = Status { status_id = 1,
+                            created_at = Nothing,
+                            text = dummy_text,
+                            user = dummy_user,
+                            reply = False,
+                            retweeted = False
+                          }
+
+    actual_usernames = parse_usernames_from_status dummy_status
+    expected_usernames = ["donsbot", "bonus500"]