def test_get_last_row_with_no_data(self):
     """Test the get_last_row function when no data is present."""
     # First, check the db directly to ensure it is empty.
     result = self.obj_factory.sstore.execute(u"""SELECT row_id
         FROM txlog.db_worker_last_row""")
     self.assertEqual(0, result.rowcount)
     self.assertEqual(
         utils.NEW_WORKER_LAST_ROW,
         utils.get_last_row('some worker', self.obj_factory.sstore_name))
 def test_get_last_row_with_no_data(self):
     """Test the get_last_row function when no data is present."""
     # First, check the db directly to ensure it is empty.
     result = self.obj_factory.sstore.execute(
         u"""SELECT row_id
         FROM txlog.db_worker_last_row""")
     self.assertEqual(0, result.rowcount)
     self.assertEqual(utils.NEW_WORKER_LAST_ROW, utils.get_last_row(
         'some worker', self.obj_factory.sstore_name))
    def test_get_last_row_with_same_data_returns_the_exact_one(self):
        """Test that get_last_row returns the row for the exact txlog ID in the
        table, if the worker name is found for that."""
        txlog1 = self.obj_factory.make_transaction_log()
        txlog2 = self.obj_factory.make_transaction_log()
        txlog3 = self.obj_factory.make_transaction_log()

        worker_name = self.obj_factory.get_unique_unicode()
        self._create_db_worker_last_row_entry(worker_name, txlog3)
        self._create_db_worker_last_row_entry(
            self.obj_factory.get_unique_unicode(), txlog1)
        self._create_db_worker_last_row_entry(
            self.obj_factory.get_unique_unicode(), txlog2)

        self.assertEqual((txlog3.id, txlog3.timestamp), utils.get_last_row(
            worker_name, self.obj_factory.sstore_name))
    def test_get_last_row_with_other_data_returns_the_oldest_one(self):
        """get_last_row returns the row for the oldest txlog ID in the
        table, if the worker name is not found for that."""
        txlog1 = self.obj_factory.make_transaction_log()
        txlog2 = self.obj_factory.make_transaction_log()
        txlog3 = self.obj_factory.make_transaction_log()

        self._create_db_worker_last_row_entry(
            self.obj_factory.get_unique_unicode(), txlog3)
        self._create_db_worker_last_row_entry(
            self.obj_factory.get_unique_unicode(), txlog1)
        self._create_db_worker_last_row_entry(
            self.obj_factory.get_unique_unicode(), txlog2)

        self.assertEqual((txlog1.id, txlog1.timestamp), utils.get_last_row(
            'some worker', self.obj_factory.sstore_name))
    def test_get_last_row_with_same_data_returns_the_exact_one(self):
        """Test that get_last_row returns the row for the exact txlog ID in the
        table, if the worker name is found for that."""
        txlog1 = self.obj_factory.make_transaction_log()
        txlog2 = self.obj_factory.make_transaction_log()
        txlog3 = self.obj_factory.make_transaction_log()

        worker_name = self.obj_factory.get_unique_unicode()
        self._create_db_worker_last_row_entry(worker_name, txlog3)
        self._create_db_worker_last_row_entry(
            self.obj_factory.get_unique_unicode(), txlog1)
        self._create_db_worker_last_row_entry(
            self.obj_factory.get_unique_unicode(), txlog2)

        self.assertEqual((txlog3.id, txlog3.timestamp),
                         utils.get_last_row(worker_name,
                                            self.obj_factory.sstore_name))
    def test_get_last_row_with_other_data_returns_the_oldest_one(self):
        """get_last_row returns the row for the oldest txlog ID in the
        table, if the worker name is not found for that."""
        txlog1 = self.obj_factory.make_transaction_log()
        txlog2 = self.obj_factory.make_transaction_log()
        txlog3 = self.obj_factory.make_transaction_log()

        self._create_db_worker_last_row_entry(
            self.obj_factory.get_unique_unicode(), txlog3)
        self._create_db_worker_last_row_entry(
            self.obj_factory.get_unique_unicode(), txlog1)
        self._create_db_worker_last_row_entry(
            self.obj_factory.get_unique_unicode(), txlog2)

        self.assertEqual((txlog1.id, txlog1.timestamp),
                         utils.get_last_row('some worker',
                                            self.obj_factory.sstore_name))