Example #1
0
		it('should fill param values for advanced setup with the given parameters', function() {
			builder = new ApiBuilder({
				parameters: {
					foo: {
						type: 'string',
						value: 'value',
						description: 'desc',
						required: true
					},
					bar: {
						type: 'boolean',
						validator: 'validator'
					}
				}
			}).render();

			var paramRows = builder.element.querySelectorAll('.builder-params .builder-param-item');
			var advancedElement = paramRows[0].querySelector('.builder-param-item-advanced');
			dom.triggerEvent(advancedElement.querySelector('button'), 'click');

			assert.strictEqual('value', paramRows[0].querySelector('input[data-name="value"]').value);
			var codeMirror = paramRows[0].querySelector('.CodeMirror').CodeMirror;
			assert.strictEqual('', codeMirror.getValue());

			advancedElement = paramRows[1].querySelector('.builder-param-item-advanced');
			dom.triggerEvent(advancedElement.querySelector('button'), 'click');

			assert.strictEqual('', paramRows[1].querySelector('input[data-name="value"]').value);
			codeMirror = paramRows[1].querySelector('.CodeMirror').CodeMirror;
			assert.strictEqual('validator', codeMirror.getValue());
		});
Example #2
0
  it.skip('should expand table contents when pressing enter or space on columns with nested tables', () => {
    datatable = new Datatable({
      data: [
        {
          arr: [1, 2, 3]
        }
      ]
    });
    var label = datatable.element.querySelector('.datatable-label');
    expect(dom.hasClass(label, 'collapsed')).toBeTruthy();
    expect(dom.hasClass(dom.next(label, 'table'), 'hidden')).toBeTruthy();


    const col = datatable.refs['table-1-0'];
    dom.triggerEvent(col, 'keydown', {
      keyCode: 13
    });
    expect(dom.hasClass(label, 'expanded')).toBeTruthy();
    expect(!dom.hasClass(dom.next(label, 'table'), 'hidden')).toBeTruthy();

    dom.triggerEvent(col, 'keydown', {
      keyCode: 32
    });
    expect(!dom.hasClass(label, 'expanded')).toBeTruthy();
    expect(dom.hasClass(dom.next(label, 'table'), 'hidden')).toBeTruthy();
    datatable.dispose();
  });
Example #3
0
		it('should keep rendering received real time responses', function(done) {
			explorer = new ApiExplorer({
				method: ['get', 'post']
			}).render();
			dom.triggerEvent(explorer.element.querySelector('.switcher'), 'click');
			dom.triggerEvent(explorer.element.querySelector('.explorer-section-try-button'), 'click');

			ioInstance.emit('changes', 'foo');

			explorer.once('attrsChanged', function() {
				var codeMirrorComp = explorer.components[explorer.id + '-responseCodeMirror'];
				codeMirrorComp.once('attrsChanged', function() {
					var codeMirror = explorer.element.querySelector('.explorer-code-container .CodeMirror').CodeMirror;
					assert.strictEqual('foo', codeMirror.getValue());
					assert.strictEqual('text/plain', codeMirror.getOption('mode'));

					ioInstance.emit('changes', 'bar');
					explorer.once('attrsChanged', function() {
						codeMirrorComp.once('attrsChanged', function() {
							codeMirror = explorer.element.querySelector('.explorer-code-container .CodeMirror').CodeMirror;
							assert.strictEqual('bar', codeMirror.getValue());
							assert.strictEqual('text/plain', codeMirror.getOption('mode'));
							done();
						});
					});
				});
			});
		});
Example #4
0
	it('should send request with default value if param chosen value is deleted', function() {
		explorer = new ApiExplorer({
			method: ['post'],
			parameters: [
				{
					name: 'name',
					value: 'foo'
				},
				{
					name: 'age'
				},
				{
					name: 'extra'
				}
			]
		}).render();

		var inputs = explorer.element.querySelectorAll('.explorer-section-try-param');

		inputs[0].value = 'bar';
		dom.triggerEvent(inputs[0], 'input');
		dom.triggerEvent(explorer.element.querySelector('.explorer-section-try-button'), 'click');
		assert.strictEqual('{"name":"bar"}', requests[0].requestBody);

		inputs[0].value = '';
		dom.triggerEvent(inputs[0], 'input');
		dom.triggerEvent(explorer.element.querySelector('.explorer-section-try-button'), 'click');
		assert.strictEqual('{"name":"foo"}', requests[1].requestBody);
	});
Example #5
0
		it('should render correct cURL snippet when body is set', function(done) {
			explorer = new ApiExplorer({
				host: 'foo.org',
				path: '/data',
				response: {
					statusText: 'OK'
				}
			}).render();

			dom.triggerEvent(explorer.element.querySelectorAll('.codeMirrorTabs-tab')[2], 'click');
			dom.triggerEvent(explorer.element.querySelector('.explorer-section-body-toggler'), 'click');
			var bodyCodeMirror = explorer.element.querySelector('.explorer-section-body .CodeMirror').CodeMirror;
			bodyCodeMirror.setValue('{"foo":"bar"}');

			explorer.response = {
				statusText: 'OK'
			};
			explorer.once('attrsChanged', function() {
				explorer.components[explorer.id + '-snippetsCodeMirror'].once('attrsChanged', function() {
					var codeMirror = explorer.element.querySelector('.explorer-section-snippets .CodeMirror').CodeMirror;
					assert.notStrictEqual(-1, codeMirror.getValue().indexOf('curl -X "GET" "foo.org/data"'));
					assert.notStrictEqual(-1, codeMirror.getValue().indexOf('-d "{\\"foo\\":\\"bar\\"}"'));
					done();
				});
			});
		});
Example #6
0
		it('should render correct Java snippet when body is set to an object', function(done) {
			explorer = new ApiExplorer({
				host: 'foo.org',
				path: '/data',
				response: {
					statusText: 'OK'
				}
			}).render();

			dom.triggerEvent(explorer.element.querySelectorAll('.codeMirrorTabs-tab')[1], 'click');
			dom.triggerEvent(explorer.element.querySelector('.explorer-section-body-toggler'), 'click');
			var bodyCodeMirror = explorer.element.querySelector('.explorer-section-body .CodeMirror').CodeMirror;
			bodyCodeMirror.setValue('{foo: \'bar\'}');

			explorer.response = {
				statusText: 'OK'
			};
			explorer.once('attrsChanged', function() {
				explorer.components[explorer.id + '-snippetsCodeMirror'].once('attrsChanged', function() {
					var codeMirror = explorer.element.querySelector('.explorer-section-snippets .CodeMirror').CodeMirror;
					var expectedStr = 'Launchpad.url("foo.org/data")\n' +
						'    .header("content-type", "application/json")\n' +
						'    .get("{\\"foo\\":\\"bar\\"}");';
					assert.strictEqual(expectedStr, codeMirror.getValue());
					done();
				});
			});
		});
Example #7
0
 expect(() => {
   dom.triggerEvent(component.inputElement, 'keydown', {keyCode: 40});
   dom.triggerEvent(component.inputElement, 'keydown', {keyCode: 38});
   dom.triggerEvent(component.inputElement, 'keydown', {keyCode: 13});
   dom.triggerEvent(component.inputElement, 'keydown', {keyCode: 32});
   done();
 }).not.toThrow();
Example #8
0
	it('should send request with chosen path params', function() {
		explorer = new ApiExplorer({
			host: 'foo.org',
			parameters: [
				{
					name: 'name',
					value: 'foo'
				},
				{
					name: 'age'
				},
				{
					name: 'extra'
				}
			],
			path: '/data/:name/:age'
		}).render();

		var inputs = explorer.element.querySelectorAll('.explorer-section-try-param');
		assert.strictEqual(3, inputs.length);

		inputs[1].value = 12;
		dom.triggerEvent(inputs[1], 'input');
		dom.triggerEvent(explorer.element.querySelector('.explorer-section-try-button'), 'click');
		assert.strictEqual('http://foo.org/data/foo/12', requests[0].url);
	});
Example #9
0
	it('should send request with chosen body params', function() {
		explorer = new ApiExplorer({
			method: ['post'],
			parameters: [
				{
					name: 'name',
					value: 'foo'
				},
				{
					name: 'age'
				},
				{
					name: 'extra'
				}
			]
		}).render();

		var inputs = explorer.element.querySelectorAll('.explorer-section-try-param');
		assert.strictEqual(3, inputs.length);

		inputs[1].value = 12;
		dom.triggerEvent(inputs[1], 'input');
		dom.triggerEvent(explorer.element.querySelector('.explorer-section-try-button'), 'click');
		assert.strictEqual('{"name":"foo","age":"12"}', requests[0].requestBody);
	});
Example #10
0
 expect(() => {
   dom.triggerEvent(col, 'keydown', {
     keyCode: 13
   });
   dom.triggerEvent(col, 'keydown', {
     keyCode: 32
   });
 }).not.toThrow();
Example #11
0
		it('should attach function listeners found in component\'s soy template', function() {
			comp = new FunctionsComponent();

			dom.triggerEvent(comp.element, 'click');
			assert.strictEqual(0, comp.handleClick.callCount);

			dom.triggerEvent(comp.element.querySelector('button'), 'click');
			assert.strictEqual(1, comp.handleClick.callCount);
		});
Example #12
0
    component.on('stateSynced', () => {
      expect(dom.hasClass(getListItem(0), 'active')).toBeTruthy();

      dom.triggerEvent(component.inputElement, 'keydown', {keyCode: 40});
      dom.triggerEvent(component.inputElement, 'keydown', {keyCode: 40});

      expect(dom.hasClass(getListItem(0), 'active')).toBeTruthy();
      expect(dom.hasClass(getListItems(1), 'active')).toBeFalsy();
      done();
    });
Example #13
0
		it('should not render real time response if button is clicked but selected method is not "get"', function() {
			explorer = new ApiExplorer({
				method: ['post', 'get']
			}).render();
			dom.triggerEvent(explorer.element.querySelector('.switcher'), 'click');
			dom.triggerEvent(explorer.element.querySelector('.explorer-section-try-button'), 'click');

			ioInstance.emit('changes', 'foo');
			assert.ok(!explorer.response.bodyString);
		});
Example #14
0
		setTimeout(function() {
			dom.triggerEvent(trigger, 'click');
			dom.triggerEvent(triggerOther, 'click');
			setTimeout(function() {
				assert.ok(tooltip.visible);
				assert.strictEqual(triggerOther, tooltip.currentAlignElement);
				dom.exitDocument(trigger);
				dom.exitDocument(triggerOther);
				done();
			}, 25);
		}, 25);
Example #15
0
		it('should not add nameless option to "body" when input event is triggered for CodeMirror\'s textarea', function() {
			builder = new ApiBuilder().render();

			var advancedElement = builder.element.querySelector('.builder-param-item-advanced');
			dom.triggerEvent(advancedElement.querySelector('button'), 'click');

			var textarea = builder.element.querySelector('.builder-param-item .CodeMirror textarea');
			textarea.value = 'validator';
			dom.triggerEvent(textarea, 'input');
			assert.ok(!builder.body[null]);
		});
Example #16
0
		it('should close the dropdown when ESC key is pressed', function() {
			select = new Select({
				items: ['First', 'Second', 'Third']
			});

			dom.triggerEvent(select.element.querySelector('button'), 'click');
			dom.triggerEvent(select.element, 'keydown', {
				keyCode: 27
			});
			assert.ok(!select.getDropdown().expanded);
		});
Example #17
0
	it('should update "method" when method button is clicked', function() {
		builder = new ApiBuilder().render();

		var buttons = builder.element.querySelectorAll('.btn-group button');
		dom.triggerEvent(buttons[4], 'click');
		var expectedMethod = ['get', 'delete'];
		assert.deepEqual(expectedMethod, builder.method);

		dom.triggerEvent(buttons[0], 'click');
		expectedMethod = ['delete'];
		assert.deepEqual(expectedMethod, builder.method);
	});
Example #18
0
	it('should send request with chosen wildcard value', function() {
		explorer = new ApiExplorer({
			host: 'foo.org',
			path: '/data/*'
		}).render();

		var input = explorer.element.querySelector('.explorer-section-try-param');
		input.value = 12;
		dom.triggerEvent(input, 'input');
		dom.triggerEvent(explorer.element.querySelector('.explorer-section-try-button'), 'click');
		assert.strictEqual('http://foo.org/data/12', requests[0].url);
	});
Example #19
0
		it('should not build a new CodeMirror if the textarea hasn\'t change when the advanced options are opened', function() {
			builder = new ApiBuilder().render();

			var advancedElement = builder.element.querySelector('.builder-param-item-advanced');
			dom.triggerEvent(advancedElement.querySelector('button'), 'click');
			var codeMirror = builder.element.querySelector('.builder-param-item .CodeMirror').CodeMirror;

			dom.triggerEvent(advancedElement.querySelector('button'), 'click');
			dom.triggerEvent(advancedElement.querySelector('button'), 'click');
			var newCodeMirror = builder.element.querySelector('.builder-param-item .CodeMirror').CodeMirror;
			assert.strictEqual(codeMirror, newCodeMirror);
		});
Example #20
0
			select.getDropdown().once('stateChanged', function() {
				dom.triggerEvent(select.element, 'keydown', {
					keyCode: 38
				});
				assert.strictEqual(document.activeElement, options[0]);

				dom.triggerEvent(select.element, 'keydown', {
					keyCode: 38
				});
				assert.strictEqual(document.activeElement, options[2]);
				done();
			});
Example #21
0
		it('should expand/collapse advanced setup when its button is clicked for body', function() {
			builder = new ApiBuilder().render();

			var advancedElement = builder.element.querySelector('.builder-param-item-advanced');
			assert.ok(!dom.hasClass(advancedElement, 'expanded'));

			dom.triggerEvent(advancedElement.querySelector('button'), 'click');
			assert.ok(dom.hasClass(advancedElement, 'expanded'));
			assert.strictEqual(builder.element.querySelector('.builder-param-item [data-name="description"]'), document.activeElement);

			dom.triggerEvent(advancedElement.querySelector('button'), 'click');
			assert.ok(!dom.hasClass(advancedElement, 'expanded'));
		});
Example #22
0
		it('should send request with chosen js code body', function() {
			explorer = new ApiExplorer({
				method: ['post']
			}).render();

			dom.triggerEvent(explorer.element.querySelector('.explorer-section-body-toggler'), 'click');
			var codeMirror = explorer.element.querySelector('.explorer-section-body .CodeMirror').CodeMirror;
			codeMirror.setValue('2 + 2');

			dom.triggerEvent(explorer.element.querySelector('.explorer-section-try-button'), 'click');
			assert.strictEqual(1, requests.length);
			assert.strictEqual(4, requests[0].requestBody);
			assert.strictEqual('text/plain', requests[0].requestHeaders['Content-Type'].substr(0, 10));
		});
Example #23
0
	it('should open/close dropdown when button is clicked', function() {
		select = new Select({
			items: ['First', 'Second', 'Third']
		});

		var dropdown = select.getDropdown();
		assert.ok(!dropdown.expanded);

		dom.triggerEvent(select.element.querySelector('button'), 'click');
		assert.ok(dropdown.expanded);

		dom.triggerEvent(select.element.querySelector('button'), 'click');
		assert.ok(!dropdown.expanded);
	});
Example #24
0
		setTimeout(function() {
			assert.ok(tooltip.visible);
			dom.triggerEvent(trigger, 'mouseout');
			dom.triggerEvent(tooltip.element, 'mouseenter');
			setTimeout(function() {
				assert.ok(tooltip.visible);
				dom.triggerEvent(tooltip.element, 'mouseleave');
				setTimeout(function() {
					assert.ok(!tooltip.visible);
					dom.exitDocument(trigger);
					done();
				}, 25);
			}, 25);
		}, 25);
Example #25
0
		it('should not update "body" twice if input event is triggered but value doesn\'t change', function() {
			builder = new ApiBuilder().render();

			var listener = sinon.stub();
			builder.on('bodyChanged', listener);

			var element = builder.element.querySelector('.builder-param-item [data-name="description"]');
			element.value = 'bar';
			dom.triggerEvent(element, 'input');
			assert.strictEqual(1, listener.callCount);

			dom.triggerEvent(element, 'input');
			assert.strictEqual(1, listener.callCount);
		});
Example #26
0
		it('should render correct snippet for sending request via Java', function(done) {
			explorer = new ApiExplorer({
				host: 'foo.org',
				parameters: [
					{
						name: 'foo',
						value: 12
					},
					{
						name: 'bar',
						value: 1
					}
				],
				path: '/data/:foo',
				response: {
					statusText: 'OK'
				}
			}).render();

			dom.triggerEvent(explorer.element.querySelectorAll('.codeMirrorTabs-tab')[1], 'click');

			explorer.components[explorer.id + '-snippetsCodeMirror'].once('attrsChanged', function() {
				var codeMirror = explorer.element.querySelector('.explorer-section-snippets .CodeMirror').CodeMirror;
				var expectedStr = 'Launchpad.url("foo.org/data/12")\n' +
					'    .header("content-type", "application/json")\n' +
					'    .get("{\\"bar\\":1}");';
				assert.strictEqual(expectedStr, codeMirror.getValue());
				done();
			});
		});
Example #27
0
		it('should render correct snippet for sending request via cURL', function(done) {
			explorer = new ApiExplorer({
				host: 'foo.org',
				parameters: [
					{
						name: 'foo',
						value: 12
					},
					{
						name: 'bar',
						value: 1
					}
				],
				path: '/data/:foo',
				response: {
					statusText: 'OK'
				}
			}).render();

			dom.triggerEvent(explorer.element.querySelectorAll('.codeMirrorTabs-tab')[2], 'click');

			explorer.components[explorer.id + '-snippetsCodeMirror'].once('attrsChanged', function() {
				var codeMirror = explorer.element.querySelector('.explorer-section-snippets .CodeMirror').CodeMirror;
				assert.notStrictEqual(-1, codeMirror.getValue().indexOf('curl -X "GET" "foo.org/data/12"'));
				assert.notStrictEqual(-1, codeMirror.getValue().indexOf('-d "{\\"bar\\":1}"'));
				done();
			});
		});
Example #28
0
		it('should render correct snippet when non json body is set', function(done) {
			explorer = new ApiExplorer({
				host: 'foo.org',
				path: '/data',
				response: {
					statusText: 'OK'
				}
			}).render();

			dom.triggerEvent(explorer.element.querySelector('.explorer-section-body-toggler'), 'click');
			var bodyCodeMirror = explorer.element.querySelector('.explorer-section-body .CodeMirror').CodeMirror;
			bodyCodeMirror.setValue('10');

			explorer.response = {
				statusText: 'OK'
			};
			explorer.once('attrsChanged', function() {
				explorer.components[explorer.id + '-snippetsCodeMirror'].once('attrsChanged', function() {
					var codeMirror = explorer.element.querySelector('.explorer-section-snippets .CodeMirror').CodeMirror;
					var expectedStr = 'Launchpad.url(\'foo.org/data\')\n    .get(10);';
					assert.strictEqual(expectedStr, codeMirror.getValue());
					done();
				});
			});
		});
Example #29
0
		it('should render correct snippet when path param changes', function(done) {
			explorer = new ApiExplorer({
				host: 'foo.org',
				path: '/data/:foo',
				response: {
					statusText: 'OK'
				}
			}).render();

			var inputs = explorer.element.querySelectorAll('.explorer-section-try-param');
			inputs[0].value = 12;
			dom.triggerEvent(inputs[0], 'input');

			explorer.once('attrsChanged', function() {
				explorer.response = {
					statusText: 'OK'
				};
				explorer.components[explorer.id + '-snippetsCodeMirror'].once('attrsChanged', function() {
					var codeMirror = explorer.element.querySelector('.explorer-section-snippets .CodeMirror').CodeMirror;
					var expectedStr = 'Launchpad.url(\'foo.org/data/12\')\n    .get();';
					assert.strictEqual(expectedStr, codeMirror.getValue());
					done();
				});
			});
		});
Example #30
0
	it('should send request with chosen path params after method is changed', function(done) {
		explorer = new ApiExplorer({
			host: 'foo.org',
			method: ['post', 'put'],
			parameters: [
				{
					name: 'name'
				}
			],
			path: '/data/:name'
		}).render();

		var methodSelect = explorer.components[explorer.element.id + '-methodSelect'];
		methodSelect.selectedIndex = 1;

		var input = explorer.element.querySelector('.explorer-section-try-param');
		input.value = 'foo';
		dom.triggerEvent(input, 'input');

		explorer.once('attrsChanged', function() {
			dom.triggerEvent(explorer.element.querySelector('.explorer-section-try-button'), 'click');
			assert.strictEqual('http://foo.org/data/foo', requests[0].url);
			assert.strictEqual('PUT', requests[0].method);
			done();
		});
	});