services/sync/tests/unit/test_tab_store.js

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:27dd9a7b7251
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 Cu.import("resource://services-sync/engines/tabs.js");
5 Cu.import("resource://services-sync/service.js");
6 Cu.import("resource://services-sync/util.js");
7 Cu.import("resource://testing-common/services-common/utils.js");
8
9 function getMockStore() {
10 let engine = new TabEngine(Service);
11 let store = engine._store;
12 store.getTabState = mockGetTabState;
13 store.shouldSkipWindow = mockShouldSkipWindow;
14 return store;
15 }
16
17 function test_create() {
18 let store = new TabEngine(Service)._store;
19
20 _("Create a first record");
21 let rec = {id: "id1",
22 clientName: "clientName1",
23 cleartext: "cleartext1",
24 modified: 1000};
25 store.applyIncoming(rec);
26 do_check_eq(store._remoteClients["id1"], "cleartext1");
27 do_check_eq(Svc.Prefs.get("notifyTabState"), 1);
28
29 _("Create a second record");
30 let rec = {id: "id2",
31 clientName: "clientName2",
32 cleartext: "cleartext2",
33 modified: 2000};
34 store.applyIncoming(rec);
35 do_check_eq(store._remoteClients["id2"], "cleartext2");
36 do_check_eq(Svc.Prefs.get("notifyTabState"), 0);
37
38 _("Create a third record");
39 let rec = {id: "id3",
40 clientName: "clientName3",
41 cleartext: "cleartext3",
42 modified: 3000};
43 store.applyIncoming(rec);
44 do_check_eq(store._remoteClients["id3"], "cleartext3");
45 do_check_eq(Svc.Prefs.get("notifyTabState"), 0);
46
47 // reset the notifyTabState
48 Svc.Prefs.reset("notifyTabState");
49 }
50
51 function test_getAllTabs() {
52 let store = getMockStore();
53 let tabs;
54
55 store.getWindowEnumerator = mockGetWindowEnumerator.bind(this, "http://foo.com", 1, 1);
56
57 _("Get all tabs.");
58 tabs = store.getAllTabs();
59 _("Tabs: " + JSON.stringify(tabs));
60 do_check_eq(tabs.length, 1);
61 do_check_eq(tabs[0].title, "title");
62 do_check_eq(tabs[0].urlHistory.length, 1);
63 do_check_eq(tabs[0].urlHistory[0], ["http://foo.com"]);
64 do_check_eq(tabs[0].icon, "image");
65 do_check_eq(tabs[0].lastUsed, 1);
66
67 _("Get all tabs, and check that filtering works.");
68 store.getWindowEnumerator = mockGetWindowEnumerator.bind(this, "about:foo", 1, 1);
69 tabs = store.getAllTabs(true);
70 _("Filtered: " + JSON.stringify(tabs));
71 do_check_eq(tabs.length, 0);
72 }
73
74 function test_createRecord() {
75 let store = getMockStore();
76 let record;
77
78 store.getTabState = mockGetTabState;
79 store.shouldSkipWindow = mockShouldSkipWindow;
80 store.getWindowEnumerator = mockGetWindowEnumerator.bind(this, "http://foo.com", 1, 1);
81
82 let tabs = store.getAllTabs();
83 let tabsize = JSON.stringify(tabs[0]).length;
84 let numtabs = Math.ceil(20000./77.);
85
86 store.getWindowEnumerator = mockGetWindowEnumerator.bind(this, "http://foo.com", 1, 1);
87 record = store.createRecord("fake-guid");
88 do_check_true(record instanceof TabSetRecord);
89 do_check_eq(record.tabs.length, 1);
90
91 _("create a big record");
92 store.getWindowEnumerator = mockGetWindowEnumerator.bind(this, "http://foo.com", 1, numtabs);
93 record = store.createRecord("fake-guid");
94 do_check_true(record instanceof TabSetRecord);
95 do_check_eq(record.tabs.length, 256);
96 }
97
98 function run_test() {
99 test_create();
100 test_getAllTabs();
101 test_createRecord();
102 }

mercurial