def testIgnoreSpuriousRepeats(self):
    """sometimes the record contains a repeat character but then no
    subsequent values."""
    
    lame_repeat = mockExport( {'title':'foo',
      'creator_text_inverted':'Sprat, Max ' })
    objekt, agents = wacart.parse_line(lame_repeat)
    self.assertEqual(['foo'], objekt['title'])
    self.assertEqual('Sprat', agents[0]['last_name'])
    self.assertEqual(1, len(agents))

    lamer_repeat = mockExport( {'title':'foo',
      'creator_text_inverted':'Sprat, Max ',
      'inscription_location':'great!'})
    objekt, agents = wacart.parse_line(lamer_repeat)
    self.assertEqual(['great!'], objekt['inscription_location'])
    self.assertEqual('Max', agents[0]['first_name'])
    self.assertEqual(1, len(agents))

    lamest_repeat = mockExport( {'title':'foo',
      'creator_text_inverted':'Sprat, Max ',
      'inscription_location':'great!bad.'})
    objekt, agents = wacart.parse_line(lamest_repeat)
    self.assertEqual(['great!','bad.'], objekt['inscription_location'])
    self.assertEqual('Max', agents[0]['first_name'])
    self.assertEqual(1, len(agents))
  def testCleanSpuriousSpaces(self):
    """fields may have opening or trailing spaces, which we should
    ditch"""

    extra_spaces = mockExport( 
      {'acc_no':' 2011.404', 'old_acc_no':'11.404 ',
      'creator_text_inverted':' Doe, John ' })

    objekt, agents = wacart.parse_line(extra_spaces)
    self.assertEqual('2011.404', objekt['acc_no'])
    self.assertEqual('11.404', objekt['old_acc_no'])
    self.assertEqual('Doe', agents[0]['last_name'])
  def testSomeFields(self):
     """should be able to find the object's title and author's
     birthdate. Should not pass empty values."""

     oneLineExport = mockExport(
       {'title':'foo', 'born':'1900', 
        'creator_text_inverted':'Bob, Jim',
        'running_time': ''})

     objekt, agents = wacart.parse_line(oneLineExport)
     self.assertEqual(['foo'], objekt['title'])
     self.assertEqual('1900', agents[0]['born'])
     self.assertEqual(False, objekt.has_key('running_time'))
 def testArtistAuthorsAndEditor(self):
   lame_repeat = mockExport( {'birth_place':'BostonAntigua',
     'creator_text_inverted':'Bob, Jim; Bob, Jane',
     'author':'Bennett, John; Thomas Cassidy',
     'author_birth_year':'1975',
     'editor':'Mekas, Jonas'})
   objekt, agents = wacart.parse_line(lame_repeat)
   self.assertEqual('Bob', agents[0]['last_name'])
   self.assertEqual('Bob', agents[1]['last_name'])
   self.assertEqual('artist', agents[0]['agent_type'])
   self.assertEqual('Bennett', agents[2]['last_name'])
   self.assertEqual('author', agents[2]['agent_type'])
   self.assertEqual('1975', agents[2]['born'])
   self.assertEqual('Cassidy', agents[3]['last_name'])
   self.assertEqual('Mekas', agents[4]['last_name'])
   self.assertEqual('editor', agents[4]['agent_type'])
  def testRepeats(self):
    """Some works have multiple titles, measurements, etc. And there can
    be multiple agents."""

    title_repeat = mockExport(
      {'title':'foobar', 'creator_text_inverted':'Doe, John; Roe, Jane',
       'born':'1900/1998'})

    objekt, agents = wacart.parse_line(title_repeat)
    self.assertEqual('foo', objekt['title'][0])
    self.assertEqual('bar', objekt['title'][1])
    self.assertEqual('Doe', agents[0]['last_name'])
    self.assertEqual('John', agents[0]['first_name'])
    self.assertEqual('artist', agents[0]['agent_type'])
    self.assertEqual('Roe', agents[1]['last_name'])
    self.assertEqual('Jane', agents[1]['first_name'])
    self.assertEqual('artist', agents[1]['agent_type'])
    self.assertEqual('Roe', agents[1]['last_name'])
    self.assertEqual('1900', agents[0]['born'])