Пример #1
0
 def test_update_text_record(self):
     store = tacl.DataStore(':memory:')
     store._conn = MagicMock(spec_set=sqlite3.Connection)
     text = MagicMock(spec_set=tacl.WitnessText)
     text.get_checksum.return_value = sentinel.checksum
     tokens = [sentinel.token]
     text.get_tokens.return_value = tokens
     store._update_text_record(text, sentinel.text_id)
     self.assertEqual(text.mock_calls,
                      [call.get_checksum(), call.get_tokens()])
     store._conn.execute.assert_called_once_with(
         tacl.constants.UPDATE_TEXT_SQL,
         [sentinel.checksum, len(tokens), sentinel.text_id])
Пример #2
0
 def test_update_text_record(self):
     store = tacl.DataStore(':memory:')
     store._conn = MagicMock(spec_set=sqlite3.Connection)
     text = MagicMock(spec_set=tacl.WitnessText)
     text.get_checksum.return_value = sentinel.checksum
     tokens = [sentinel.token]
     text.get_tokens.return_value = tokens
     store._update_text_record(text, sentinel.text_id)
     self.assertEqual(
         text.mock_calls,
         [call.get_checksum(), call.get_tokens()])
     store._conn.execute.assert_called_once_with(
         tacl.constants.UPDATE_TEXT_SQL,
         [sentinel.checksum,
          len(tokens), sentinel.text_id])
Пример #3
0
 def test_get_text_id (self):
     add_text = self._create_patch('tacl.DataStore._add_text_record')
     add_text.return_value = sentinel.new_text_id
     update_text = self._create_patch('tacl.DataStore._update_text_record')
     delete_ngrams = self._create_patch('tacl.DataStore._delete_text_ngrams')
     text = MagicMock(spec_set=tacl.Text)
     text.get_checksum.return_value = sentinel.checksum
     text.get_filename.return_value = sentinel.filename
     text.get_names.return_value = (sentinel.name, sentinel.siglum)
     # There are three paths this method can take, depending on
     # whether a record already exists for the supplied text and,
     # if it does, whether the checksums match.
     store = tacl.DataStore(':memory:')
     store._conn = MagicMock(spec_set=sqlite3.Connection)
     cursor = store._conn.execute.return_value
     # Path one: there is no existing record.
     store._conn.execute.return_value = cursor
     cursor.fetchone.return_value = None
     actual_text_id = store._get_text_id(text)
     self.assertEqual(text.mock_calls, [call.get_names()])
     self.assertEqual(store._conn.mock_calls,
                      [call.execute(tacl.constants.SELECT_TEXT_SQL,
                                    [sentinel.name, sentinel.siglum]),
                       call.execute().fetchone()])
     add_text.assert_called_once_with(store, text)
     self.assertEqual(update_text.mock_calls, [])
     self.assertEqual(delete_ngrams.mock_calls, [])
     self.assertEqual(actual_text_id, sentinel.new_text_id)
     # Path two: there is an existing record, with a matching checksum.
     store._conn.reset_mock()
     text.reset_mock()
     add_text.reset_mock()
     update_text.reset_mock()
     cursor.fetchone.return_value = {'checksum': sentinel.checksum,
                                     'id': sentinel.old_text_id}
     actual_text_id = store._get_text_id(text)
     self.assertEqual(store._conn.mock_calls,
                      [call.execute(tacl.constants.SELECT_TEXT_SQL,
                                    [sentinel.name, sentinel.siglum]),
                       call.execute().fetchone()])
     self.assertEqual(text.mock_calls,
                      [call.get_names(), call.get_checksum()])
     self.assertEqual(add_text.mock_calls, [])
     self.assertEqual(update_text.mock_calls, [])
     self.assertEqual(delete_ngrams.mock_calls, [])
     self.assertEqual(actual_text_id, sentinel.old_text_id)
     # Path three: there is an existing record, with a different
     # checksum.
     store._conn.reset_mock()
     text.reset_mock()
     add_text.reset_mock()
     update_text.reset_mock()
     cursor.fetchone.return_value = {'checksum': sentinel.new_checksum,
                                     'id': sentinel.old_text_id}
     actual_text_id = store._get_text_id(text)
     self.assertEqual(store._conn.mock_calls,
                      [call.execute(tacl.constants.SELECT_TEXT_SQL,
                                    [sentinel.name, sentinel.siglum]),
                       call.execute().fetchone()])
     self.assertEqual(text.mock_calls,
                      [call.get_names(), call.get_checksum(),
                       call.get_filename()])
     update_text.assert_called_once_with(store, text, sentinel.old_text_id)
     delete_ngrams.assert_called_once_with(store, sentinel.old_text_id)
     self.assertEqual(add_text.mock_calls, [])
     self.assertEqual(actual_text_id, sentinel.old_text_id)
Пример #4
0
 def test_get_text_id(self):
     add_text = self._create_patch('tacl.DataStore._add_text_record')
     add_text.return_value = sentinel.new_text_id
     update_text = self._create_patch('tacl.DataStore._update_text_record')
     delete_ngrams = self._create_patch(
         'tacl.DataStore._delete_text_ngrams')
     text = MagicMock(spec_set=tacl.WitnessText)
     text.get_checksum.return_value = sentinel.checksum
     text.get_filename.return_value = sentinel.filename
     text.get_names.return_value = (sentinel.name, sentinel.siglum)
     # There are three paths this method can take, depending on
     # whether a record already exists for the supplied text and,
     # if it does, whether the checksums match.
     store = tacl.DataStore(':memory:')
     store._conn = MagicMock(spec_set=sqlite3.Connection)
     cursor = store._conn.execute.return_value
     # Path one: there is no existing record.
     store._conn.execute.return_value = cursor
     cursor.fetchone.return_value = None
     actual_text_id = store._get_text_id(text)
     self.assertEqual(text.mock_calls, [call.get_names()])
     self.assertEqual(store._conn.mock_calls, [
         call.execute(tacl.constants.SELECT_TEXT_SQL,
                      [sentinel.name, sentinel.siglum]),
         call.execute().fetchone()
     ])
     add_text.assert_called_once_with(store, text)
     self.assertEqual(update_text.mock_calls, [])
     self.assertEqual(delete_ngrams.mock_calls, [])
     self.assertEqual(actual_text_id, sentinel.new_text_id)
     # Path two: there is an existing record, with a matching checksum.
     store._conn.reset_mock()
     text.reset_mock()
     add_text.reset_mock()
     update_text.reset_mock()
     cursor.fetchone.return_value = {
         'checksum': sentinel.checksum,
         'id': sentinel.old_text_id
     }
     actual_text_id = store._get_text_id(text)
     self.assertEqual(store._conn.mock_calls, [
         call.execute(tacl.constants.SELECT_TEXT_SQL,
                      [sentinel.name, sentinel.siglum]),
         call.execute().fetchone()
     ])
     self.assertEqual(
         text.mock_calls,
         [call.get_names(), call.get_checksum()])
     self.assertEqual(add_text.mock_calls, [])
     self.assertEqual(update_text.mock_calls, [])
     self.assertEqual(delete_ngrams.mock_calls, [])
     self.assertEqual(actual_text_id, sentinel.old_text_id)
     # Path three: there is an existing record, with a different
     # checksum.
     store._conn.reset_mock()
     text.reset_mock()
     add_text.reset_mock()
     update_text.reset_mock()
     cursor.fetchone.return_value = {
         'checksum': sentinel.new_checksum,
         'id': sentinel.old_text_id
     }
     actual_text_id = store._get_text_id(text)
     self.assertEqual(store._conn.mock_calls, [
         call.execute(tacl.constants.SELECT_TEXT_SQL,
                      [sentinel.name, sentinel.siglum]),
         call.execute().fetchone()
     ])
     self.assertEqual(
         text.mock_calls,
         [call.get_names(),
          call.get_checksum(),
          call.get_filename()])
     update_text.assert_called_once_with(store, text, sentinel.old_text_id)
     delete_ngrams.assert_called_once_with(store, sentinel.old_text_id)
     self.assertEqual(add_text.mock_calls, [])
     self.assertEqual(actual_text_id, sentinel.old_text_id)