services/sync/tests/unit/test_tab_store.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/services/sync/tests/unit/test_tab_store.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,102 @@
     1.4 +/* Any copyright is dedicated to the Public Domain.
     1.5 +   http://creativecommons.org/publicdomain/zero/1.0/ */
     1.6 +
     1.7 +Cu.import("resource://services-sync/engines/tabs.js");
     1.8 +Cu.import("resource://services-sync/service.js");
     1.9 +Cu.import("resource://services-sync/util.js");
    1.10 +Cu.import("resource://testing-common/services-common/utils.js");
    1.11 +
    1.12 +function getMockStore() {
    1.13 +  let engine = new TabEngine(Service);
    1.14 +  let store = engine._store;
    1.15 +  store.getTabState = mockGetTabState;
    1.16 +  store.shouldSkipWindow = mockShouldSkipWindow;
    1.17 +  return store;
    1.18 +}
    1.19 +
    1.20 +function test_create() {
    1.21 +  let store = new TabEngine(Service)._store;
    1.22 +
    1.23 +  _("Create a first record");
    1.24 +  let rec = {id: "id1",
    1.25 +             clientName: "clientName1",
    1.26 +             cleartext: "cleartext1",
    1.27 +             modified: 1000};
    1.28 +  store.applyIncoming(rec);
    1.29 +  do_check_eq(store._remoteClients["id1"], "cleartext1");
    1.30 +  do_check_eq(Svc.Prefs.get("notifyTabState"), 1);
    1.31 +
    1.32 +  _("Create a second record");
    1.33 +  let rec = {id: "id2",
    1.34 +             clientName: "clientName2",
    1.35 +             cleartext: "cleartext2",
    1.36 +             modified: 2000};
    1.37 +  store.applyIncoming(rec);
    1.38 +  do_check_eq(store._remoteClients["id2"], "cleartext2");
    1.39 +  do_check_eq(Svc.Prefs.get("notifyTabState"), 0);
    1.40 +
    1.41 +  _("Create a third record");
    1.42 +  let rec = {id: "id3",
    1.43 +             clientName: "clientName3",
    1.44 +             cleartext: "cleartext3",
    1.45 +             modified: 3000};
    1.46 +  store.applyIncoming(rec);
    1.47 +  do_check_eq(store._remoteClients["id3"], "cleartext3");
    1.48 +  do_check_eq(Svc.Prefs.get("notifyTabState"), 0);
    1.49 +
    1.50 +  // reset the notifyTabState
    1.51 +  Svc.Prefs.reset("notifyTabState");
    1.52 +}
    1.53 +
    1.54 +function test_getAllTabs() {
    1.55 +  let store = getMockStore();
    1.56 +  let tabs;
    1.57 +
    1.58 +  store.getWindowEnumerator = mockGetWindowEnumerator.bind(this, "http://foo.com", 1, 1);
    1.59 +
    1.60 +  _("Get all tabs.");
    1.61 +  tabs = store.getAllTabs();
    1.62 +  _("Tabs: " + JSON.stringify(tabs));
    1.63 +  do_check_eq(tabs.length, 1);
    1.64 +  do_check_eq(tabs[0].title, "title");
    1.65 +  do_check_eq(tabs[0].urlHistory.length, 1);
    1.66 +  do_check_eq(tabs[0].urlHistory[0], ["http://foo.com"]);
    1.67 +  do_check_eq(tabs[0].icon, "image");
    1.68 +  do_check_eq(tabs[0].lastUsed, 1);
    1.69 +
    1.70 +  _("Get all tabs, and check that filtering works.");
    1.71 +  store.getWindowEnumerator = mockGetWindowEnumerator.bind(this, "about:foo", 1, 1);
    1.72 +  tabs = store.getAllTabs(true);
    1.73 +  _("Filtered: " + JSON.stringify(tabs));
    1.74 +  do_check_eq(tabs.length, 0);
    1.75 +}
    1.76 +
    1.77 +function test_createRecord() {
    1.78 +  let store = getMockStore();
    1.79 +  let record;
    1.80 +
    1.81 +  store.getTabState = mockGetTabState;
    1.82 +  store.shouldSkipWindow = mockShouldSkipWindow;
    1.83 +  store.getWindowEnumerator = mockGetWindowEnumerator.bind(this, "http://foo.com", 1, 1);
    1.84 +
    1.85 +  let tabs = store.getAllTabs();
    1.86 +  let tabsize = JSON.stringify(tabs[0]).length;
    1.87 +  let numtabs = Math.ceil(20000./77.);
    1.88 +
    1.89 +  store.getWindowEnumerator = mockGetWindowEnumerator.bind(this, "http://foo.com", 1, 1);
    1.90 +  record = store.createRecord("fake-guid");
    1.91 +  do_check_true(record instanceof TabSetRecord);
    1.92 +  do_check_eq(record.tabs.length, 1);
    1.93 +
    1.94 +  _("create a big record");
    1.95 +  store.getWindowEnumerator = mockGetWindowEnumerator.bind(this, "http://foo.com", 1, numtabs);
    1.96 +  record = store.createRecord("fake-guid");
    1.97 +  do_check_true(record instanceof TabSetRecord);
    1.98 +  do_check_eq(record.tabs.length, 256);
    1.99 +}
   1.100 +
   1.101 +function run_test() {
   1.102 +  test_create();
   1.103 +  test_getAllTabs();
   1.104 +  test_createRecord();
   1.105 +}

mercurial