mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
Personal_wikis: Assert name prop is in wiki.core
This commit is contained in:
parent
083ab133f7
commit
04a58326e2
@ -37,24 +37,24 @@ abstract class Xowdir_wiki_props_mgr__base implements Xowdir_wiki_props_mgr {
|
||||
public Xowdir_wiki_props Verify(boolean mode_is_import, String domain, Io_url core_db_url) {
|
||||
Xowdir_wiki_props rv = new Xowdir_wiki_props();
|
||||
|
||||
Verify_or_fix(rv, core_db_url, Xowd_cfg_key_.Key__wiki_core__domain);
|
||||
Verify_or_fix(rv, core_db_url, Xowd_cfg_key_.Key__init__main_page);
|
||||
Verify_or_fix(rv, core_db_url, Xowd_cfg_key_.Key__wiki_core__name);
|
||||
Verify_or_fix(rv, mode_is_import, core_db_url, Xowd_cfg_key_.Key__wiki_core__domain);
|
||||
Verify_or_fix(rv, mode_is_import, core_db_url, Xowd_cfg_key_.Key__init__main_page);
|
||||
Verify_or_fix(rv, mode_is_import, core_db_url, Xowd_cfg_key_.Key__wiki_core__name);
|
||||
|
||||
return rv;
|
||||
}
|
||||
private String Verify_or_fix(Xowdir_wiki_props props, Io_url core_db_url, String key) {
|
||||
private String Verify_or_fix(Xowdir_wiki_props props, boolean mode_is_import, Io_url core_db_url, String key) {
|
||||
String val = Wiki_cfg__select_or(key, null);
|
||||
if (val == null) {
|
||||
props.Dirty_y_();
|
||||
usr_dlg.Warn_many("", "", "xowdir: core_db.xowa_cfg does not have val; url=~{0} key=~{1}", core_db_url, key);
|
||||
val = Fix(props, core_db_url, key);
|
||||
val = Fix(props, mode_is_import, core_db_url, key);
|
||||
Wiki_cfg__upsert(key, val);
|
||||
}
|
||||
props.Set(key, val);
|
||||
return val;
|
||||
}
|
||||
private static String Fix(Xowdir_wiki_props props, Io_url core_db_url, String key) {
|
||||
private String Fix(Xowdir_wiki_props props, boolean mode_is_import, Io_url core_db_url, String key) {
|
||||
if (String_.Eq(key, Xowd_cfg_key_.Key__wiki_core__domain)) {
|
||||
String rv = core_db_url.NameOnly();
|
||||
if (String_.Has_at_end(rv, "-core"))
|
||||
@ -62,7 +62,12 @@ abstract class Xowdir_wiki_props_mgr__base implements Xowdir_wiki_props_mgr {
|
||||
return rv;
|
||||
}
|
||||
else if (String_.Eq(key, Xowd_cfg_key_.Key__wiki_core__name)) {
|
||||
return props.Domain(); // NOTE: must be called after domain
|
||||
if (mode_is_import)
|
||||
return props.Domain(); // NOTE: must be called after domain
|
||||
else {
|
||||
Xowdir_wiki_json wiki_json = Xowdir_wiki_json.New_by_json(new Json_parser(), User_reg__select(props.Domain()));
|
||||
return wiki_json.Name();
|
||||
}
|
||||
}
|
||||
else if (String_.Eq(key, Xowd_cfg_key_.Key__init__main_page)) {
|
||||
return Xoa_page_.Main_page_str;
|
||||
|
@ -16,37 +16,49 @@ You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.directorys.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*;
|
||||
import org.junit.*; import gplx.core.tests.*; import gplx.xowa.wikis.data.*;
|
||||
import org.junit.*; import gplx.core.tests.*;
|
||||
import gplx.langs.jsons.*;
|
||||
import gplx.xowa.wikis.data.*;
|
||||
public class Xowdir_wiki_props_mgr__tst {
|
||||
private final Xowdir_wiki_props_mgr__fxt fxt = new Xowdir_wiki_props_mgr__fxt();
|
||||
|
||||
@Test public void Import__wiki__missing_all() {
|
||||
// handle all imported .xowa wikis pre v4.3
|
||||
fxt.Init__props(null, null, null);
|
||||
fxt.Init__wiki_props(null, null, null);
|
||||
fxt.Test__verify(Bool_.Y, "/dir/test.xowa", Bool_.Y, fxt.Make__json("test", "test", "Main_Page"));
|
||||
}
|
||||
@Test public void Import__wiki__missing_domain() {
|
||||
// handle personal wikis from v4.2
|
||||
fxt.Init__props(null, null, "Main_Page");
|
||||
fxt.Init__wiki_props(null, null, "Main_Page");
|
||||
fxt.Test__verify(Bool_.Y, "/dir/test.xowa", Bool_.Y, fxt.Make__json("test", "test", "Main_Page"));
|
||||
}
|
||||
@Test public void Import__wiki__wmf_domain() {
|
||||
// handle wmf wikis with a core-file of "test-core.xowa"
|
||||
fxt.Init__props(null, null, "Main_Page");
|
||||
fxt.Init__wiki_props(null, null, "Main_Page");
|
||||
fxt.Test__verify(Bool_.Y, "/dir/test-core.xowa", Bool_.Y, fxt.Make__json("test", "test", "Main_Page"));
|
||||
}
|
||||
@Test public void Import__wiki__clean() {
|
||||
// handle clean wiki
|
||||
fxt.Init__props("test", "test", "Main_Page");
|
||||
fxt.Init__wiki_props("test", "test", "Main_Page");
|
||||
fxt.Test__verify(Bool_.Y, "/dir/test.xowa", Bool_.N, fxt.Make__json("test", "test", "Main_Page"));
|
||||
}
|
||||
@Test public void Open__wiki__missing_name() {
|
||||
// handle missing name
|
||||
fxt.Init__user_json("test", "my test", "Main_Page");
|
||||
fxt.Init__wiki_props(null, null, "Main_Page");
|
||||
fxt.Test__verify(Bool_.N, "/dir/test.xowa", Bool_.Y, fxt.Make__json("test", "my test", "Main_Page"));
|
||||
}
|
||||
}
|
||||
class Xowdir_wiki_props_mgr__fxt {
|
||||
private final Xowdir_wiki_props_mgr mgr = new Xowdir_wiki_props_mgr__mock();
|
||||
public Xowdir_wiki_props Make__json(String domain, String name, String main_page) {
|
||||
return new Xowdir_wiki_props(domain, name, main_page);
|
||||
}
|
||||
public void Init__props(String domain, String name, String main_page) {
|
||||
public void Init__user_json(String domain, String name, String main_page) {
|
||||
Xowdir_wiki_json wiki_json = new Xowdir_wiki_json(name, main_page);
|
||||
mgr.User_reg__upsert(domain, wiki_json.To_str(new Json_wtr()));
|
||||
}
|
||||
public void Init__wiki_props(String domain, String name, String main_page) {
|
||||
mgr.Wiki_cfg__upsert(Xowd_cfg_key_.Key__wiki_core__domain, domain);
|
||||
mgr.Wiki_cfg__upsert(Xowd_cfg_key_.Key__wiki_core__name, name);
|
||||
mgr.Wiki_cfg__upsert(Xowd_cfg_key_.Key__init__main_page, main_page);
|
||||
|
@ -44,7 +44,9 @@ public class Xowdir_item_doc implements Mustache_doc_itm {
|
||||
}
|
||||
|
||||
public static final Xowdir_item_doc[] Ary_empty = new Xowdir_item_doc[0];
|
||||
public static Xowdir_item_doc New(Xowdir_wiki_itm itm) {return new Xowdir_item_doc(itm.Id(), itm.Domain(), itm.Json().Name(), itm.Url().OwnerDir().Xto_api(), itm.Json().Main_page());}
|
||||
public static Xowdir_item_doc New(Xowdir_wiki_itm itm) {
|
||||
return new Xowdir_item_doc(itm.Id(), itm.Domain(), itm.Json().Name(), itm.Url().OwnerDir().Xto_api(), itm.Json().Main_page());
|
||||
}
|
||||
public static Xowdir_item_doc[] New_ary(Xowdir_wiki_itm[] itms_ary) {
|
||||
int len = itms_ary.length;
|
||||
Xowdir_item_doc[] rv = new Xowdir_item_doc[itms_ary.length];
|
||||
|
Loading…
Reference in New Issue
Block a user