예제 #1
0
    def test_get_all_native_translations(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", {
                u"SomeString": u"Mac translation for some string",
                u"OtherString": u"Mac translation for some other string"
            })

        self.assertEquals(
            db.get_all_native_translations(),
            [
                u"Mac translation for some string",
                u"Mac translation for some other string"
            ],
        )

        db.disconnect()
예제 #2
0
    def test_disconnect_saves_existing_database(self):
        db = database.SQLite("some_filename")

        def _connect(*args, **kwargs):
            db.dbh = sqlite3.connect(":memory:")

        lines = []

        def _write(line):
            lines.append(line)

        db.connect = mock.Mock(side_effect=_connect)

        output_file = mock.Mock()
        output_file.write = mock.Mock(side_effect=_write)
        db._open_for_writing = mock.Mock(return_value=output_file)
        db._remove_temporary_file = mock.Mock()

        db.connect()
        cursor = db.dbh.cursor()
        cursor.execute(
            "create table test_table (test_column INTEGER NOT NULL);")
        cursor.execute("insert into test_table (test_column) values(1);")

        db.disconnect()

        db._open_for_writing.assert_called_with("some_filename")
        db._remove_temporary_file.assert_called_with()
        self.assertEquals(
            "".join(lines), """BEGIN TRANSACTION;
            CREATE TABLE test_table (test_column INTEGER NOT NULL);
            INSERT INTO "test_table" VALUES(1);
            COMMIT;
            """.replace("    ", ""))
예제 #3
0
    def test_update_from_vcs(self, mock_function):
        mock_function.return_value = "some_full_path"
        vcs = mock.Mock()
        db = database.SQLite("some_filename")
        submodule_path = "submodule"

        db.update_from_vcs(vcs, submodule_path)

        vcs.add_file.assert_called_with("some_full_path", submodule_path)
예제 #4
0
    def test_deletes_existing_temp_file_on_connect(self, exists_func):
        exists_func.return_value = True

        db = database.SQLite("some_filename")
        db._remove_temporary_file = mock.Mock()
        db._load_database = mock.Mock()

        db.connect()

        db._remove_temporary_file.assert_called_with()
예제 #5
0
    def test_connect_loads_schema_if_new_database(self, mock_function):
        mock_function.return_value = False
        db = database.SQLite("some_filename")
        db._save_database = mock.Mock()

        orig_load_schema = db._load_schema
        db._load_schema = mock.Mock(side_effect=orig_load_schema)

        db._schema_file = mock.Mock(
            return_value=cStringIO.StringIO("""create table test_table (
                test_column INTEGER NOT NULL
            );"""))

        db.connect()

        db._load_schema.assert_called_with()

        cursor = db.dbh.cursor()
        cursor.execute("insert into test_table (test_column) values(1)")
        cursor.close()

        db.disconnect()
예제 #6
0
    def test_get_native_translations_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": "%03d of %03.3lld for {0} %@",
            })

        self.assertEquals(db.get_native_translations_for_platform("Mac"),
                          ["%03d of %03.3lld for {0} %@"])

        db.disconnect()
예제 #7
0
    def test_connect_loads_existing_database(self, mock_function):
        mock_function.return_value = True
        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)

        orig_load_database = db._load_database
        db._load_database = mock.Mock(side_effect=orig_load_database)

        db._open_for_reading = mock.Mock(
            return_value=cStringIO.StringIO("""create table test_table (
                test_column INTEGER NOT NULL
            );

            insert into test_table(test_column) values(1);
            """))

        db.connect()

        db._load_database.assert_called_with()
        db._open_for_reading.assert_called_with("some_filename")

        cursor = db.dbh.cursor()
        cursor.execute("select test_column from test_table")

        self.assertEquals(cursor.fetchall(), [(1, )])
        cursor.close()

        db.disconnect()
예제 #8
0
    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")
예제 #9
0
    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")
예제 #10
0
    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()
예제 #11
0
    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()
예제 #12
0
    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()