def test_forward__if_index_already_dropped__should_ignore_this(
            self, test_db, left_schema):
        fields = [('field1', pymongo.ASCENDING),
                  ('field2', pymongo.DESCENDING)]
        action = DropIndex('Document1', 'index2')
        action.prepare(test_db, left_schema, MigrationPolicy.strict)

        action.run_forward()

        indexes = [
            x for x in test_db['document1'].list_indexes()
            if x['key'] == SON(fields)
        ]
        assert len(indexes) == 0
    def test_forward__if_index_name_is_not_in_params__should_drop_index(
            self, test_db, left_schema):
        fields = [('field1', pymongo.ASCENDING)]
        test_db['document1'].create_index(fields)
        action = DropIndex('Document1', 'index1')
        action.prepare(test_db, left_schema, MigrationPolicy.strict)

        action.run_forward()

        indexes = [
            x for x in test_db['document1'].list_indexes()
            if x['key'] == SON(fields)
        ]
        assert len(indexes) == 0
    def test_forward_backward__if_index_name_is_in_params__should_create_index(
            self, test_db, left_schema):
        fields = [('field1', pymongo.ASCENDING),
                  ('field2', pymongo.DESCENDING)]
        test_db['document1'].create_index(fields, name='index2', sparse=True)
        action = DropIndex('Document1', 'index2')
        action.prepare(test_db, left_schema, MigrationPolicy.strict)
        action.run_forward()
        action.cleanup()
        action.prepare(test_db, left_schema, MigrationPolicy.strict)

        action.run_backward()

        indexes = [
            x for x in test_db['document1'].list_indexes()
            if x['key'] == SON(fields)
        ]
        assert len(indexes) == 1
        assert indexes[0]['name'] == 'index2'
        assert indexes[0]['sparse'] is True