aboutsummaryrefslogtreecommitdiff
path: root/src/js/tests/specs/settings.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/js/tests/specs/settings.js')
-rw-r--r--src/js/tests/specs/settings.js87
1 files changed, 87 insertions, 0 deletions
diff --git a/src/js/tests/specs/settings.js b/src/js/tests/specs/settings.js
new file mode 100644
index 0000000..a89b532
--- /dev/null
+++ b/src/js/tests/specs/settings.js
@@ -0,0 +1,87 @@
+
+describe('fiveui.Settings', function() {
+
+ var settings;
+
+ beforeEach(function() {
+ settings = new fiveui.Settings(new MockStorage());
+ });
+
+
+ it('doesn\'t hold on to removed keys', function() {
+ var key = 'key';
+ var value = 'value';
+ var id = settings.set(key, value);
+ settings.remove(key);
+
+ var result = settings.get(id);
+ expect(result).toBe(null);
+ });
+
+
+ it('round trips values through set/get', function() {
+ var key = 'key';
+ var value = 'value';
+
+ settings.set(key, value);
+ expect(settings.get(key)).toEqual(value);
+ });
+
+ it('round trips rules through addUrl', function() {
+ // somewhat random rule id
+ var ruleId = Math.floor(Math.random() * 101);
+ var urlPat = 'http://.*';
+ var urlId = settings.addUrl(urlPat, ruleId);
+ var result = settings.getUrlPat(urlId);
+
+ expect(result.regex).toBe(urlPat);
+ expect(result.rule_id).toBe(ruleId);
+ });
+
+ it('matches urls when there\s a valid pattern registered', function() {
+ var newId = 42;
+ settings.addUrl('http://.*', newId);
+ expect(settings.checkUrl('http://foo').rule_id).toBe(newId);
+ });
+
+ it('doesn\'t match urls when there are no patterns registered', function() {
+ expect(settings.checkUrl('http://foo')).toBe(null);
+ });
+
+ it('removes rules successfully', function() {
+ var obj = {
+ id: 17,
+ name: 'rs',
+ description: '',
+ rules: []
+ };
+
+ var rs = settings.addRuleSet(obj);
+ expect(rs).not.toBe(null);
+
+ var rsCount1 = settings.getRuleSets().length;
+ settings.remRuleSet(rs.id);
+ var rsCount2 = settings.getRuleSets().length;
+ expect(rsCount1).toEqual(rsCount2 + 1);
+
+ rs = settings.getRuleSet(rs.id);
+ expect(rs).toBe(null);
+ });
+
+ it('is unable to remove rules that are in use', function() {
+ var obj = {
+ id: 17,
+ name: 'rs',
+ description: '',
+ rules: []
+ };
+
+ var rs = settings.addRuleSet(obj);
+ expect(rs).not.toBe(null);
+
+ var urlPatId = settings.addUrl('*', rs.id);
+ rs = settings.getRuleSet(rs.id);
+ expect(rs).not.toBe(null);
+ });
+
+});