test_rail_integration 0.0.5.3 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/doc/Gemfile.html +93 -0
  3. data/doc/Gemfile_lock.html +109 -0
  4. data/doc/LICENSE_txt.html +109 -0
  5. data/doc/README_md.html +150 -0
  6. data/doc/Rakefile.html +91 -0
  7. data/doc/TestRail/APIClient.html +295 -0
  8. data/doc/TestRail/APIError.html +102 -0
  9. data/doc/TestRail/Connection.html +490 -0
  10. data/doc/TestRail/Generators.html +95 -0
  11. data/doc/TestRail/Hook.html +274 -0
  12. data/doc/TestRail/TestCaseResult.html +265 -0
  13. data/doc/TestRail/TestRailDataLoad.html +153 -0
  14. data/doc/TestRail/TestRailTools.html +242 -0
  15. data/doc/TestRail/TestRunParameters.html +194 -0
  16. data/doc/TestRail.html +95 -0
  17. data/doc/TestRailIntegration/CLI.html +154 -0
  18. data/doc/TestRailIntegration/TestTail/Generators/Project.html +241 -0
  19. data/doc/TestRailIntegration/TestTail/Generators.html +95 -0
  20. data/doc/TestRailIntegration/TestTail.html +95 -0
  21. data/doc/TestRailIntegration.html +109 -0
  22. data/doc/bin/test_rail_integration.html +54 -0
  23. data/doc/created.rid +22 -0
  24. data/doc/css/fonts.css +167 -0
  25. data/doc/css/rdoc.css +590 -0
  26. data/doc/fonts/Lato-Light.ttf +0 -0
  27. data/doc/fonts/Lato-LightItalic.ttf +0 -0
  28. data/doc/fonts/Lato-Regular.ttf +0 -0
  29. data/doc/fonts/Lato-RegularItalic.ttf +0 -0
  30. data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
  31. data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
  32. data/doc/images/add.png +0 -0
  33. data/doc/images/arrow_up.png +0 -0
  34. data/doc/images/brick.png +0 -0
  35. data/doc/images/brick_link.png +0 -0
  36. data/doc/images/bug.png +0 -0
  37. data/doc/images/bullet_black.png +0 -0
  38. data/doc/images/bullet_toggle_minus.png +0 -0
  39. data/doc/images/bullet_toggle_plus.png +0 -0
  40. data/doc/images/date.png +0 -0
  41. data/doc/images/delete.png +0 -0
  42. data/doc/images/find.png +0 -0
  43. data/doc/images/loadingAnimation.gif +0 -0
  44. data/doc/images/macFFBgHack.png +0 -0
  45. data/doc/images/package.png +0 -0
  46. data/doc/images/page_green.png +0 -0
  47. data/doc/images/page_white_text.png +0 -0
  48. data/doc/images/page_white_width.png +0 -0
  49. data/doc/images/plugin.png +0 -0
  50. data/doc/images/ruby.png +0 -0
  51. data/doc/images/tag_blue.png +0 -0
  52. data/doc/images/tag_green.png +0 -0
  53. data/doc/images/transparent.png +0 -0
  54. data/doc/images/wrench.png +0 -0
  55. data/doc/images/wrench_orange.png +0 -0
  56. data/doc/images/zoom.png +0 -0
  57. data/doc/index.html +125 -0
  58. data/doc/js/darkfish.js +161 -0
  59. data/doc/js/jquery.js +4 -0
  60. data/doc/js/navigation.js +142 -0
  61. data/doc/js/navigation.js.gz +0 -0
  62. data/doc/js/quicksearch.js +114 -0
  63. data/doc/js/search.js +109 -0
  64. data/doc/js/search_index.js +1 -0
  65. data/doc/js/search_index.js.gz +0 -0
  66. data/doc/js/searcher.js +228 -0
  67. data/doc/js/searcher.js.gz +0 -0
  68. data/doc/js/thickbox-compressed.js +10 -0
  69. data/doc/lib/test_rail_integration/cli_rb.html +54 -0
  70. data/doc/lib/test_rail_integration/generator/API_client_rb.html +70 -0
  71. data/doc/lib/test_rail_integration/generator/connection_rb.html +52 -0
  72. data/doc/lib/test_rail_integration/generator/project/run_test_run_rb.html +54 -0
  73. data/doc/lib/test_rail_integration/generator/project_rb.html +56 -0
  74. data/doc/lib/test_rail_integration/generator/test_case_result_rb.html +52 -0
  75. data/doc/lib/test_rail_integration/generator/test_rail_hooks_rb.html +52 -0
  76. data/doc/lib/test_rail_integration/generator/test_rail_tools_rb.html +54 -0
  77. data/doc/lib/test_rail_integration/generator/test_run_parameters_rb.html +52 -0
  78. data/doc/lib/test_rail_integration/version_rb.html +52 -0
  79. data/doc/lib/test_rail_integration_rb.html +56 -0
  80. data/doc/rdoc.css +763 -0
  81. data/doc/table_of_contents.html +252 -0
  82. data/doc/test_rail_integration_gemspec.html +117 -0
  83. data/lib/test_rail_integration/generator/project/test_rail_data.yml +2 -2
  84. data/lib/test_rail_integration/generator/test_case_result.rb +1 -1
  85. data/lib/test_rail_integration/version.rb +1 -1
  86. metadata +83 -2
@@ -0,0 +1,142 @@
1
+ /*
2
+ * Navigation allows movement using the arrow keys through the search results.
3
+ *
4
+ * When using this library you will need to set scrollIntoView to the
5
+ * appropriate function for your layout. Use scrollInWindow if the container
6
+ * is not scrollable and scrollInElement if the container is a separate
7
+ * scrolling region.
8
+ */
9
+ Navigation = new function() {
10
+ this.initNavigation = function() {
11
+ var _this = this;
12
+
13
+ $(document).keydown(function(e) {
14
+ _this.onkeydown(e);
15
+ }).keyup(function(e) {
16
+ _this.onkeyup(e);
17
+ });
18
+
19
+ this.navigationActive = true;
20
+ }
21
+
22
+ this.setNavigationActive = function(state) {
23
+ this.navigationActive = state;
24
+ this.clearMoveTimeout();
25
+ }
26
+
27
+ this.onkeyup = function(e) {
28
+ if (!this.navigationActive) return;
29
+
30
+ switch(e.keyCode) {
31
+ case 37: //Event.KEY_LEFT:
32
+ case 38: //Event.KEY_UP:
33
+ case 39: //Event.KEY_RIGHT:
34
+ case 40: //Event.KEY_DOWN:
35
+ this.clearMoveTimeout();
36
+ break;
37
+ }
38
+ }
39
+
40
+ this.onkeydown = function(e) {
41
+ if (!this.navigationActive) return;
42
+ switch(e.keyCode) {
43
+ case 37: //Event.KEY_LEFT:
44
+ if (this.moveLeft()) e.preventDefault();
45
+ break;
46
+ case 38: //Event.KEY_UP:
47
+ if (e.keyCode == 38 || e.ctrlKey) {
48
+ if (this.moveUp()) e.preventDefault();
49
+ this.startMoveTimeout(false);
50
+ }
51
+ break;
52
+ case 39: //Event.KEY_RIGHT:
53
+ if (this.moveRight()) e.preventDefault();
54
+ break;
55
+ case 40: //Event.KEY_DOWN:
56
+ if (e.keyCode == 40 || e.ctrlKey) {
57
+ if (this.moveDown()) e.preventDefault();
58
+ this.startMoveTimeout(true);
59
+ }
60
+ break;
61
+ case 13: //Event.KEY_RETURN:
62
+ if (this.$current)
63
+ e.preventDefault();
64
+ this.select(this.$current);
65
+ break;
66
+ }
67
+ if (e.ctrlKey && e.shiftKey) this.select(this.$current);
68
+ }
69
+
70
+ this.clearMoveTimeout = function() {
71
+ clearTimeout(this.moveTimeout);
72
+ this.moveTimeout = null;
73
+ }
74
+
75
+ this.startMoveTimeout = function(isDown) {
76
+ if (!$.browser.mozilla && !$.browser.opera) return;
77
+ if (this.moveTimeout) this.clearMoveTimeout();
78
+ var _this = this;
79
+
80
+ var go = function() {
81
+ if (!_this.moveTimeout) return;
82
+ _this[isDown ? 'moveDown' : 'moveUp']();
83
+ _this.moveTimout = setTimeout(go, 100);
84
+ }
85
+ this.moveTimeout = setTimeout(go, 200);
86
+ }
87
+
88
+ this.moveRight = function() {
89
+ }
90
+
91
+ this.moveLeft = function() {
92
+ }
93
+
94
+ this.move = function(isDown) {
95
+ }
96
+
97
+ this.moveUp = function() {
98
+ return this.move(false);
99
+ }
100
+
101
+ this.moveDown = function() {
102
+ return this.move(true);
103
+ }
104
+
105
+ /*
106
+ * Scrolls to the given element in the scrollable element view.
107
+ */
108
+ this.scrollInElement = function(element, view) {
109
+ var offset, viewHeight, viewScroll, height;
110
+ offset = element.offsetTop;
111
+ height = element.offsetHeight;
112
+ viewHeight = view.offsetHeight;
113
+ viewScroll = view.scrollTop;
114
+
115
+ if (offset - viewScroll + height > viewHeight) {
116
+ view.scrollTop = offset - viewHeight + height;
117
+ }
118
+ if (offset < viewScroll) {
119
+ view.scrollTop = offset;
120
+ }
121
+ }
122
+
123
+ /*
124
+ * Scrolls to the given element in the window. The second argument is
125
+ * ignored
126
+ */
127
+ this.scrollInWindow = function(element, ignored) {
128
+ var offset, viewHeight, viewScroll, height;
129
+ offset = element.offsetTop;
130
+ height = element.offsetHeight;
131
+ viewHeight = window.innerHeight;
132
+ viewScroll = window.scrollY;
133
+
134
+ if (offset - viewScroll + height > viewHeight) {
135
+ window.scrollTo(window.scrollX, offset - viewHeight + height);
136
+ }
137
+ if (offset < viewScroll) {
138
+ window.scrollTo(window.scrollX, offset);
139
+ }
140
+ }
141
+ }
142
+
Binary file
@@ -0,0 +1,114 @@
1
+ /**
2
+ *
3
+ * JQuery QuickSearch - Hook up a form field to hide non-matching elements.
4
+ * $Id: quicksearch.js 53 2009-01-07 02:52:03Z deveiant $
5
+ *
6
+ * Author: Michael Granger <mgranger@laika.com>
7
+ *
8
+ */
9
+ jQuery.fn.quicksearch = function( target, searchElems, options ) {
10
+ // console.debug( "Quicksearch fn" );
11
+
12
+ var settings = {
13
+ delay: 250,
14
+ clearButton: false,
15
+ highlightMatches: false,
16
+ focusOnLoad: false,
17
+ noSearchResultsIndicator: null
18
+ };
19
+ if ( options ) $.extend( settings, options );
20
+
21
+ return jQuery(this).each( function() {
22
+ // console.debug( "Creating a new quicksearch on %o for %o", this, searchElems );
23
+ new jQuery.quicksearch( this, searchElems, settings );
24
+ });
25
+ };
26
+
27
+
28
+ jQuery.quicksearch = function( searchBox, searchElems, settings ) {
29
+ var timeout;
30
+ var boxdiv = $(searchBox).parents('div').eq(0);
31
+
32
+ function init() {
33
+ setupKeyEventHandlers();
34
+ focusOnLoad();
35
+ };
36
+
37
+ function setupKeyEventHandlers() {
38
+ // console.debug( "Hooking up the 'keypress' event to %o", searchBox );
39
+ $(searchBox).
40
+ unbind( 'keyup' ).
41
+ keyup( function(e) { return onSearchKey( e.keyCode ); });
42
+ $(searchBox).
43
+ unbind( 'keypress' ).
44
+ keypress( function(e) {
45
+ switch( e.which ) {
46
+ // Execute the search on Enter, Tab, or Newline
47
+ case 9:
48
+ case 13:
49
+ case 10:
50
+ clearTimeout( timeout );
51
+ e.preventDefault();
52
+ doQuickSearch();
53
+ break;
54
+
55
+ // Allow backspace
56
+ case 8:
57
+ return true;
58
+ break;
59
+
60
+ // Only allow valid search characters
61
+ default:
62
+ return validQSChar( e.charCode );
63
+ }
64
+ });
65
+ };
66
+
67
+ function focusOnLoad() {
68
+ if ( !settings.focusOnLoad ) return false;
69
+ $(searchBox).focus();
70
+ };
71
+
72
+ function onSearchKey ( code ) {
73
+ clearTimeout( timeout );
74
+ // console.debug( "...scheduling search." );
75
+ timeout = setTimeout( doQuickSearch, settings.delay );
76
+ };
77
+
78
+ function validQSChar( code ) {
79
+ var c = String.fromCharCode( code );
80
+ return (
81
+ (c == ':') ||
82
+ (c >= 'a' && c <= 'z') ||
83
+ (c >= 'A' && c <= 'Z')
84
+ );
85
+ };
86
+
87
+ function doQuickSearch() {
88
+ var searchText = searchBox.value;
89
+ var pat = new RegExp( searchText, "im" );
90
+ var shownCount = 0;
91
+
92
+ if ( settings.noSearchResultsIndicator ) {
93
+ $('#' + settings.noSearchResultsIndicator).hide();
94
+ }
95
+
96
+ // All elements start out hidden
97
+ $(searchElems).each( function(index) {
98
+ var str = $(this).text();
99
+
100
+ if ( pat.test(str) ) {
101
+ shownCount += 1;
102
+ $(this).fadeIn();
103
+ } else {
104
+ $(this).hide();
105
+ }
106
+ });
107
+
108
+ if ( shownCount == 0 && settings.noSearchResultsIndicator ) {
109
+ $('#' + settings.noSearchResultsIndicator).slideDown();
110
+ }
111
+ };
112
+
113
+ init();
114
+ };
data/doc/js/search.js ADDED
@@ -0,0 +1,109 @@
1
+ Search = function(data, input, result) {
2
+ this.data = data;
3
+ this.$input = $(input);
4
+ this.$result = $(result);
5
+
6
+ this.$current = null;
7
+ this.$view = this.$result.parent();
8
+ this.searcher = new Searcher(data.index);
9
+ this.init();
10
+ }
11
+
12
+ Search.prototype = $.extend({}, Navigation, new function() {
13
+ var suid = 1;
14
+
15
+ this.init = function() {
16
+ var _this = this;
17
+ var observer = function(e) {
18
+ switch(e.originalEvent.keyCode) {
19
+ case 38: // Event.KEY_UP
20
+ case 40: // Event.KEY_DOWN
21
+ return;
22
+ }
23
+ _this.search(_this.$input[0].value);
24
+ };
25
+ this.$input.keyup(observer);
26
+ this.$input.click(observer); // mac's clear field
27
+
28
+ this.searcher.ready(function(results, isLast) {
29
+ _this.addResults(results, isLast);
30
+ })
31
+
32
+ this.initNavigation();
33
+ this.setNavigationActive(false);
34
+ }
35
+
36
+ this.search = function(value, selectFirstMatch) {
37
+ value = jQuery.trim(value).toLowerCase();
38
+ if (value) {
39
+ this.setNavigationActive(true);
40
+ } else {
41
+ this.setNavigationActive(false);
42
+ }
43
+
44
+ if (value == '') {
45
+ this.lastQuery = value;
46
+ this.$result.empty();
47
+ this.$result.attr('aria-expanded', 'false');
48
+ this.setNavigationActive(false);
49
+ } else if (value != this.lastQuery) {
50
+ this.lastQuery = value;
51
+ this.$result.attr('aria-busy', 'true');
52
+ this.$result.attr('aria-expanded', 'true');
53
+ this.firstRun = true;
54
+ this.searcher.find(value);
55
+ }
56
+ }
57
+
58
+ this.addResults = function(results, isLast) {
59
+ var target = this.$result.get(0);
60
+ if (this.firstRun && (results.length > 0 || isLast)) {
61
+ this.$current = null;
62
+ this.$result.empty();
63
+ }
64
+
65
+ for (var i=0, l = results.length; i < l; i++) {
66
+ var item = this.renderItem.call(this, results[i]);
67
+ item.setAttribute('id', 'search-result-' + target.childElementCount);
68
+ target.appendChild(item);
69
+ };
70
+
71
+ if (this.firstRun && results.length > 0) {
72
+ this.firstRun = false;
73
+ this.$current = $(target.firstChild);
74
+ this.$current.addClass('search-selected');
75
+ }
76
+ if (jQuery.browser.msie) this.$element[0].className += '';
77
+
78
+ if (isLast) this.$result.attr('aria-busy', 'false');
79
+ }
80
+
81
+ this.move = function(isDown) {
82
+ if (!this.$current) return;
83
+ var $next = this.$current[isDown ? 'next' : 'prev']();
84
+ if ($next.length) {
85
+ this.$current.removeClass('search-selected');
86
+ $next.addClass('search-selected');
87
+ this.$input.attr('aria-activedescendant', $next.attr('id'));
88
+ this.scrollIntoView($next[0], this.$view[0]);
89
+ this.$current = $next;
90
+ this.$input.val($next[0].firstChild.firstChild.text);
91
+ this.$input.select();
92
+ }
93
+ return true;
94
+ }
95
+
96
+ this.hlt = function(html) {
97
+ return this.escapeHTML(html).
98
+ replace(/\u0001/g, '<em>').
99
+ replace(/\u0002/g, '</em>');
100
+ }
101
+
102
+ this.escapeHTML = function(html) {
103
+ return html.replace(/[&<>]/g, function(c) {
104
+ return '&#' + c.charCodeAt(0) + ';';
105
+ });
106
+ }
107
+
108
+ });
109
+
@@ -0,0 +1 @@
1
+ var search_data = {"index":{"searchIndex":["testrail","apiclient","apierror","connection","hook","testcaseresult","testraildataload","testrailtools","testrunparameters","testrailintegration","cli","testtail","generators","project","cases_id()","change_test_run_name()","client()","commit_test_result()","copy_file()","failed_result?()","generate_cucumber_execution_file()","get_previous_test_result()","get_test_result()","new()","new()","new()","passed_result?()","perform()","prepare_config()","send_get()","send_post()","source_root()","test_rail_data()","test_rail_data_file_exist?()","test_run_data()","test_run_id()","test_run_id=()","test_run_name()","to_test_rail_api()","unchanged_pass_result?()","update_test_rail()","write_test_run_id()","gemfile","gemfile.lock","license","readme","rakefile","test_rail_integration.gemspec"],"longSearchIndex":["testrail","testrail::apiclient","testrail::apierror","testrail::connection","testrail::hook","testrail::testcaseresult","testrail::testraildataload","testrail::testrailtools","testrail::testrunparameters","testrailintegration","testrailintegration::cli","testrailintegration::testtail","testrailintegration::testtail::generators","testrailintegration::testtail::generators::project","testrail::connection::cases_id()","testrail::connection::change_test_run_name()","testrail::connection::client()","testrail::connection::commit_test_result()","testrailintegration::testtail::generators::project::copy_file()","testrail::hook::failed_result?()","testrail::testrailtools::generate_cucumber_execution_file()","testrail::connection::get_previous_test_result()","testrail::connection::get_test_result()","testrail::apiclient::new()","testrail::testcaseresult::new()","testrail::testrunparameters::new()","testrail::hook::passed_result?()","testrailintegration::cli#perform()","testrail::testrailtools::prepare_config()","testrail::apiclient#send_get()","testrail::apiclient#send_post()","testrailintegration::testtail::generators::project::source_root()","testrail::testraildataload::test_rail_data()","testrailintegration::testtail::generators::project::test_rail_data_file_exist?()","testrail::connection::test_run_data()","testrail::connection::test_run_id()","testrail::connection::test_run_id=()","testrail::connection::test_run_name()","testrail::testcaseresult#to_test_rail_api()","testrail::hook::unchanged_pass_result?()","testrail::hook::update_test_rail()","testrail::testrailtools::write_test_run_id()","","","","","",""],"info":[["TestRail","","TestRail.html","",""],["TestRail::APIClient","","TestRail/APIClient.html","",""],["TestRail::APIError","","TestRail/APIError.html","",""],["TestRail::Connection","","TestRail/Connection.html","",""],["TestRail::Hook","","TestRail/Hook.html","",""],["TestRail::TestCaseResult","","TestRail/TestCaseResult.html","",""],["TestRail::TestRailDataLoad","","TestRail/TestRailDataLoad.html","",""],["TestRail::TestRailTools","","TestRail/TestRailTools.html","",""],["TestRail::TestRunParameters","","TestRail/TestRunParameters.html","",""],["TestRailIntegration","","TestRailIntegration.html","",""],["TestRailIntegration::CLI","","TestRailIntegration/CLI.html","",""],["TestRailIntegration::TestTail","","TestRailIntegration/TestTail.html","",""],["TestRailIntegration::TestTail::Generators","","TestRailIntegration/TestTail/Generators.html","",""],["TestRailIntegration::TestTail::Generators::Project","","TestRailIntegration/TestTail/Generators/Project.html","",""],["cases_id","TestRail::Connection","TestRail/Connection.html#method-c-cases_id","(test_run_id)","<p>Get ID of all test cases from current test run\n<p>cases = client.send_get(“get_tests/12”)\n"],["change_test_run_name","TestRail::Connection","TestRail/Connection.html#method-c-change_test_run_name","()","<p>Changing name of test run from &lt;test run name&gt; in progress to\n&lt;test run name&gt;\n<p>VN LIVE_TEST …\n"],["client","TestRail::Connection","TestRail/Connection.html#method-c-client","()","<p>Creates connection to TestRail server\n<p>client = TestRail::APIClient.new(&#39;&lt;TestRail\nserver&gt;&#39;,“&lt;User …\n"],["commit_test_result","TestRail::Connection","TestRail/Connection.html#method-c-commit_test_result","(test_case_result)","<p>Send test result to TestRail for current test run\nclient.send_post(“add_result_for_case/&lt;number_of …\n"],["copy_file","TestRailIntegration::TestTail::Generators::Project","TestRailIntegration/TestTail/Generators/Project.html#method-c-copy_file","(file_name, root = nil)","<p>Copying templates for using for accessing to testrail\n"],["failed_result?","TestRail::Hook","TestRail/Hook.html#method-c-failed_result-3F","(result)",""],["generate_cucumber_execution_file","TestRail::TestRailTools","TestRail/TestRailTools.html#method-c-generate_cucumber_execution_file","(id_of_run)","<p>Method generates executable cucumber file\n<p>generate_cucumber_execution_file(2)\n<p>cucumber -p lazada.vn.live_test …\n"],["get_previous_test_result","TestRail::Connection","TestRail/Connection.html#method-c-get_previous_test_result","(case_id)","<p>Parse results and returns Failed if this test was marked as failed.\n"],["get_test_result","TestRail::Connection","TestRail/Connection.html#method-c-get_test_result","(case_id)","<p>Obtaining of all previous test results for current test case\n<p>client.send_get(“get_results_for_case/12/3534”) …\n"],["new","TestRail::APIClient","TestRail/APIClient.html#method-c-new","(connection_data)",""],["new","TestRail::TestCaseResult","TestRail/TestCaseResult.html#method-c-new","(test_case_id, title)",""],["new","TestRail::TestRunParameters","TestRail/TestRunParameters.html#method-c-new","()","<p>Checking of correct naming of created test run and return parameters for\nrunnng test run\n"],["passed_result?","TestRail::Hook","TestRail/Hook.html#method-c-passed_result-3F","(result, prev_result)",""],["perform","TestRailIntegration::CLI","TestRailIntegration/CLI.html#method-i-perform","()",""],["prepare_config","TestRail::TestRailTools","TestRail/TestRailTools.html#method-c-prepare_config","(run_id)","<p>Preparation for create right cucumber executable file\n"],["send_get","TestRail::APIClient","TestRail/APIClient.html#method-i-send_get","(uri)","<p>Send Get\n<p>Issues a GET request (read) against the API and returns the result (as Ruby\nhash).\n<p>Arguments: …\n"],["send_post","TestRail::APIClient","TestRail/APIClient.html#method-i-send_post","(uri, data)","<p>Send POST\n<p>Issues a POST request (write) against the API and returns the result (as\nRuby hash).\n<p>Arguments: …\n"],["source_root","TestRailIntegration::TestTail::Generators::Project","TestRailIntegration/TestTail/Generators/Project.html#method-c-source_root","()","<p>Obtaining path of project folder\n"],["test_rail_data","TestRail::TestRailDataLoad","TestRail/TestRailDataLoad.html#method-c-test_rail_data","()","<p>Loading of test rail information\n"],["test_rail_data_file_exist?","TestRailIntegration::TestTail::Generators::Project","TestRailIntegration/TestTail/Generators/Project.html#method-c-test_rail_data_file_exist-3F","()","<p>Checking existence of tes trail data file\n"],["test_run_data","TestRail::Connection","TestRail/Connection.html#method-c-test_run_data","()","<p>Getting information about test run\n"],["test_run_id","TestRail::Connection","TestRail/Connection.html#method-c-test_run_id","()","<p>Getting test run id value\n"],["test_run_id=","TestRail::Connection","TestRail/Connection.html#method-c-test_run_id-3D","(test_run_id)","<p>Setting up test run id\n"],["test_run_name","TestRail::Connection","TestRail/Connection.html#method-c-test_run_name","()","<p>Get test run name\n"],["to_test_rail_api","TestRail::TestCaseResult","TestRail/TestCaseResult.html#method-i-to_test_rail_api","()","<p>Send status to TestRail\n<p>{status_id: 1, comment: “Test passed”}\n"],["unchanged_pass_result?","TestRail::Hook","TestRail/Hook.html#method-c-unchanged_pass_result-3F","(result, prev_result)",""],["update_test_rail","TestRail::Hook","TestRail/Hook.html#method-c-update_test_rail","(scenario)",""],["write_test_run_id","TestRail::TestRailTools","TestRail/TestRailTools.html#method-c-write_test_run_id","(test_run_id)","<p>Writing test run ID into test rail data file\n"],["Gemfile","","Gemfile.html","","<p>source &#39;rubygems.org&#39;\n<p>gem &#39;thor&#39; gem &#39;fileutils&#39;\n"],["Gemfile.lock","","Gemfile_lock.html","","<p>GEM\n\n<pre>remote: https://rubygems.org/\nspecs:\n fileutils (0.7)\n rmagick (&gt;= 2.13.1)\n rmagick (2.13.4) ...</pre>\n"],["LICENSE","","LICENSE_txt.html","","<p>MIT License\n<p>Permission is hereby granted, free of charge, to any person obtaining a\ncopy of this software …\n"],["README","","README_md.html","","<p>TestRailIntegration\n<p>This game made for interaction between TestRail and Ruby automation\nframework Cucumber+Watir …\n"],["Rakefile","","Rakefile.html","","<p>require “bundler/gem_tasks”\n"],["test_rail_integration.gemspec","","test_rail_integration_gemspec.html","","<p>lib = File.expand_path(&#39;../lib&#39;, __FILE__) $LOAD_PATH.unshift(lib)\nunless $LOAD_PATH.include?(lib) …\n"]]}}
Binary file
@@ -0,0 +1,228 @@
1
+ Searcher = function(data) {
2
+ this.data = data;
3
+ this.handlers = [];
4
+ }
5
+
6
+ Searcher.prototype = new function() {
7
+ // search is performed in chunks of 1000 for non-blocking user input
8
+ var CHUNK_SIZE = 1000;
9
+ // do not try to find more than 100 results
10
+ var MAX_RESULTS = 100;
11
+ var huid = 1;
12
+ var suid = 1;
13
+ var runs = 0;
14
+
15
+ this.find = function(query) {
16
+ var queries = splitQuery(query);
17
+ var regexps = buildRegexps(queries);
18
+ var highlighters = buildHilighters(queries);
19
+ var state = { from: 0, pass: 0, limit: MAX_RESULTS, n: suid++};
20
+ var _this = this;
21
+
22
+ this.currentSuid = state.n;
23
+
24
+ if (!query) return;
25
+
26
+ var run = function() {
27
+ // stop current search thread if new search started
28
+ if (state.n != _this.currentSuid) return;
29
+
30
+ var results =
31
+ performSearch(_this.data, regexps, queries, highlighters, state);
32
+ var hasMore = (state.limit > 0 && state.pass < 4);
33
+
34
+ triggerResults.call(_this, results, !hasMore);
35
+ if (hasMore) {
36
+ setTimeout(run, 2);
37
+ }
38
+ runs++;
39
+ };
40
+ runs = 0;
41
+
42
+ // start search thread
43
+ run();
44
+ }
45
+
46
+ /* ----- Events ------ */
47
+ this.ready = function(fn) {
48
+ fn.huid = huid;
49
+ this.handlers.push(fn);
50
+ }
51
+
52
+ /* ----- Utilities ------ */
53
+ function splitQuery(query) {
54
+ return jQuery.grep(query.split(/(\s+|::?|\(\)?)/), function(string) {
55
+ return string.match(/\S/)
56
+ });
57
+ }
58
+
59
+ function buildRegexps(queries) {
60
+ return jQuery.map(queries, function(query) {
61
+ return new RegExp(query.replace(/(.)/g, '([$1])([^$1]*?)'), 'i')
62
+ });
63
+ }
64
+
65
+ function buildHilighters(queries) {
66
+ return jQuery.map(queries, function(query) {
67
+ return jQuery.map(query.split(''), function(l, i) {
68
+ return '\u0001$' + (i*2+1) + '\u0002$' + (i*2+2);
69
+ }).join('');
70
+ });
71
+ }
72
+
73
+ // function longMatchRegexp(index, longIndex, regexps) {
74
+ // for (var i = regexps.length - 1; i >= 0; i--){
75
+ // if (!index.match(regexps[i]) && !longIndex.match(regexps[i])) return false;
76
+ // };
77
+ // return true;
78
+ // }
79
+
80
+
81
+ /* ----- Mathchers ------ */
82
+
83
+ /*
84
+ * This record matches if the index starts with queries[0] and the record
85
+ * matches all of the regexps
86
+ */
87
+ function matchPassBeginning(index, longIndex, queries, regexps) {
88
+ if (index.indexOf(queries[0]) != 0) return false;
89
+ for (var i=1, l = regexps.length; i < l; i++) {
90
+ if (!index.match(regexps[i]) && !longIndex.match(regexps[i]))
91
+ return false;
92
+ };
93
+ return true;
94
+ }
95
+
96
+ /*
97
+ * This record matches if the longIndex starts with queries[0] and the
98
+ * longIndex matches all of the regexps
99
+ */
100
+ function matchPassLongIndex(index, longIndex, queries, regexps) {
101
+ if (longIndex.indexOf(queries[0]) != 0) return false;
102
+ for (var i=1, l = regexps.length; i < l; i++) {
103
+ if (!longIndex.match(regexps[i]))
104
+ return false;
105
+ };
106
+ return true;
107
+ }
108
+
109
+ /*
110
+ * This record matches if the index contains queries[0] and the record
111
+ * matches all of the regexps
112
+ */
113
+ function matchPassContains(index, longIndex, queries, regexps) {
114
+ if (index.indexOf(queries[0]) == -1) return false;
115
+ for (var i=1, l = regexps.length; i < l; i++) {
116
+ if (!index.match(regexps[i]) && !longIndex.match(regexps[i]))
117
+ return false;
118
+ };
119
+ return true;
120
+ }
121
+
122
+ /*
123
+ * This record matches if regexps[0] matches the index and the record
124
+ * matches all of the regexps
125
+ */
126
+ function matchPassRegexp(index, longIndex, queries, regexps) {
127
+ if (!index.match(regexps[0])) return false;
128
+ for (var i=1, l = regexps.length; i < l; i++) {
129
+ if (!index.match(regexps[i]) && !longIndex.match(regexps[i]))
130
+ return false;
131
+ };
132
+ return true;
133
+ }
134
+
135
+
136
+ /* ----- Highlighters ------ */
137
+ function highlightRegexp(info, queries, regexps, highlighters) {
138
+ var result = createResult(info);
139
+ for (var i=0, l = regexps.length; i < l; i++) {
140
+ result.title = result.title.replace(regexps[i], highlighters[i]);
141
+ result.namespace = result.namespace.replace(regexps[i], highlighters[i]);
142
+ };
143
+ return result;
144
+ }
145
+
146
+ function hltSubstring(string, pos, length) {
147
+ return string.substring(0, pos) + '\u0001' + string.substring(pos, pos + length) + '\u0002' + string.substring(pos + length);
148
+ }
149
+
150
+ function highlightQuery(info, queries, regexps, highlighters) {
151
+ var result = createResult(info);
152
+ var pos = 0;
153
+ var lcTitle = result.title.toLowerCase();
154
+
155
+ pos = lcTitle.indexOf(queries[0]);
156
+ if (pos != -1) {
157
+ result.title = hltSubstring(result.title, pos, queries[0].length);
158
+ }
159
+
160
+ result.namespace = result.namespace.replace(regexps[0], highlighters[0]);
161
+ for (var i=1, l = regexps.length; i < l; i++) {
162
+ result.title = result.title.replace(regexps[i], highlighters[i]);
163
+ result.namespace = result.namespace.replace(regexps[i], highlighters[i]);
164
+ };
165
+ return result;
166
+ }
167
+
168
+ function createResult(info) {
169
+ var result = {};
170
+ result.title = info[0];
171
+ result.namespace = info[1];
172
+ result.path = info[2];
173
+ result.params = info[3];
174
+ result.snippet = info[4];
175
+ return result;
176
+ }
177
+
178
+ /* ----- Searching ------ */
179
+ function performSearch(data, regexps, queries, highlighters, state) {
180
+ var searchIndex = data.searchIndex;
181
+ var longSearchIndex = data.longSearchIndex;
182
+ var info = data.info;
183
+ var result = [];
184
+ var i = state.from;
185
+ var l = searchIndex.length;
186
+ var togo = CHUNK_SIZE;
187
+ var matchFunc, hltFunc;
188
+
189
+ while (state.pass < 4 && state.limit > 0 && togo > 0) {
190
+ if (state.pass == 0) {
191
+ matchFunc = matchPassBeginning;
192
+ hltFunc = highlightQuery;
193
+ } else if (state.pass == 1) {
194
+ matchFunc = matchPassLongIndex;
195
+ hltFunc = highlightQuery;
196
+ } else if (state.pass == 2) {
197
+ matchFunc = matchPassContains;
198
+ hltFunc = highlightQuery;
199
+ } else if (state.pass == 3) {
200
+ matchFunc = matchPassRegexp;
201
+ hltFunc = highlightRegexp;
202
+ }
203
+
204
+ for (; togo > 0 && i < l && state.limit > 0; i++, togo--) {
205
+ if (info[i].n == state.n) continue;
206
+ if (matchFunc(searchIndex[i], longSearchIndex[i], queries, regexps)) {
207
+ info[i].n = state.n;
208
+ result.push(hltFunc(info[i], queries, regexps, highlighters));
209
+ state.limit--;
210
+ }
211
+ };
212
+ if (searchIndex.length <= i) {
213
+ state.pass++;
214
+ i = state.from = 0;
215
+ } else {
216
+ state.from = i;
217
+ }
218
+ }
219
+ return result;
220
+ }
221
+
222
+ function triggerResults(results, isLast) {
223
+ jQuery.each(this.handlers, function(i, fn) {
224
+ fn.call(this, results, isLast)
225
+ })
226
+ }
227
+ }
228
+
Binary file
@@ -0,0 +1,10 @@
1
+ /*
2
+ * Thickbox 3 - One Box To Rule Them All.
3
+ * By Cody Lindley (http://www.codylindley.com)
4
+ * Copyright (c) 2007 cody lindley
5
+ * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
6
+ */
7
+
8
+ var tb_pathToImage = "../images/loadingAnimation.gif";
9
+
10
+ eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('$(o).2S(9(){1u(\'a.18, 3n.18, 3i.18\');1w=1p 1t();1w.L=2H});9 1u(b){$(b).s(9(){6 t=X.Q||X.1v||M;6 a=X.u||X.23;6 g=X.1N||P;19(t,a,g);X.2E();H P})}9 19(d,f,g){3m{3(2t o.v.J.2i==="2g"){$("v","11").r({A:"28%",z:"28%"});$("11").r("22","2Z");3(o.1Y("1F")===M){$("v").q("<U 5=\'1F\'></U><4 5=\'B\'></4><4 5=\'8\'></4>");$("#B").s(G)}}n{3(o.1Y("B")===M){$("v").q("<4 5=\'B\'></4><4 5=\'8\'></4>");$("#B").s(G)}}3(1K()){$("#B").1J("2B")}n{$("#B").1J("2z")}3(d===M){d=""}$("v").q("<4 5=\'K\'><1I L=\'"+1w.L+"\' /></4>");$(\'#K\').2y();6 h;3(f.O("?")!==-1){h=f.3l(0,f.O("?"))}n{h=f}6 i=/\\.2s$|\\.2q$|\\.2m$|\\.2l$|\\.2k$/;6 j=h.1C().2h(i);3(j==\'.2s\'||j==\'.2q\'||j==\'.2m\'||j==\'.2l\'||j==\'.2k\'){1D="";1G="";14="";1z="";1x="";R="";1n="";1r=P;3(g){E=$("a[@1N="+g+"]").36();25(D=0;((D<E.1c)&&(R===""));D++){6 k=E[D].u.1C().2h(i);3(!(E[D].u==f)){3(1r){1z=E[D].Q;1x=E[D].u;R="<1e 5=\'1X\'>&1d;&1d;<a u=\'#\'>2T &2R;</a></1e>"}n{1D=E[D].Q;1G=E[D].u;14="<1e 5=\'1U\'>&1d;&1d;<a u=\'#\'>&2O; 2N</a></1e>"}}n{1r=1b;1n="1t "+(D+1)+" 2L "+(E.1c)}}}S=1p 1t();S.1g=9(){S.1g=M;6 a=2x();6 x=a[0]-1M;6 y=a[1]-1M;6 b=S.z;6 c=S.A;3(b>x){c=c*(x/b);b=x;3(c>y){b=b*(y/c);c=y}}n 3(c>y){b=b*(y/c);c=y;3(b>x){c=c*(x/b);b=x}}13=b+30;1a=c+2G;$("#8").q("<a u=\'\' 5=\'1L\' Q=\'1o\'><1I 5=\'2F\' L=\'"+f+"\' z=\'"+b+"\' A=\'"+c+"\' 23=\'"+d+"\'/></a>"+"<4 5=\'2D\'>"+d+"<4 5=\'2C\'>"+1n+14+R+"</4></4><4 5=\'2A\'><a u=\'#\' 5=\'Z\' Q=\'1o\'>1l</a> 1k 1j 1s</4>");$("#Z").s(G);3(!(14==="")){9 12(){3($(o).N("s",12)){$(o).N("s",12)}$("#8").C();$("v").q("<4 5=\'8\'></4>");19(1D,1G,g);H P}$("#1U").s(12)}3(!(R==="")){9 1i(){$("#8").C();$("v").q("<4 5=\'8\'></4>");19(1z,1x,g);H P}$("#1X").s(1i)}o.1h=9(e){3(e==M){I=2w.2v}n{I=e.2u}3(I==27){G()}n 3(I==3k){3(!(R=="")){o.1h="";1i()}}n 3(I==3j){3(!(14=="")){o.1h="";12()}}};16();$("#K").C();$("#1L").s(G);$("#8").r({Y:"T"})};S.L=f}n{6 l=f.2r(/^[^\\?]+\\??/,\'\');6 m=2p(l);13=(m[\'z\']*1)+30||3h;1a=(m[\'A\']*1)+3g||3f;W=13-30;V=1a-3e;3(f.O(\'2j\')!=-1){1E=f.1B(\'3d\');$("#15").C();3(m[\'1A\']!="1b"){$("#8").q("<4 5=\'2f\'><4 5=\'1H\'>"+d+"</4><4 5=\'2e\'><a u=\'#\' 5=\'Z\' Q=\'1o\'>1l</a> 1k 1j 1s</4></4><U 1W=\'0\' 2d=\'0\' L=\'"+1E[0]+"\' 5=\'15\' 1v=\'15"+1f.2c(1f.1y()*2b)+"\' 1g=\'1m()\' J=\'z:"+(W+29)+"p;A:"+(V+17)+"p;\' > </U>")}n{$("#B").N();$("#8").q("<U 1W=\'0\' 2d=\'0\' L=\'"+1E[0]+"\' 5=\'15\' 1v=\'15"+1f.2c(1f.1y()*2b)+"\' 1g=\'1m()\' J=\'z:"+(W+29)+"p;A:"+(V+17)+"p;\'> </U>")}}n{3($("#8").r("Y")!="T"){3(m[\'1A\']!="1b"){$("#8").q("<4 5=\'2f\'><4 5=\'1H\'>"+d+"</4><4 5=\'2e\'><a u=\'#\' 5=\'Z\'>1l</a> 1k 1j 1s</4></4><4 5=\'F\' J=\'z:"+W+"p;A:"+V+"p\'></4>")}n{$("#B").N();$("#8").q("<4 5=\'F\' 3c=\'3b\' J=\'z:"+W+"p;A:"+V+"p;\'></4>")}}n{$("#F")[0].J.z=W+"p";$("#F")[0].J.A=V+"p";$("#F")[0].3a=0;$("#1H").11(d)}}$("#Z").s(G);3(f.O(\'37\')!=-1){$("#F").q($(\'#\'+m[\'26\']).1T());$("#8").24(9(){$(\'#\'+m[\'26\']).q($("#F").1T())});16();$("#K").C();$("#8").r({Y:"T"})}n 3(f.O(\'2j\')!=-1){16();3($.1q.35){$("#K").C();$("#8").r({Y:"T"})}}n{$("#F").34(f+="&1y="+(1p 33().32()),9(){16();$("#K").C();1u("#F a.18");$("#8").r({Y:"T"})})}}3(!m[\'1A\']){o.21=9(e){3(e==M){I=2w.2v}n{I=e.2u}3(I==27){G()}}}}31(e){}}9 1m(){$("#K").C();$("#8").r({Y:"T"})}9 G(){$("#2Y").N("s");$("#Z").N("s");$("#8").2X("2W",9(){$(\'#8,#B,#1F\').2V("24").N().C()});$("#K").C();3(2t o.v.J.2i=="2g"){$("v","11").r({A:"1Z",z:"1Z"});$("11").r("22","")}o.1h="";o.21="";H P}9 16(){$("#8").r({2U:\'-\'+20((13/2),10)+\'p\',z:13+\'p\'});3(!(1V.1q.2Q&&1V.1q.2P<7)){$("#8").r({38:\'-\'+20((1a/2),10)+\'p\'})}}9 2p(a){6 b={};3(!a){H b}6 c=a.1B(/[;&]/);25(6 i=0;i<c.1c;i++){6 d=c[i].1B(\'=\');3(!d||d.1c!=2){39}6 e=2a(d[0]);6 f=2a(d[1]);f=f.2r(/\\+/g,\' \');b[e]=f}H b}9 2x(){6 a=o.2M;6 w=1S.2o||1R.2o||(a&&a.1Q)||o.v.1Q;6 h=1S.1P||1R.1P||(a&&a.2n)||o.v.2n;1O=[w,h];H 1O}9 1K(){6 a=2K.2J.1C();3(a.O(\'2I\')!=-1&&a.O(\'3o\')!=-1){H 1b}}',62,211,'|||if|div|id|var||TB_window|function||||||||||||||else|document|px|append|css|click||href|body||||width|height|TB_overlay|remove|TB_Counter|TB_TempArray|TB_ajaxContent|tb_remove|return|keycode|style|TB_load|src|null|unbind|indexOf|false|title|TB_NextHTML|imgPreloader|block|iframe|ajaxContentH|ajaxContentW|this|display|TB_closeWindowButton||html|goPrev|TB_WIDTH|TB_PrevHTML|TB_iframeContent|tb_position||thickbox|tb_show|TB_HEIGHT|true|length|nbsp|span|Math|onload|onkeydown|goNext|Esc|or|close|tb_showIframe|TB_imageCount|Close|new|browser|TB_FoundURL|Key|Image|tb_init|name|imgLoader|TB_NextURL|random|TB_NextCaption|modal|split|toLowerCase|TB_PrevCaption|urlNoQuery|TB_HideSelect|TB_PrevURL|TB_ajaxWindowTitle|img|addClass|tb_detectMacXFF|TB_ImageOff|150|rel|arrayPageSize|innerHeight|clientWidth|self|window|children|TB_prev|jQuery|frameborder|TB_next|getElementById|auto|parseInt|onkeyup|overflow|alt|unload|for|inlineId||100||unescape|1000|round|hspace|TB_closeAjaxWindow|TB_title|undefined|match|maxHeight|TB_iframe|bmp|gif|png|clientHeight|innerWidth|tb_parseQuery|jpeg|replace|jpg|typeof|which|keyCode|event|tb_getPageSize|show|TB_overlayBG|TB_closeWindow|TB_overlayMacFFBGHack|TB_secondLine|TB_caption|blur|TB_Image|60|tb_pathToImage|mac|userAgent|navigator|of|documentElement|Prev|lt|version|msie|gt|ready|Next|marginLeft|trigger|fast|fadeOut|TB_imageOff|hidden||catch|getTime|Date|load|safari|get|TB_inline|marginTop|continue|scrollTop|TB_modal|class|TB_|45|440|40|630|input|188|190|substr|try|area|firefox'.split('|'),0,{}))