def _create_db_instance(conf): return database.SQLite(os.path.join( os.path.abspath(conf.get(Config.xlf_repo_path)), conf.get(Config.database_path) ))
def test_open_for_writing(self, open_func): db = database.SQLite("some_filename") db._open_for_writing("filename") open_func.assert_called_with("filename", "w", "utf-8")
def test_open_for_reading(self, open_func): db = database.SQLite("some_filename") db._open_for_reading("filename") open_func.assert_called_with("filename", "r")
def test_remove_old_unmapped_strings(self): db = database.SQLite("some_filename") def _connect(*args, **kwargs): db.dbh = sqlite3.connect(":memory:") def _disconnect(*args, **kwargs): db.dbh.close() db._connect = mock.Mock(side_effect=_connect) db.disconnect = mock.Mock(side_effect=_disconnect) db.connect() db.write_string_mapping_for_platform( "Mac", { "SomeString": "Translation for some string", "OtherString": "Translation for some other string", }) cursor = db.dbh.cursor() self.assertEquals( cursor.execute(""" select translation_key_no, translation_key from translation_keys""").fetchall(), [(2, u"OtherString"), (1, u"SomeString")], ) cursor.execute(""" delete from native_translations where translation_key_no = 1 """) db.remove_old_unmapped_strings() self.assertEquals( cursor.execute(""" select translation_key_no, translation_key from translation_keys""").fetchall(), [(2, u"OtherString"), (1, u"SomeString")], ) cursor.execute(""" update translation_keys set last_updated = datetime('now', '-89 days') """) db.remove_old_unmapped_strings() self.assertEquals( cursor.execute(""" select translation_key_no, translation_key from translation_keys""").fetchall(), [(2, u"OtherString"), (1, u"SomeString")], ) cursor.execute(""" update translation_keys set last_updated = datetime('now', '-91 days') """) db.remove_old_unmapped_strings() self.assertEquals( cursor.execute(""" select translation_key_no, translation_key from translation_keys""").fetchall(), [(2, u"OtherString")], ) db.disconnect()
def test_write_string_mapping_for_platform(self): db = database.SQLite("some_filename") def _connect(*args, **kwargs): db.dbh = sqlite3.connect(":memory:") def _disconnect(*args, **kwargs): db.dbh.close() db._connect = mock.Mock(side_effect=_connect) db.disconnect = mock.Mock(side_effect=_disconnect) db._get_current_time = mock.Mock( return_value="datetime('2010-12-02 02:20:00')") db.connect() db.write_string_mapping_for_platform( "Mac", { "SomeString": "Translation for some string", "OtherString": "Translation for some other string", }) cursor = db.dbh.cursor() self.assertEquals( cursor.execute("select * from translation_keys").fetchall(), [(1, u"SomeString", u"2010-12-02 02:20:00"), (2, u"OtherString", u"2010-12-02 02:20:00")], ) self.assertEquals( cursor.execute("select * from native_translations").fetchall(), [(1, 1, 1, u"Translation for some string"), (2, 2, 1, u"Translation for some other string")], ) db._get_current_time = mock.Mock( return_value="datetime('2010-12-02 02:21:00')") db.write_string_mapping_for_platform( "Win", { "SomeString": "Translation for some string", "OtherString": "Translation for some other string", }) self.assertEquals( cursor.execute("select * from translation_keys").fetchall(), [(1, u"SomeString", u"2010-12-02 02:21:00"), (2, u"OtherString", u"2010-12-02 02:21:00")], ) self.assertEquals( cursor.execute("select * from native_translations").fetchall(), [(1, 1, 1, u"Translation for some string"), (2, 2, 1, u"Translation for some other string"), (3, 1, 2, u"Translation for some string"), (4, 2, 2, u"Translation for some other string")], ) db._get_current_time = mock.Mock( return_value="datetime('2010-12-02 02:22:00')") db.write_string_mapping_for_platform( "Mac", { "SomeString": "New translation for some string", "OtherString": "Translation for some other string", }) self.assertEquals( cursor.execute("select * from translation_keys").fetchall(), [(1, u"SomeString", u"2010-12-02 02:22:00"), (2, u"OtherString", u"2010-12-02 02:21:00")], ) self.assertEquals( cursor.execute("select * from native_translations").fetchall(), [(1, 1, 1, u"New translation for some string"), (2, 2, 1, u"Translation for some other string"), (3, 1, 2, u"Translation for some string"), (4, 2, 2, u"Translation for some other string")], ) db._get_current_time = mock.Mock( return_value="datetime('2010-12-02 02:23:00')") db.write_string_mapping_for_platform( "Win", { "SomeString": "New translation for some string", }) self.assertEquals( cursor.execute("select * from translation_keys").fetchall(), [(1, u"SomeString", u"2010-12-02 02:23:00"), (2, u"OtherString", u"2010-12-02 02:23:00")], ) self.assertEquals( cursor.execute("select * from native_translations").fetchall(), [(1, 1, 1, u"New translation for some string"), (2, 2, 1, u"Translation for some other string"), (3, 1, 2, u"New translation for some string")], ) db.disconnect()
def test_write_string_mapping_for_platform_translates_params(self): db = database.SQLite("some_filename") def _connect(*args, **kwargs): db.dbh = sqlite3.connect(":memory:") def _disconnect(*args, **kwargs): db.dbh.close() db._connect = mock.Mock(side_effect=_connect) db.disconnect = mock.Mock(side_effect=_disconnect) db._get_current_time = mock.Mock( return_value="datetime('2010-12-02 02:20:00')") db.connect() db.write_string_mapping_for_platform( "Mac", { "SomeString": "% 03d of %03.3lld for {0} %@", }) cursor = db.dbh.cursor() self.assertEquals( cursor.execute("select * from translation_keys").fetchall(), [ (1, u"SomeString", u"2010-12-02 02:20:00"), ], ) self.assertEquals( cursor.execute("select * from native_translations").fetchall(), [ (1, 1, 1, "% 03d of %03.3lld for {0} %@"), ], ) self.assertEquals( cursor.execute("select * from replaced_params").fetchall(), [ (1, 1, 1, 0, u"% 03d"), (2, 1, 1, 1, u"%03.3lld"), (3, 1, 1, 2, u"{0}"), (4, 1, 1, 3, u"%@"), ], ) db.write_string_mapping_for_platform("Mac", { "SomeString": "% 03d of %03.3lld", }) self.assertEquals( cursor.execute("select * from native_translations").fetchall(), [ (1, 1, 1, "% 03d of %03.3lld"), ], ) self.assertEquals( cursor.execute("select * from replaced_params").fetchall(), [ (1, 1, 1, 0, u"% 03d"), (2, 1, 1, 1, u"%03.3lld"), ], ) db.disconnect()