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 +}