]> gitweb.michael.orlitzky.com - dead/htsn-import.git/blobdiff - src/TSN/XML/News.hs
Replace all raw DELETE queries with deleteAll.
[dead/htsn-import.git] / src / TSN / XML / News.hs
index 2cc9698fb2d2e212fd9d45da74f71d938eca3c90..c42b931cf88e8df1fed92f46c10d6597cad4ef6b 100644 (file)
@@ -11,6 +11,7 @@
 --   a root element \<message\> that contains an entire news item.
 --
 module TSN.XML.News (
+  dtd,
   pickle_message,
   -- * Tests
   news_tests,
@@ -30,7 +31,7 @@ import Data.Tuple.Curry ( uncurryN )
 import Data.Typeable ( Typeable )
 import Database.Groundhog (
   countAll,
-  executeRaw,
+  deleteAll,
   insert_,
   migrate,
   runMigration,
@@ -73,6 +74,12 @@ import Xml (
   unsafe_unpickle )
 
 
+-- | The DTD to which this module corresponds. Used to invoke dbimport.
+--
+dtd :: String
+dtd = "newsxml.dtd"
+
+
 --
 -- DB/XML Data types
 --
@@ -272,7 +279,6 @@ mkPersist defaultCodegenConfig [groundhog|
 -- use our own codegen to peel those off before naming the columns.
 mkPersist tsn_codegen_config [groundhog|
 - entity: News
-  dbName: news
   constructors:
     - name: News
       uniques:
@@ -505,9 +511,11 @@ test_unpickle_succeeds = testGroup "unpickle tests"
 test_on_delete_cascade :: TestTree
 test_on_delete_cascade = testGroup "cascading delete tests"
   [ check "deleting news deletes its children"
-          "test/xml/newsxml.xml" ]
+          "test/xml/newsxml.xml"
+          4 -- 2 news_teams and 2 news_locations that should remain.
+  ]
   where
-    check desc path = testCase desc $ do
+    check desc path expected = testCase desc $ do
       news <- unsafe_unpickle path pickle_message
       let a = undefined :: News
       let b = undefined :: NewsTeam
@@ -522,14 +530,11 @@ test_on_delete_cascade = testGroup "cascading delete tests"
                     migrate d
                     migrate e
                   _ <- dbimport news
-                  -- No idea how 'delete' works, so do this instead.
-                  executeRaw False "DELETE FROM news;" []
+                  deleteAll a
                   count_a <- countAll a
                   count_b <- countAll b
                   count_c <- countAll c
                   count_d <- countAll d
                   count_e <- countAll e
                   return $ count_a + count_b + count_c + count_d + count_e
-      -- There are 2 news_teams and 2 news_locations that should remain.
-      let expected = 4
       actual @?= expected