gadget.Prefs()
現状6つのPriority0(必須)のテストケースが落ちる。そのうち5つは gadget.Prefs 関係なので Shindig を調べてみた。
落ちるテストケースはこれ。
var prefs = new gadgets.Prefs(); PrefsSuite.verifyPref(result, prefs); PrefsSuite.verifyValue(result, 'getInt(myCounter)', prefs.getInt('myCounter'), 100);
myCounter というユーザー設定がとれていない。
でShindigのfeatures/core/prefs.js を見てみると、
gadgets.Prefs = function() { if (!instance) { parseUrl(); mergeDefaults(); instance = this; } return instance; };
ということでURLがあやしい。
function parseUrl() { var params = gadgets.util.getUrlParameters(); for (var i in params) { if (params.hasOwnProperty(i)) { if (i.indexOf("up_") === 0 && i.length > 3) { prefs[i.substr(3)] = String(params[i]); } else if (i === "country") { country = params[i]; } else if (i === "lang") { language = params[i]; } else if (i === "mid") { moduleId = params[i]; } } } }
おk。ということでガジェットを構成するときに、up_myCounter=100 をクエリにくっつけてあげたらpassした。そんな感じのもので5個Failケースを蹴散らしたので残りは1つ。
ひとまず、ガジェットを構成するページには prefs.foo = bar で保存しておいて、URL構成するときに up_foo=bar をつければいいか。
{ gagets: { top: [...], bottom: [...], center: [ { url : "http://..../gadget.xml", prefs : { foo: "bar" } }, ] } } 追記。以下のテストデータが必要のようです。 >|javascript| "prefs" : { /* Spec test suite these User Preferencs */ "myCounter" : 100, /* PREF010 */ "size" : 2, /* PREF011 */ "myFloat" : 3.43, /* PREF020 */ "myString" : "This is my string.", /* PREF030 */ "myBool" : true, /* PREF040 */ "myTestArray" : ["zdnet", "pc", "Apple Insider"] /* PREF050 */ }