SubwayTooter-Android-App/app/src/test/java/jp/juggler/subwaytooter/TestColumnMeta.kt

65 lines
5.6 KiB
Kotlin

package jp.juggler.subwaytooter
import jp.juggler.subwaytooter.table.SavedAccount
import kotlin.test.Test
import kotlin.test.assertEquals
class TestColumnMeta {
@Test
fun test1() {
val columnList = SavedAccount.columnList
val actual = columnList.createTableSql()
.joinToString(";")
val expect =
"create table if not exists access_info (_id INTEGER PRIMARY KEY,a text not null,confirm_boost integer default 1,confirm_favourite integer default 1,confirm_follow integer default 1,confirm_follow_locked integer default 1,confirm_post integer default 1,confirm_reaction integer default 1,confirm_unbookmark integer default 1,confirm_unboost integer default 1,confirm_unfavourite integer default 1,confirm_unfollow integer default 1,d text,default_sensitive integer default 0,default_text text default '',dont_hide_nsfw integer default 0,dont_show_timeout integer default 0,expand_cw integer default 0,extra_json text default null,h text not null,image_max_megabytes text default null,image_resize text default null,is_misskey integer default 0,max_toot_chars integer default 0,movie_max_megabytes text default null,notification_boost integer default 1,notification_favourite integer default 1,notification_follow integer default 1,notification_follow_request integer default 1,notification_mention integer default 1,notification_post integer default 1,notification_reaction integer default 1,notification_server text default '',notification_update integer default 1,notification_vote integer default 1,push_policy text default null,t text not null,u text not null,visibility text);create index if not exists access_info_user on access_info(u);create index if not exists access_info_host on access_info(h,u)"
assertEquals(
expected = expect,
actual = actual,
message = "SavedAccount createParams()",
)
}
@Test
fun test2() {
val columnList = SavedAccount.columnList
val expectMap = mapOf(
2 to "alter table access_info add column notification_boost integer default 1;alter table access_info add column notification_favourite integer default 1;alter table access_info add column notification_follow integer default 1;alter table access_info add column notification_mention integer default 1",
10 to "alter table access_info add column confirm_follow integer default 1;alter table access_info add column confirm_follow_locked integer default 1;alter table access_info add column confirm_post integer default 1;alter table access_info add column confirm_unfollow integer default 1",
13 to "alter table access_info add column notification_server text default ''",
//使われなくなった 14 to "alter table access_info add column register_key text default '';alter table access_info add column register_time integer default 0",
//使われなくなった 16 to "alter table access_info add column sound_uri text default ''",
18 to "alter table access_info add column dont_show_timeout integer default 0",
23 to "alter table access_info add column confirm_favourite integer default 1",
24 to "alter table access_info add column confirm_unboost integer default 1;alter table access_info add column confirm_unfavourite integer default 1",
27 to "alter table access_info add column default_text text default ''",
28 to "alter table access_info add column is_misskey integer default 0",
33 to "alter table access_info add column notification_reaction integer default 1;alter table access_info add column notification_vote integer default 1",
38 to "alter table access_info add column default_sensitive integer default 0;alter table access_info add column expand_cw integer default 0",
39 to "alter table access_info add column max_toot_chars integer default 0",
//使われなくなった 42 to "alter table access_info add column last_notification_error text",
44 to "alter table access_info add column notification_follow_request integer default 1",
//使われなくなった 45 to "alter table access_info add column last_subscription_error text",
//使われなくなった 46 to "alter table access_info add column last_push_endpoint text",
56 to "alter table access_info add column d text",
57 to "alter table access_info add column notification_post integer default 1",
59 to "alter table access_info add column image_max_megabytes text default null;alter table access_info add column image_resize text default null;alter table access_info add column movie_max_megabytes text default null",
60 to "alter table access_info add column push_policy text default null",
61 to "alter table access_info add column confirm_reaction integer default 1",
62 to "alter table access_info add column confirm_unbookmark integer default 1",
63 to "alter table access_info add column extra_json text default null",
64 to "alter table access_info add column notification_update integer default 1",
)
for (newVersion in 1..expectMap.maxOf { it.key }) {
val actualSql = columnList.upgradeSql(db = null, newVersion - 1, newVersion)
.joinToString(";")
val expectSql = expectMap[newVersion] ?: ""
assertEquals(
expected = expectSql,
actual = actualSql,
message = "SavedAccount v$newVersion",
)
}
}
}