def setUp(self):
     self.ingester = ProjectGutenbergIngester(redis_datastore=TEST_REDIS)
     self.ingester.ingest(os.path.join(PROJECT_HOME,
                                          'bibframe',
                                          'fixures',
                                          'pg',
                                          'pg33.rdf'))
class TestProjectGutenbergIngester(unittest.TestCase):

    def setUp(self):
        self.ingester = ProjectGutenbergIngester(redis_datastore=TEST_REDIS)
        self.ingester.ingest(os.path.join(PROJECT_HOME,
                                             'bibframe',
                                             'fixures',
                                             'pg',
                                             'pg33.rdf'))

    def test_init(self):
        self.assert_(self.ingester)

    def test_association_work_creator(self):
        self.assertEquals(TEST_REDIS.hget('bf:SoftwareOrMultimedia:1',
                                          'rda:isCreatedBy'),
                          'bf:Person:1')
        self.assertEquals(TEST_REDIS.smembers(
            'bf:SoftwareOrMultimedia:1:hasInstance'),
                          set(['bf:Instance:1',
                               'bf:Instance:2']))

    def test_create_instances(self):
        self.assertEquals(TEST_REDIS.hget('bf:Instance:1',
                                          'instanceOf'),
                          'bf:SoftwareOrMultimedia:1')
        self.assertEquals(TEST_REDIS.hget('bf:Instance:2',
                                          'instanceOf'),
                          'bf:SoftwareOrMultimedia:1')



    def test_extract_creator(self):
        self.assertEquals(TEST_REDIS.hget('bf:Person:1',
                                          'rda:dateOfBirth'),
                          '1804')
        self.assertEquals(TEST_REDIS.hget('bf:Person:1',
                                          'rda:dateOfDeath'),
                          '1864')
        self.assertEquals(TEST_REDIS.hget('bf:Person:1',
                                          'rda:preferredNameForThePerson'),
                          "Hawthorne, Nathaniel")
        self.assertEquals(TEST_REDIS.hget('bf:Person:1',
                                          'schema:givenName'),
                          "Nathaniel")
        self.assertEquals(TEST_REDIS.hget('bf:Person:1',
                                          'schema:familyName'),
                          "Hawthorne")

    def test_extract_title(self):
        title_key = TEST_REDIS.hget('bf:SoftwareOrMultimedia:1',
                                    'title')
        self.assertEquals(TEST_REDIS.hget(title_key,
                                          'titleValue'),
                          'The Scarlet Letter')

    def test_multiple_creators(self):
        self.ingester.ingest(os.path.join(PROJECT_HOME,
                                             'bibframe',
                                             'fixures',
                                             'pg',
                                             'pg1682.rdf'))
        self.assertEquals(TEST_REDIS.hget('bf:Person:2',
                                          'schema:familyName'),
                          'Plato')
        self.assertEquals(TEST_REDIS.hget('bf:Person:3',
                                          'rda:preferredNameForThePerson'),
                          'Jowett, Benjamin')
        



    def tearDown(self):
        TEST_REDIS.flushdb()