예제 #1
0
 def test_prepare_w_dialect_kwargs(self):
     Base = automap_base(metadata=self.tables_test_metadata)
     engine_mock = Mock()
     with patch.object(Base.metadata, "reflect") as reflect_mock:
         Base.prepare(
             autoload_with=engine_mock,
             reflection_options={"oracle_resolve_synonyms": True},
         )
         reflect_mock.assert_called_once_with(
             engine_mock,
             schema=None,
             extend_existing=True,
             autoload_replace=False,
             oracle_resolve_synonyms=True,
         )
예제 #2
0
 def test_prepare_defaults_to_no_schema(self):
     """
     The underlying reflect call accepts an optional schema argument.
     This is for determining which database schema to load.
     This test verifies that prepare passes a default None if no schema is provided.
     """
     Base = automap_base(metadata=self.metadata)
     engine_mock = Mock()
     with patch.object(Base.metadata, "reflect") as reflect_mock:
         Base.prepare(engine_mock, reflect=True)
         reflect_mock.assert_called_once_with(
             engine_mock,
             schema=None,
             extend_existing=True,
             autoload_replace=False,
         )
예제 #3
0
 def test_prepare_defaults_to_no_schema(self):
     """
     The underlying reflect call accepts an optional schema argument.
     This is for determining which database schema to load.
     This test verifies that prepare passes a default None if no schema is provided.
     """
     Base = automap_base(metadata=self.metadata)
     engine_mock = Mock()
     with patch.object(Base.metadata, "reflect") as reflect_mock:
         Base.prepare(engine_mock, reflect=True)
         reflect_mock.assert_called_once_with(
             engine_mock,
             schema=None,
             extend_existing=True,
             autoload_replace=False,
         )
예제 #4
0
 def test_prepare_accepts_optional_schema_arg(self):
     """
     The underlying reflect call accepts an optional schema argument.
     This is for determining which database schema to load.
     This test verifies that prepare can accept an optional schema
     argument and pass it to reflect.
     """
     Base = automap_base(metadata=self.tables_test_metadata)
     engine_mock = Mock()
     with patch.object(Base.metadata, "reflect") as reflect_mock:
         Base.prepare(autoload_with=engine_mock, schema="some_schema")
         reflect_mock.assert_called_once_with(
             engine_mock,
             schema="some_schema",
             extend_existing=True,
             autoload_replace=False,
         )
예제 #5
0
 def test_prepare_accepts_optional_schema_arg(self):
     """
     The underlying reflect call accepts an optional schema argument.
     This is for determining which database schema to load.
     This test verifies that prepare can accept an optiona schema argument
     and pass it to reflect.
     """
     Base = automap_base(metadata=self.metadata)
     engine_mock = Mock()
     with patch.object(Base.metadata, "reflect") as reflect_mock:
         Base.prepare(engine_mock, reflect=True, schema="some_schema")
         reflect_mock.assert_called_once_with(
             engine_mock,
             schema="some_schema",
             extend_existing=True,
             autoload_replace=False,
         )
예제 #6
0
    def test_branched_invalidate_branch_to_parent(self):
        c1 = self.engine.connect()

        with patch.object(self.engine.pool, "logger") as logger:
            c1_branch = c1.connect()
            eq_(c1_branch.execute(select([1])).scalar(), 1)

            self.engine.test_shutdown()

            _assert_invalidated(c1_branch.execute, select([1]))
            assert c1.invalidated
            assert c1_branch.invalidated

            c1_branch._revalidate_connection(_wrap=True)
            assert not c1.invalidated
            assert not c1_branch.invalidated

        assert "Invalidate connection" in logger.mock_calls[0][1][0]
예제 #7
0
    def test_branched_invalidate_branch_to_parent(self):
        c1 = self.engine.connect()

        with patch.object(self.engine.pool, "logger") as logger:
            c1_branch = c1.connect()
            eq_(c1_branch.execute(select([1])).scalar(), 1)

            self.engine.test_shutdown()

            _assert_invalidated(c1_branch.execute, select([1]))
            assert c1.invalidated
            assert c1_branch.invalidated

            c1_branch._revalidate_connection()
            assert not c1.invalidated
            assert not c1_branch.invalidated

        assert "Invalidate connection" in logger.mock_calls[0][1][0]
예제 #8
0
    def test_branched_invalidate_branch_to_parent(self):
        with self.engine.connect() as c1:

            with patch.object(self.engine.pool, "logger") as logger:
                with testing.expect_deprecated_20(
                        r"The Connection.connect\(\) method is considered legacy"
                ):
                    c1_branch = c1.connect()
                eq_(c1_branch.execute(select(1)).scalar(), 1)

                self.engine.test_shutdown()

                _assert_invalidated(c1_branch.execute, select(1))
                assert c1.invalidated
                assert c1_branch.invalidated

                c1_branch._revalidate_connection()
                assert not c1.invalidated
                assert not c1_branch.invalidated

            assert "Invalidate connection" in logger.mock_calls[0][1][0]
    def test_update_multi_missing_broken_multi_rowcount(self):
        @util.memoized_property
        def rowcount(self):
            if len(self.context.compiled_parameters) > 1:
                return -1
            else:
                return self.context.rowcount

        with patch.object(config.db.dialect, "supports_sane_multi_rowcount",
                          False):
            with patch("sqlalchemy.engine.result.ResultProxy.rowcount",
                       rowcount):

                Foo = self.classes.Foo
                s1 = self._fixture()
                f1s1 = Foo(value='f1 value')
                s1.add(f1s1)
                s1.commit()

                f1s1.value = 'f2 value'
                s1.flush()
                eq_(f1s1.version_id, 2)
예제 #10
0
    def test_update_multi_missing_broken_multi_rowcount(self):
        @util.memoized_property
        def rowcount(self):
            if len(self.context.compiled_parameters) > 1:
                return -1
            else:
                return self.context.rowcount

        with patch.object(
                config.db.dialect, "supports_sane_multi_rowcount", False):
            with patch(
                    "sqlalchemy.engine.result.ResultProxy.rowcount",
                    rowcount):

                Foo = self.classes.Foo
                s1 = self._fixture()
                f1s1 = Foo(value='f1 value')
                s1.add(f1s1)
                s1.commit()

                f1s1.value = 'f2 value'
                s1.flush()
                eq_(f1s1.version_id, 2)