-- root element \<message\> that contains an entire news item.
--
module TSN.XML.News (
- news_tests,
pickle_message,
+ -- * Tests
+ news_tests,
-- * WARNING: these are private but exported to silence warnings
News_NewsLocationConstructor(..),
News_NewsTeamConstructor(..),
-- | Mapping between News records and NewsTeam records in the
--- database.
+-- database. We don't name the fields because we don't use the names
+-- explicitly; that means we have to give them nice database names
+-- via groundhog.
--
data News_NewsTeam = News_NewsTeam
(DefaultKey News)
-- | Mapping between News records and NewsLocation records in the
--- database.
+-- database. We don't name the fields because we don't use the names
+-- explicitly; that means we have to give them nice database names
+-- via groundhog.
--
data News_NewsLocation = News_NewsLocation
(DefaultKey News)
return ImportSucceeded
--- | These types don't have special XML representations or field name
--- collisions so we use the defaultCodegenConfig and give their
--- fields nice simple names.
+-- These types don't have special XML representations or field name
+-- collisions so we use the defaultCodegenConfig and give their
+-- fields nice simple names.
mkPersist defaultCodegenConfig [groundhog|
- entity: NewsTeam
dbName: news_teams
|]
--- | These types have fields with e.g. db_ and xml_ prefixes, so we
--- use our own codegen to peel those off before naming the columns.
---
+-- These types have fields with e.g. db_ and xml_ prefixes, so we
+-- use our own codegen to peel those off before naming the columns.
mkPersist tsn_codegen_config [groundhog|
- entity: News
dbName: news
constructors:
- name: News_NewsTeam
fields:
- - name: news_NewsTeam0
+ - name: news_NewsTeam0 # Default created by mkNormalFieldName
dbName: news_id
- - name: news_NewsTeam1
+ - name: news_NewsTeam1 # Default created by mkNormalFieldName
dbName: news_teams_id
- entity: News_NewsLocation
constructors:
- name: News_NewsLocation
fields:
- - name: news_NewsLocation0
+ - name: news_NewsLocation0 # Default created by mkNormalFieldName
dbName: news_id
- - name: news_NewsLocation1
+ - name: news_NewsLocation1 # Default created by mkNormalFieldName
dbName: news_locations_id
|]
to_string = join "\n"
+--
+-- Tasty Tests
+--
--- * Tasty Tests
+-- | A list of all tests for this module.
+--
news_tests :: TestTree
news_tests =
testGroup
test_unpickle_succeeds ]
+-- | Make sure our codegen is producing the correct database names.
+--
test_news_fields_have_correct_names :: TestTree
test_news_fields_have_correct_names =
testCase "news fields get correct database names" $
check (x,y) = (x @?= y)
--- | Warning, succeess of this test does not mean that unpickling
--- succeeded.
+-- | If we unpickle something and then pickle it, we should wind up
+-- with the same thing we started with. WARNING: success of this
+-- test does not mean that unpickling succeeded.
+--
test_pickle_of_unpickle_is_identity :: TestTree
test_pickle_of_unpickle_is_identity = testGroup "pickle-unpickle tests"
[ check "pickle composed with unpickle is the identity"
actual @?= expected
+-- | Make sure we can actually unpickle these things.
+--
test_unpickle_succeeds :: TestTree
test_unpickle_succeeds = testGroup "unpickle tests"
[ check "unpickling succeeds"