Ejemplo n.º 1
0
    def test_upgrades_from_existing_format_to_target_format(self):
        storage = storage_with_format("1.0")

        upgrader = Upgrader(target="2.0", steps={"1.0": mock_upgrade_to("2.0")})

        upgrader.upgrade(storage)

        assert_that(format_of(storage), equal_to("2.0"))
Ejemplo n.º 2
0
    def test_raises_error_if_no_upgrader_from_current_version(self):
        storage = storage_with_format("1.0")

        upgrader = Upgrader(target="4.0", steps={"2.0": never_called, "3.0": never_called})

        try:
            upgrader.upgrade(storage)
            raise AssertionError("should have raised an exception")
        except UserError as e:
            assert_that(str(e), contains_string("cannot migrate from version 1.0 to version 4.0"))
Ejemplo n.º 3
0
    def test_raises_error_if_run_against_version_higher_than_target(self):
        storage = storage_with_format("3.0")

        upgrader = Upgrader(target="2.0", steps={"1.0": never_called, "2.0": never_called})

        try:
            upgrader.upgrade(storage)
            raise AssertionError("should have raised an exception")
        except UserError as e:
            assert_that(str(e), contains_string("cannot migrate from version 3.0 to version 2.0"))
Ejemplo n.º 4
0
    def test_does_not_have_to_start_from_lowest_version(self):
        storage = storage_with_format("2.0")

        upgrader = Upgrader(
            target="4.0",
            steps={"1.0": mock_upgrade_to("2.0"), "2.0": mock_upgrade_to("3.0"), "3.0": mock_upgrade_to("4.0")},
        )

        upgrader.upgrade(storage)

        assert_that(format_of(storage), equal_to("4.0"))
Ejemplo n.º 5
0
    def test_applies_multiple_upgrade_steps_until_format_is_same_as_target(self):
        storage = storage_with_format("1.0")

        upgrader = Upgrader(
            target="4.0",
            steps={"1.0": mock_upgrade_to("2.0"), "2.0": mock_upgrade_to("3.0"), "3.0": mock_upgrade_to("4.0")},
        )

        upgrader.upgrade(storage)

        assert_that(format_of(storage), equal_to("4.0"))
Ejemplo n.º 6
0
    def test_returns_false_if_already_at_target_version(self):
        storage = storage_with_format("2.0")

        upgrader = Upgrader(target="2.0", steps={"1.0": never_called})

        assert_that(upgrader.upgrade(storage), equal_to(False))
Ejemplo n.º 7
0
    def test_returns_true_if_has_performed_upgrade_actions(self):
        storage = storage_with_format("1.0")

        upgrader = Upgrader(target="2.0", steps={"1.0": mock_upgrade_to("2.0")})

        assert_that(upgrader.upgrade(storage), equal_to(True))