From fcbf5cc411de2f6195f53fe70c54458386fc588a Mon Sep 17 00:00:00 2001 From: Petr Vobornik Date: Mon, 8 Apr 2013 16:49:56 +0200 Subject: Spec modification by diff object https://fedorahosted.org/freeipa/ticket/3235 --- install/ui/test/all_tests.html | 6 +- install/ui/test/build_tests.html | 22 ++++++++ install/ui/test/build_tests.js | 119 +++++++++++++++++++++++++++++++++++++++ install/ui/test/index.html | 1 + install/ui/test/jsl.conf | 3 +- 5 files changed, 148 insertions(+), 3 deletions(-) create mode 100644 install/ui/test/build_tests.html create mode 100644 install/ui/test/build_tests.js (limited to 'install/ui/test') diff --git a/install/ui/test/all_tests.html b/install/ui/test/all_tests.html index 0acd8b76..dc4e6c83 100644 --- a/install/ui/test/all_tests.html +++ b/install/ui/test/all_tests.html @@ -23,8 +23,9 @@ 'test/aci_tests', 'test/widget_tests', 'test/ip_tests', - 'test/utils_tests' - ], function(om, ipa, details, entity, as, nav, cert, aci, wid, ip, ut){ + 'test/utils_tests', + 'test/build_tests' + ], function(om, ipa, details, entity, as, nav, cert, aci, wid, ip, ut, bt){ om(); ipa(); details(); @@ -36,6 +37,7 @@ wid(); ip(); ut(); + bt(); }); diff --git a/install/ui/test/build_tests.html b/install/ui/test/build_tests.html new file mode 100644 index 00000000..7b61a9ce --- /dev/null +++ b/install/ui/test/build_tests.html @@ -0,0 +1,22 @@ + + + + IPA utils test suite + + + + + + + + +

IPA Build test suite

+

+
+

+
    +
    + + \ No newline at end of file diff --git a/install/ui/test/build_tests.js b/install/ui/test/build_tests.js new file mode 100644 index 00000000..11c5a03e --- /dev/null +++ b/install/ui/test/build_tests.js @@ -0,0 +1,119 @@ +/* Authors: + * Petr Vobornik + * + * Copyright (C) 2013 Red Hat + * see file 'COPYING' for use and warranty information + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +define([ + 'freeipa/_base/Spec_mod'], + function(Spec_mod) { return function() { + + +module('build',{ + + setup: function() { + }, + teardown: function() { + } +}); + +test('Testing builder', function() { +}); + +test('Testing Spec_mod', function() { + + var sm = new Spec_mod(); + + var spec = { + foo: { + arr1: [ + { name: 'i1', a: 'b' }, + { name: 'i2', a: 'b' }, + { name: 'i3', a: 'c' }, + { name: 'i4', a: 'c' }, + { name: 'i5', a: 'a' } + ], + arr2: ['item1'] + }, + baz: { + bar: 'a' + }, + bar: 'b' + }; + + var diff = { + $add: [ + ['foo.arr1', { name: 'foo', a: 'c' }], + ['foo.arr2', 'item2'], + ['foo.arr2', { name: 'foo' }], + ['arr3', 'a'] //creates new array + ], + $del: [ + [ + 'foo.arr1', + [ + { name: 'i1' }, //match + { a: 'c'}, // 2 matches + { name: 'i2', a:'c' }, //no match + { name: 'i5', a:'a' } // match + ] + ], + [ 'foo.arr2', ['item1'] ] //match + ], + $set: [ + [ 'arr4', ['b'] ], // new array in spec + [ 'baz.bar', 'c'], //overwrite 'a' + [ 'baz.baz.baz', 'a'], // new property + [ 'bar', { foo: 'baz' }] // replace string by object + ] + }; + + var ref = { + foo: { + arr1: [ + { name: 'i2', a: 'b' }, + { name: 'foo', a: 'c'} + ], + arr2: [ + 'item2', { name: 'foo' } + ] + }, + arr3: [ 'a' ], + baz: { + bar: 'c', + baz: { baz: 'a' } + }, + bar: { foo: 'baz' }, + arr4: ['b'] + }; + + sm.mod(spec, diff); + + deepEqual(spec, ref, 'Complex Modification'); + + spec = { + a: [ 'a1', 'a2', 'a3' ] + }; + var rules = [[ 'a', 'new', 1]]; + sm.add(spec, rules); + + deepEqual(spec, { a: ['a1', 'new', 'a2', 'a3'] }, 'Add on position'); +}); + + + +};}); \ No newline at end of file diff --git a/install/ui/test/index.html b/install/ui/test/index.html index 0a135188..948f9a44 100644 --- a/install/ui/test/index.html +++ b/install/ui/test/index.html @@ -35,6 +35,7 @@
  1. Widget Test Suite
  2. IP Addresses Test Suite
  3. Utils Test Suite +
  4. Build Test Suite diff --git a/install/ui/test/jsl.conf b/install/ui/test/jsl.conf index 94ac10c5..ba5bb207 100644 --- a/install/ui/test/jsl.conf +++ b/install/ui/test/jsl.conf @@ -148,4 +148,5 @@ +process ordered_map_tests.js +process widget_tests.js +process ip_tests.js -+process utils_tests.js \ No newline at end of file ++process utils_tests.js ++process build_tests.js \ No newline at end of file -- cgit