コード例 #1
0
    def test_it_should_accept_a_schema_version_option_if_current_version_is_a_file(self, cli_mock, _execution_log_mock, simplevirtuosomigrate_mock, virtuoso_mock, execute_migrations_mock):
        self.initial_config.update({"schema_version":"version", "file_migration":None})
        main = Main(Config(self.initial_config))
        main.execute()

        expected_calls = [
            call('\nStarting Virtuoso migration...', 'PINK', log_level_limit=1),
            call('\nDone.\n', 'PINK', log_level_limit=1)
        ]
        self.assertEqual(expected_calls, _execution_log_mock.mock_calls)
        execute_migrations_mock.assert_called_with('sparql_up', 'sparql_down', 'current_file', 'version')
コード例 #2
0
    def test_it_should_migrate_db_if_create_migration_option_is_not_activated_by_user(self, migrate_mock, _execution_log_mock):
        config = Config(self.initial_config)
        main = Main(config)
        main.execute()

        expected_calls = [
            call('\nStarting Virtuoso migration...', 'PINK', log_level_limit=1),
            call('\nDone.\n', 'PINK', log_level_limit=1)
        ]
        self.assertEqual(expected_calls, _execution_log_mock.mock_calls)
        self.assertEqual(1, migrate_mock.call_count)
コード例 #3
0
 def test_it_should_use_virtuoso_class_to_get_migration_and_execute_changes(self, _execution_log_mock, virtuoso_mock):
     main = Main(Config(self.initial_config))
     main._execute_migrations("sparql_up line 1\nsparql_up line 2\nsparql_up line 3", "sparql_down line 1\nsparql_down line 2\nsparql_down line 3", "current_version", "destination_version")
     expected_calls = [
         call('- Current version is: current_version', 'GREEN', log_level_limit=1),
         call('- Destination version is: destination_version', 'GREEN', log_level_limit=1),
         call('\nStarting Migration!', log_level_limit=1),
         call('===== executing =====', log_level_limit=1)
     ]
     self.assertEqual(expected_calls, _execution_log_mock.mock_calls)
     main.virtuoso.execute_change.assert_called_with("sparql_up line 1\nsparql_up line 2\nsparql_up line 3", "sparql_down line 1\nsparql_down line 2\nsparql_down line 3", execution_log=_execution_log_mock)
コード例 #4
0
 def test_it_should_do_nothing_if_sparql_up_has_two_lines(self, _execution_log_mock, virtuoso_mock):
     main = Main(Config(self.initial_config))
     main._execute_migrations("sparql_up line 1\nsparql_up line 2", "sparql_down line 1\nsparql_down line 2", "current_version", "destination_version")
     expected_calls = [
         call('- Current version is: current_version', 'GREEN', log_level_limit=1),
         call('- Destination version is: destination_version', 'GREEN', log_level_limit=1),
         call('\nStarting Migration!', log_level_limit=1),
         call('\nNothing to do.\n', 'PINK', log_level_limit=1)
     ]
     self.assertEqual(expected_calls, _execution_log_mock.mock_calls)
     self.assertEqual(0, main.virtuoso.execute_change.call_count)
コード例 #5
0
 def test_it_should_log_executed_sparql_if_asked_to_show_sparql(self, _execution_log_mock, virtuoso_mock):
     self.initial_config.update({"show_sparql":True})
     main = Main(Config(self.initial_config))
     main._execute_migrations("sparql_up line 1\nsparql_up line 2\nsparql_up line 3", "sparql_down line 1\nsparql_down line 2\nsparql_down line 3", "current_version", "destination_version")
     expected_calls = [
         call('- Current version is: current_version', 'GREEN', log_level_limit=1),
         call('- Destination version is: destination_version', 'GREEN', log_level_limit=1),
         call('\nStarting Migration!', log_level_limit=1),
         call('===== executing =====', log_level_limit=1),
         call('__________ SPARQL statements executed __________', 'YELLOW', log_level_limit=1),
         call('sparql_up line 1\nsparql_up line 2\nsparql_up line 3', 'YELLOW', log_level_limit=1),
         call('_____________________________________________', 'YELLOW', log_level_limit=1)
     ]
     self.assertEqual(expected_calls, _execution_log_mock.mock_calls)
コード例 #6
0
 def test_it_should_not_execute_any_sparql_if_asked_to_show_sparql_only(self, _execution_log_mock, virtuoso_mock):
     self.initial_config.update({"show_sparql_only":True})
     main = Main(Config(self.initial_config))
     main._execute_migrations("sparql_up line 1\nsparql_up line 2\nsparql_up line 3", "sparql_down line 1\nsparql_down line 2\nsparql_down line 3", "current_version", "destination_version")
     expected_calls = [
         call('- Current version is: current_version', 'GREEN', log_level_limit=1),
         call('- Destination version is: destination_version', 'GREEN', log_level_limit=1),
         call("\nWARNING: commands are not being executed ('--show_sparql_only' activated)", 'RED', log_level_limit=1),
         call('__________ SPARQL statements executed __________', 'YELLOW', log_level_limit=1),
         call('sparql_up line 1\nsparql_up line 2\nsparql_up line 3', 'YELLOW', log_level_limit=1),
         call('_____________________________________________', 'YELLOW', log_level_limit=1)
     ]
     self.assertEqual(expected_calls, _execution_log_mock.mock_calls)
     self.assertEqual(0, main.virtuoso.execute_change.call_count)
コード例 #7
0
    def test_it_should_not_accept_file_migration_option_if_current_version_is_already_a_file(self, cli_mock, _execution_log_mock, virtuoso_mock, execute_migrations_mock):
        self.initial_config.update({"file_migration":"migration"})
        main = Main(Config(self.initial_config))
        try:
            main.execute()
        except SystemExit:
            pass

        expected_calls = [
            call('\nStarting Virtuoso migration...', 'PINK', log_level_limit=1),
            call('- Current version is: current_file', 'GREEN', log_level_limit=1),
            call('- Destination version is: migration', 'GREEN', log_level_limit=1)
        ]
        self.assertEqual(expected_calls, _execution_log_mock.mock_calls)
        cli_mock.assert_called_with("[ERROR] Can't execute migration FROM File TO File (TIP: version it using git --tag and then use -m)\n", 'RED')
        self.assertEqual(0, execute_migrations_mock.call_count)
コード例 #8
0
    def test_it_should_add_triples_if_the_database_is_not_empty_and_the_option_is_activated_by_the_user(self, run_isql_mock, current_version_mock, execute_change_mock, _execution_log_mock):
        self.initial_config.update({'load_ttl':'new_triple.ttl', 'show_sparql_only':None})
        main = Main(Config(self.initial_config))
        main.execute()

        expected_calls = [
            call('\nStarting Virtuoso migration...', 'PINK', log_level_limit=1),
            call("- TTL(s) to upload: ['new_triple.ttl']", 'GREEN', log_level_limit=1),
            call('- Current version is: 0.1', 'GREEN', log_level_limit=1),
            call('- Destination version is: 0.1', 'GREEN', log_level_limit=1),
            call('\nStarting Migration!', log_level_limit=1),
            call('===== executing =====', log_level_limit=1),
            call('', log_level_limit=1),
            call('\nDone.\n', 'PINK', log_level_limit=1)
        ]
        self.assertEqual(expected_calls, _execution_log_mock.mock_calls)
コード例 #9
0
    def test_it_should_add_triples_if_the_database_is_not_empty_and_the_option_is_activated_by_the_user(self, current_version_mock, statements_mock, execute_change_mock, _execution_log_mock):
        self.initial_config.update({'add_ttl':'new_triples', 'show_sparql_only':None})
        main = Main(Config(self.initial_config))
        main.execute()

        expected_calls = [
            call('\nStarting Virtuoso migration...', 'PINK', log_level_limit=1),
            call('- TTL to insert is: new_triples', 'GREEN', log_level_limit=1),
            call('- Current version is: 0.1', 'GREEN', log_level_limit=1),
            call('- Destination version is: new_triples', 'GREEN', log_level_limit=1),
            call('\nStarting Migration!', log_level_limit=1),
            call('===== executing =====', log_level_limit=1),
            call('\nDone.\n', 'PINK', log_level_limit=1)
        ]
        self.assertEqual(expected_calls, _execution_log_mock.mock_calls)
        statements_mock.assert_called_with('new_triples', '0.1', 'git')
        execute_change_mock.assert_called_with('sparql_up', 'sparql_down', execution_log=_execution_log_mock)
コード例 #10
0
    def test_it_should_not_add_triples_if_show_sparql_only_option_is_activated_by_the_user(self, current_version_mock, execute_change_mock, _execution_log_mock):
        self.initial_config.update({'load_ttl':'new_triple.ttl', 'show_sparql_only':True})
        main = Main(Config(self.initial_config))
        main.execute()

        expected_calls = [
            call('\nStarting Virtuoso migration...', 'PINK', log_level_limit=1),
            call("- TTL(s) to upload: ['new_triple.ttl']", 'GREEN', log_level_limit=1),
#            call('- Current version is: 0.1', 'GREEN', log_level_limit=1),
#            call('- Destination version is: 0.1', 'GREEN', log_level_limit=1),
#            call("\nWARNING: commands are not being executed ('--show_sparql_only' activated)", 'RED', log_level_limit=1),
#            call('__________ SPARQL statements executed __________', 'YELLOW', log_level_limit=1),
#            call('sparql_up', 'YELLOW', log_level_limit=1),
#            call('_____________________________________________', 'YELLOW', log_level_limit=1),
            call('\nDone.\n', 'PINK', log_level_limit=1)
        ]
        self.assertEqual(expected_calls, _execution_log_mock.mock_calls)
        self.assertEqual(0, execute_change_mock.call_count)
コード例 #11
0
    def test_it_should_write_the_message_to_cli(self, cli_mock, log_mock, simplevirtuosomigrate_mock):
        main = Main(config=Config(self.initial_config))
        main._execution_log('message to log', color='RED', log_level_limit=1)

        cli_mock.assert_called_with('message to log', 'RED')
コード例 #12
0
 def test_it_should_call_run_after_method_after_calling_execute(self, load_triples_mock, run_after_mock, execution_log_mock):
     self.initial_config.update({'load_ttl':'', 'run_after': 'some_script_name'})
     main = Main(Config(self.initial_config))
     main.execute()
     self.assertEqual(execution_log_mock.call_count, 3)
     run_after_mock.assert_called_with('some_script_name', None)
コード例 #13
0
 def test_should_exec_and_call_run_after_script(self, valid_version_mock, load_triples_mock, execution_log_mock):
     self.initial_config.update({'load_ttl':'', 'run_after': 'tests/samples/validate_run_after.py'})
     main = Main(Config(self.initial_config))
     main.execute()
     self.assertEqual(valid_version_mock.call_count, 2)
コード例 #14
0
 def test_it_should_get_destination_version_when_user_does_not_inform_a_specific_version(self, simplevirtuosomigrate_mock):
     self.initial_config.update({"schema_version": None})
     main = Main(Config(self.initial_config))
     self.assertEqual("latest_version_available", main._get_destination_version())
コード例 #15
0
 def test_it_should_get_destination_version_when_user_informs_a_specific_version(self, simplevirtuosomigrate_mock):
     self.initial_config.update({"schema_version": "20090214115300"})
     main = Main(Config(self.initial_config))
     self.assertEqual("20090214115300", main._get_destination_version())
     main.virtuoso_migrate.check_if_version_exists.assert_called_with('20090214115300')
     self.assertEqual(1, main.virtuoso_migrate.check_if_version_exists.call_count)
コード例 #16
0
 def test_it_should_get_current_and_destination_versions_and_execute_migrations(self, virtuoso_mock, _get_destination_version_mock, execute_migrations_mock):
     main = Main(Config(self.initial_config))
     main.execute()
     execute_migrations_mock.assert_called_with('sparql_up', 'sparql_down', 'current_version', 'destination_version')
コード例 #17
0
 def test_exit_if_invalid_python_version(self, mock_sys_version_info):
     self.assertFalse(Main._valid_version())
     self.assertRaises(SystemExit, Main, None)
コード例 #18
0
 def test_should_exec_and_fail_with_invalid_after_script(self, load_triples_mock, execution_log_mock):
     self.initial_config.update({'load_ttl':'', 'run_after': 'tests/samples/invalid_run_after.py'})
     main = Main(Config(self.initial_config))
     main.execute()
     execution_log_mock.mock_calls[-2].called_with('\nRun after script tests/samples/invalid_run_after.py does not have run_after() function .\n', 'PINK', 1)
コード例 #19
0
    def test_it_should_write_the_message_to_cli_using_default_color(self, cli_mock, log_mock, simplevirtuosomigrate_mock):
        self.initial_config.update({'log_level': 3})
        main = Main(config=Config(self.initial_config))
        main._execution_log('message to log')

        cli_mock.assert_called_with('message to log', 'CYAN')
コード例 #20
0
 def test_detect_invalid_python_version(self, mock_sys_version_info):
     self.assertFalse(Main._valid_version())