Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/webapp/js_tests/spec/DynamicStructureSpec.js
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/js_tests/spec/DynamicStructureSpec.js')
-rw-r--r--webapp/js_tests/spec/DynamicStructureSpec.js204
1 files changed, 204 insertions, 0 deletions
diff --git a/webapp/js_tests/spec/DynamicStructureSpec.js b/webapp/js_tests/spec/DynamicStructureSpec.js
new file mode 100644
index 0000000..ed09af0
--- /dev/null
+++ b/webapp/js_tests/spec/DynamicStructureSpec.js
@@ -0,0 +1,204 @@
+describe("", function() {
+
+ jasmine.getFixtures().fixturesPath = "fixtures/";
+
+ it("Correct container", function() {
+ loadFixtures("container.html");
+
+ var container = $('#WGroupContainer');
+
+ expect(container).toExist();
+ expect(container).toBeEmpty();
+ });
+
+ describe("Groups", function() {
+
+ beforeEach(function() {
+
+ jasmine.getFixtures().fixturesPath = "fixtures/";
+ loadFixtures("container.html");
+
+ var group_mustache_template = $.ajax({
+ type: "GET",
+ url: '/jasmine/mustache_templates/group.html',
+ cache: false,
+ async: false
+ }).responseText;
+ $("#jasmine-fixtures").append(group_mustache_template);
+
+ var group_mustache_template = $.ajax({
+ type: "GET",
+ url: '/jasmine/mustache_templates/field.html',
+ cache: false,
+ async: false
+ }).responseText;
+ $("#jasmine-fixtures").append(group_mustache_template);
+
+ var group_mustache_template = $.ajax({
+ type: "GET",
+ url: '/jasmine/mustache_templates/option_default.html',
+ cache: false,
+ async: false
+ }).responseText;
+ $("#jasmine-fixtures").append(group_mustache_template);
+
+ Mustache.tags = ['[[', ']]'];
+
+ // Preparing mustache TEMPLATES
+ $('script[type="text/x-mustache-template"]').each(function(i, obj){
+ TEMPLATES[$(obj).attr('name')] = $(obj).text();
+ });
+
+ });
+
+ it("- Group template must contains right classes", function() {
+ var group_template = $(TEMPLATES['group']);
+
+ var group_remove_button = group_template.find('.WGroup_remove');
+ expect(group_remove_button).toExist();
+ expect(group_remove_button).toBe(':button');
+
+ var group_add_button = group_template.find('.WGroup_add_field');
+ expect(group_add_button).toExist();
+ expect(group_add_button).toBe(':button');
+
+ expect(group_template.find('.error')).toExist();
+
+ expect(group_template.find('.WGroup_field_containter')).toExist();
+ });
+
+ it("- factoryGroup must add a empty group in WGroupContainer", function() {
+ var groups = $('#WGroupContainer > .group');
+
+ expect(groups.length).toBe(0);
+
+ factoryGroup(0, {"name": '', "fields": []});
+
+ groups = $('#WGroupContainer > .group');
+
+ expect(groups.length).toBe(1);
+ });
+
+ it("- Render group widget: A new group must contain right names for inputs", function() {
+ factoryGroup(0, {"name": '', "fields": []});
+
+ var inputs = $('.group').find(':input:not(button)');
+
+ $.each(inputs, function(i, input) {
+ expect($(input).attr('name')).toContain("groups.0.");
+ });
+
+ });
+
+ it("- Render group widget: show name", function() {
+ factoryGroup(0, {"name": 'group name', "fields": []});
+
+ var input_name = $(':input[name="groups.0.name"]');
+
+ expect(input_name.attr('value')).toBe('group name');
+ });
+
+ it("- Render group widget: show error", function() {
+ factoryGroup(0, {"name": '', "fields": [], 'errors': ['error#1']});
+
+ var error = $('.error li');
+
+ expect(error).toHaveText('error#1');
+ });
+
+ it("- Render fields", function() {
+ factoryGroup(0,
+ {"name": '', "fields": [{'widget_type': "InputText"}]}
+ );
+
+ fields = $('.field');
+
+ expect(fields.length).toBe(1);
+
+ });
+
+ it("- bindGroupRemoveButton: Remove group and Update order of groups, very important!", function() {
+ var groups;
+
+ factoryGroup(0, {"name": 'group name', "fields": []});
+
+ var group_widget_0 = $(".group");
+ var button_remove_group_widget_0 = group_widget_0.find('.WGroup_remove');
+
+ factoryGroup(1, {"name": 'group name', "fields": []});
+
+ groups = $('#WGroupContainer > .group');
+
+ expect(groups.length).toBe(2);
+
+ button_remove_group_widget_0.click();
+
+ groups = $('#WGroupContainer > .group');
+
+ expect(groups.length).toBe(1);
+
+ expect($('.group').has($(':input[name="groups.0.order"]'))).toExist();
+
+ });
+
+ it("- Adding a empty field with right group order", function(){
+ var group_order = 0;
+ factoryGroup(group_order, {'name': ''});
+ var add_field_button = $('.group').find('.WGroup_add_field');
+
+ add_field_button.click();
+
+ var fields = $('.field');
+ expect(fields.length).toBe(1);
+
+ var inputs = $(fields[0]).find(':input:not(button)');
+ $.each(inputs, function(i, input) {
+ expect($(input).attr('name')).toContain("groups.0.fields.");
+ });
+ });
+
+ });
+
+ describe("Fields", function() {
+
+ beforeEach(function() {
+
+ jasmine.getFixtures().fixturesPath = "fixtures/";
+ loadFixtures("container.html");
+
+ var group_mustache_template = $.ajax({
+ type: "GET",
+ url: '/jasmine/mustache_templates/field.html',
+ cache: false,
+ async: false
+ }).responseText;
+ $("#jasmine-fixtures").append(group_mustache_template);
+
+ Mustache.tags = ['[[', ']]'];
+
+ // Preparing mustache TEMPLATES
+ $('script[type="text/x-mustache-template"]').each(function(i, obj){
+ TEMPLATES[$(obj).attr('name')] = $(obj).text();
+ });
+
+ });
+
+ it("- Field template must contains right classes", function() {
+ var field_template = $(TEMPLATES['field']);
+
+ var field_remove_button = field_template.find('.WField_remove');
+ expect(field_remove_button).toExist();
+ expect(field_remove_button).toBe(':button');
+
+ expect(field_template.find('.error')).toExist();
+
+ expect(field_template.find('.WFieldWidgetType')).toExist();
+
+ expect(field_template.find('.WFieldAddOptionButton_container')).toExist();
+
+ expect(field_template.find('.WFieldOptions_container')).toExist();
+ });
+
+ });
+
+}); \ No newline at end of file