# Path: deckhand/tests/test_utils.py
# def rand_uuid_hex():
# def rand_name(name='', prefix='deckhand'):
# def rand_bool():
# def rand_int(min, max):
# def rand_password(length=15):
# 
# Path: deckhand/tests/unit/db/base.py
# BASE_EXPECTED_FIELDS = ("created_at", "updated_at", "deleted_at", "deleted")
# DOCUMENT_EXPECTED_FIELDS = BASE_EXPECTED_FIELDS + (
#     "id", "schema", "name", "layer", "metadata", "data", "data_hash",
#     "metadata_hash", "revision_id", "bucket_id")
# REVISION_EXPECTED_FIELDS = ("id", "documents", "tags")
# class DocumentFixture(object):
# class TestDbBase(base.DeckhandWithDBTestCase):
#     def get_minimal_fixture(**kwargs):
#     def get_minimal_multi_fixture(count=2, **kwargs):
#     def create_documents(self, bucket_name, documents,
#                          validation_policies=None):
#     def show_document(self, **fields):
#     def create_revision(self):
#     def show_revision(self, revision_id):
#     def delete_revisions(self):
#     def list_revision_documents(self, revision_id, **filters):
#     def list_revisions(self):
#     def rollback_revision(self, revision_id):
#     def create_validation(self, revision_id, val_name, val_data):
#     def _validate_object(self, obj):
#     def validate_document(self, actual, expected=None, is_deleted=False):
#     def validate_revision(self, revision):


from deckhand.tests import test_utils
from deckhand.tests.unit.db import base
        # Revision 2: Update the last document.
        payload[-1]['data'] = {'foo': 'bar'}
        self.create_documents(bucket_name, payload)

        # Revision 3: Delete the third document.
        payload.pop(2)
        self.create_documents(bucket_name, payload)

        # Rollback 4: rollback to revision 1.
        rollback_revision = self.rollback_revision(orig_revision_id)

        self.assertEqual(4, rollback_revision['id'])
        self.assertEqual(
            [1, 1, 4, 4],
            [d['revision_id'] for d in rollback_revision['documents']])
        self.assertEqual(
            [1, 1, 4, 4],
            [d['orig_revision_id'] for d in rollback_revision['documents']])

        rollback_documents = self.list_revision_documents(
            rollback_revision['id'])
        rollback_documents = sorted(rollback_documents,
                                    key=lambda d: d['created_at'])
        self.assertEqual([1, 1, 4, 4],
                         [d['revision_id'] for d in rollback_documents])
        self.assertEqual([1, 1, 4, 4],
                         [d['orig_revision_id'] for d in rollback_documents])

    def test_rollback_to_revision_same_as_current_revision(self):
        payload = base.DocumentFixture.get_minimal_multi_fixture(count=4)

# Path: deckhand/tests/test_utils.py
# def rand_uuid_hex():
# def rand_name(name='', prefix='deckhand'):
# def rand_bool():
# def rand_int(min, max):
# def rand_password(length=15):
# 
# Path: deckhand/tests/unit/db/base.py
# BASE_EXPECTED_FIELDS = ("created_at", "updated_at", "deleted_at", "deleted")
# DOCUMENT_EXPECTED_FIELDS = BASE_EXPECTED_FIELDS + (
#     "id", "schema", "name", "layer", "metadata", "data", "data_hash",
#     "metadata_hash", "revision_id", "bucket_id")
# REVISION_EXPECTED_FIELDS = ("id", "documents", "tags")
# class DocumentFixture(object):
# class TestDbBase(base.DeckhandWithDBTestCase):
#     def get_minimal_fixture(**kwargs):
#     def get_minimal_multi_fixture(count=2, **kwargs):
#     def create_documents(self, bucket_name, documents,
#                          validation_policies=None):
#     def show_document(self, **fields):
#     def create_revision(self):
#     def show_revision(self, revision_id):
#     def delete_revisions(self):
#     def list_revision_documents(self, revision_id, **filters):
#     def list_revisions(self):
#     def rollback_revision(self, revision_id):
#     def create_validation(self, revision_id, val_name, val_data):
#     def _validate_object(self, obj):
#     def validate_document(self, actual, expected=None, is_deleted=False):
#     def validate_revision(self, revision):


# Path: deckhand/tests/unit/db/test_revision_rollback.py
from deckhand.tests import test_utils
from deckhand.tests.unit.db import base

        # Revision 2: Update the last document.
        payload[-1]['data'] = {'foo': 'bar'}
        self.create_documents(bucket_name, payload)

        # Revision 3: Delete the third document.
        payload.pop(2)
        self.create_documents(bucket_name, payload)

        # Rollback 4: rollback to revision 1.
        rollback_revision = self.rollback_revision(orig_revision_id)

        self.assertEqual(4, rollback_revision['id'])
        self.assertEqual(
            [1, 1, 4, 4],
            [d['revision_id'] for d in rollback_revision['documents']])
        self.assertEqual(
            [1, 1, 4, 4],
            [d['orig_revision_id'] for d in rollback_revision['documents']])

        rollback_documents = self.list_revision_documents(
            rollback_revision['id'])
        rollback_documents = sorted(rollback_documents,
                                    key=lambda d: d['created_at'])
        self.assertEqual([1, 1, 4, 4],
                         [d['revision_id'] for d in rollback_documents])
        self.assertEqual([1, 1, 4, 4],
                         [d['orig_revision_id'] for d in rollback_documents])

    def test_rollback_to_revision_same_as_current_revision(self):
        payload = base.DocumentFixture.get_minimal_multi_fixture(count=4)

        bucket_name = test_utils.rand_name('bucket')