logster 2.1.1 → 2.1.2

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 (121) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +19 -19
  3. data/.rubocop.yml +1 -1
  4. data/.travis.yml +16 -16
  5. data/CHANGELOG.md +172 -169
  6. data/Gemfile +4 -4
  7. data/Guardfile +8 -8
  8. data/LICENSE.txt +22 -22
  9. data/README.md +99 -99
  10. data/Rakefile +21 -21
  11. data/assets/fonts/FontAwesome.otf +0 -0
  12. data/assets/fonts/fontawesome-webfont.eot +0 -0
  13. data/assets/fonts/fontawesome-webfont.svg +639 -639
  14. data/assets/fonts/fontawesome-webfont.ttf +0 -0
  15. data/assets/fonts/fontawesome-webfont.woff +0 -0
  16. data/assets/fonts/fontawesome-webfont.woff2 +0 -0
  17. data/assets/images/Icon-144_rounded.png +0 -0
  18. data/assets/images/Icon-144_square.png +0 -0
  19. data/assets/images/icon_144x144.png +0 -0
  20. data/assets/images/icon_64x64.png +0 -0
  21. data/assets/javascript/client-app.js +106 -100
  22. data/assets/stylesheets/client-app.css +1 -1
  23. data/build_client_app.sh +0 -0
  24. data/client-app/.editorconfig +20 -20
  25. data/client-app/.ember-cli +9 -9
  26. data/client-app/.eslintignore +19 -19
  27. data/client-app/.eslintrc.js +46 -46
  28. data/client-app/.gitignore +23 -23
  29. data/client-app/.travis.yml +27 -27
  30. data/client-app/.watchmanconfig +3 -3
  31. data/client-app/README.md +57 -57
  32. data/client-app/app/app.js +0 -0
  33. data/client-app/app/components/actions-menu.js +43 -37
  34. data/client-app/app/components/env-tab.js +80 -44
  35. data/client-app/app/components/message-info.js +0 -0
  36. data/client-app/app/components/message-row.js +0 -0
  37. data/client-app/app/components/panel-resizer.js +0 -0
  38. data/client-app/app/components/tab-contents.js +27 -27
  39. data/client-app/app/components/tabbed-section.js +0 -0
  40. data/client-app/app/components/time-formatter.js +0 -0
  41. data/client-app/app/components/update-time.js +0 -0
  42. data/client-app/app/controllers/index.js +0 -0
  43. data/client-app/app/controllers/show.js +0 -0
  44. data/client-app/app/index.html +29 -29
  45. data/client-app/app/initializers/app-init.js +67 -72
  46. data/client-app/app/lib/preload.js +20 -14
  47. data/client-app/app/lib/utilities.js +149 -140
  48. data/client-app/app/models/message-collection.js +0 -0
  49. data/client-app/app/models/message.js +100 -100
  50. data/client-app/app/resolver.js +0 -0
  51. data/client-app/app/router.js +0 -0
  52. data/client-app/app/routes/index.js +0 -0
  53. data/client-app/app/routes/show.js +0 -0
  54. data/client-app/app/styles/app.css +527 -521
  55. data/client-app/app/templates/application.hbs +2 -2
  56. data/client-app/app/templates/components/actions-menu.hbs +12 -12
  57. data/client-app/app/templates/components/env-tab.hbs +10 -10
  58. data/client-app/app/templates/components/message-info.hbs +41 -41
  59. data/client-app/app/templates/components/message-row.hbs +15 -15
  60. data/client-app/app/templates/components/panel-resizer.hbs +3 -3
  61. data/client-app/app/templates/components/tabbed-section.hbs +10 -10
  62. data/client-app/app/templates/components/time-formatter.hbs +1 -1
  63. data/client-app/app/templates/index.hbs +58 -58
  64. data/client-app/app/templates/show.hbs +7 -7
  65. data/client-app/config/environment.js +51 -51
  66. data/client-app/config/optional-features.json +3 -3
  67. data/client-app/config/targets.js +18 -18
  68. data/client-app/ember-cli-build.js +29 -29
  69. data/client-app/package-lock.json +11365 -11365
  70. data/client-app/package.json +56 -56
  71. data/client-app/testem.js +25 -25
  72. data/client-app/tests/index.html +34 -34
  73. data/client-app/tests/integration/components/env-tab-test.js +123 -73
  74. data/client-app/tests/integration/components/message-info-test.js +111 -26
  75. data/client-app/tests/test-helper.js +8 -8
  76. data/client-app/tests/unit/controllers/index-test.js +12 -12
  77. data/client-app/tests/unit/controllers/show-test.js +12 -12
  78. data/client-app/tests/unit/initializers/app-init-test.js +31 -31
  79. data/client-app/tests/unit/routes/index-test.js +11 -11
  80. data/client-app/tests/unit/routes/show-test.js +11 -11
  81. data/lib/examples/sidekiq_logster_reporter.rb +21 -21
  82. data/lib/logster.rb +54 -54
  83. data/lib/logster/base_store.rb +141 -141
  84. data/lib/logster/configuration.rb +26 -25
  85. data/lib/logster/defer_logger.rb +14 -14
  86. data/lib/logster/ignore_pattern.rb +65 -65
  87. data/lib/logster/logger.rb +113 -113
  88. data/lib/logster/message.rb +212 -212
  89. data/lib/logster/middleware/debug_exceptions.rb +26 -26
  90. data/lib/logster/middleware/reporter.rb +55 -55
  91. data/lib/logster/middleware/viewer.rb +222 -221
  92. data/lib/logster/rails/railtie.rb +63 -63
  93. data/lib/logster/redis_store.rb +566 -566
  94. data/lib/logster/scheduler.rb +54 -54
  95. data/lib/logster/version.rb +3 -3
  96. data/lib/logster/web.rb +14 -14
  97. data/logster.gemspec +35 -35
  98. data/test/examples/test_sidekiq_reporter_example.rb +46 -46
  99. data/test/fake_data/Gemfile +4 -4
  100. data/test/fake_data/generate.rb +10 -10
  101. data/test/logster/middleware/test_reporter.rb +19 -19
  102. data/test/logster/middleware/test_viewer.rb +96 -96
  103. data/test/logster/test_base_store.rb +147 -147
  104. data/test/logster/test_defer_logger.rb +34 -34
  105. data/test/logster/test_ignore_pattern.rb +41 -41
  106. data/test/logster/test_logger.rb +86 -86
  107. data/test/logster/test_message.rb +119 -119
  108. data/test/logster/test_redis_rate_limiter.rb +230 -230
  109. data/test/logster/test_redis_store.rb +720 -720
  110. data/test/test_helper.rb +38 -38
  111. data/vendor/assets/javascripts/logster.js.erb +39 -39
  112. metadata +1 -10
  113. data/client-app/app/components/tab-link.js +0 -5
  114. data/client-app/tests/integration/components/actions-menu-test.js +0 -26
  115. data/client-app/tests/integration/components/message-row-test.js +0 -26
  116. data/client-app/tests/integration/components/panel-resizer-test.js +0 -26
  117. data/client-app/tests/integration/components/tab-contents-test.js +0 -26
  118. data/client-app/tests/integration/components/tab-link-test.js +0 -26
  119. data/client-app/tests/integration/components/tabbed-section-test.js +0 -26
  120. data/client-app/tests/integration/components/time-formatter-test.js +0 -26
  121. data/client-app/tests/integration/components/update-time-test.js +0 -26
@@ -1,56 +1,56 @@
1
- {
2
- "name": "client-app",
3
- "version": "0.0.0",
4
- "private": true,
5
- "description": "Logging framework and viewer",
6
- "repository": "https://github.com/discourse/logster/",
7
- "license": "MIT",
8
- "author": "Sam Saffron",
9
- "directories": {
10
- "doc": "doc",
11
- "test": "tests"
12
- },
13
- "scripts": {
14
- "build": "ember build",
15
- "lint:hbs": "ember-template-lint .",
16
- "lint:js": "eslint .",
17
- "start": "ember serve",
18
- "test": "ember test"
19
- },
20
- "devDependencies": {
21
- "@ember/jquery": "^0.5.2",
22
- "@ember/optional-features": "^0.6.3",
23
- "broccoli-asset-rev": "^2.7.0",
24
- "ember-ajax": "^3.1.0",
25
- "ember-cli": "~3.5.0",
26
- "ember-cli-app-version": "^3.2.0",
27
- "ember-cli-babel": "^6.16.0",
28
- "ember-cli-dependency-checker": "^3.0.0",
29
- "ember-cli-eslint": "^4.2.3",
30
- "ember-cli-htmlbars": "^3.0.0",
31
- "ember-cli-htmlbars-inline-precompile": "^1.0.3",
32
- "ember-cli-inject-live-reload": "^1.8.2",
33
- "ember-cli-sri": "^2.1.1",
34
- "ember-cli-template-lint": "^1.0.0-beta.1",
35
- "ember-cli-uglify": "^2.1.0",
36
- "ember-data": "~3.5.0",
37
- "ember-export-application-global": "^2.0.0",
38
- "ember-font-awesome": "^4.0.0-rc.4",
39
- "ember-load-initializers": "^1.1.0",
40
- "ember-maybe-import-regenerator": "^0.1.6",
41
- "ember-qunit": "^3.4.1",
42
- "ember-resolver": "^5.0.1",
43
- "ember-source": "~3.5.0",
44
- "ember-welcome-page": "^3.2.0",
45
- "eslint-plugin-ember": "^5.2.0",
46
- "loader.js": "^4.7.0",
47
- "qunit-dom": "^0.8.0"
48
- },
49
- "engines": {
50
- "node": "6.* || 8.* || >= 10.*"
51
- },
52
- "dependencies": {
53
- "lodash": "~4.17.11",
54
- "moment": "~2.22.2"
55
- }
56
- }
1
+ {
2
+ "name": "client-app",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "description": "Logging framework and viewer",
6
+ "repository": "https://github.com/discourse/logster/",
7
+ "license": "MIT",
8
+ "author": "Sam Saffron",
9
+ "directories": {
10
+ "doc": "doc",
11
+ "test": "tests"
12
+ },
13
+ "scripts": {
14
+ "build": "ember build",
15
+ "lint:hbs": "ember-template-lint .",
16
+ "lint:js": "eslint .",
17
+ "start": "ember serve",
18
+ "test": "ember test"
19
+ },
20
+ "devDependencies": {
21
+ "@ember/jquery": "^0.5.2",
22
+ "@ember/optional-features": "^0.6.3",
23
+ "broccoli-asset-rev": "^2.7.0",
24
+ "ember-ajax": "^3.1.0",
25
+ "ember-cli": "~3.5.0",
26
+ "ember-cli-app-version": "^3.2.0",
27
+ "ember-cli-babel": "^6.16.0",
28
+ "ember-cli-dependency-checker": "^3.0.0",
29
+ "ember-cli-eslint": "^4.2.3",
30
+ "ember-cli-htmlbars": "^3.0.0",
31
+ "ember-cli-htmlbars-inline-precompile": "^1.0.3",
32
+ "ember-cli-inject-live-reload": "^1.8.2",
33
+ "ember-cli-sri": "^2.1.1",
34
+ "ember-cli-template-lint": "^1.0.0-beta.1",
35
+ "ember-cli-uglify": "^2.1.0",
36
+ "ember-data": "~3.5.0",
37
+ "ember-export-application-global": "^2.0.0",
38
+ "ember-font-awesome": "^4.0.0-rc.4",
39
+ "ember-load-initializers": "^1.1.0",
40
+ "ember-maybe-import-regenerator": "^0.1.6",
41
+ "ember-qunit": "^3.4.1",
42
+ "ember-resolver": "^5.0.1",
43
+ "ember-source": "~3.5.0",
44
+ "ember-welcome-page": "^3.2.0",
45
+ "eslint-plugin-ember": "^5.2.0",
46
+ "loader.js": "^4.7.0",
47
+ "qunit-dom": "^0.8.0"
48
+ },
49
+ "engines": {
50
+ "node": "6.* || 8.* || >= 10.*"
51
+ },
52
+ "dependencies": {
53
+ "lodash": "~4.17.11",
54
+ "moment": "~2.22.2"
55
+ }
56
+ }
@@ -1,25 +1,25 @@
1
- module.exports = {
2
- test_page: 'tests/index.html?hidepassed',
3
- disable_watching: true,
4
- launch_in_ci: [
5
- 'Chrome'
6
- ],
7
- launch_in_dev: [
8
- 'Chrome'
9
- ],
10
- browser_args: {
11
- Chrome: {
12
- ci: [
13
- // --no-sandbox is needed when running Chrome inside a container
14
- process.env.CI ? '--no-sandbox' : null,
15
- '--headless',
16
- '--disable-gpu',
17
- '--disable-dev-shm-usage',
18
- '--disable-software-rasterizer',
19
- '--mute-audio',
20
- '--remote-debugging-port=0',
21
- '--window-size=1440,900'
22
- ].filter(Boolean)
23
- }
24
- }
25
- };
1
+ module.exports = {
2
+ test_page: 'tests/index.html?hidepassed',
3
+ disable_watching: true,
4
+ launch_in_ci: [
5
+ 'Chrome'
6
+ ],
7
+ launch_in_dev: [
8
+ 'Chrome'
9
+ ],
10
+ browser_args: {
11
+ Chrome: {
12
+ ci: [
13
+ // --no-sandbox is needed when running Chrome inside a container
14
+ process.env.CI ? '--no-sandbox' : null,
15
+ '--headless',
16
+ '--disable-gpu',
17
+ '--disable-dev-shm-usage',
18
+ '--disable-software-rasterizer',
19
+ '--mute-audio',
20
+ '--remote-debugging-port=0',
21
+ '--window-size=1440,900'
22
+ ].filter(Boolean)
23
+ }
24
+ }
25
+ };
@@ -1,34 +1,34 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8">
5
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
- <title>ClientApp Tests</title>
7
- <meta name="description" content="">
8
- <meta name="viewport" content="width=device-width, initial-scale=1">
9
- <meta id="preloaded-data" data-root-path="/logs" data-preloaded="{}">
10
-
11
- {{content-for "head"}}
12
- {{content-for "test-head"}}
13
-
14
- <link rel="stylesheet" href="{{rootURL}}assets/vendor.css">
15
- <link rel="stylesheet" href="{{rootURL}}assets/client-app.css">
16
- <link rel="stylesheet" href="{{rootURL}}assets/test-support.css">
17
-
18
- {{content-for "head-footer"}}
19
- {{content-for "test-head-footer"}}
20
- </head>
21
- <body>
22
- {{content-for "body"}}
23
- {{content-for "test-body"}}
24
-
25
- <script src="/testem.js" integrity=""></script>
26
- <script src="{{rootURL}}assets/vendor.js"></script>
27
- <script src="{{rootURL}}assets/test-support.js"></script>
28
- <script src="{{rootURL}}assets/client-app.js"></script>
29
- <script src="{{rootURL}}assets/tests.js"></script>
30
-
31
- {{content-for "body-footer"}}
32
- {{content-for "test-body-footer"}}
33
- </body>
34
- </html>
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+ <title>ClientApp Tests</title>
7
+ <meta name="description" content="">
8
+ <meta name="viewport" content="width=device-width, initial-scale=1">
9
+ <meta id="preloaded-data" data-root-path="/logs" data-preloaded="{&quot;env_expandable_keys&quot;:[]}">
10
+
11
+ {{content-for "head"}}
12
+ {{content-for "test-head"}}
13
+
14
+ <link rel="stylesheet" href="{{rootURL}}assets/vendor.css">
15
+ <link rel="stylesheet" href="{{rootURL}}assets/client-app.css">
16
+ <link rel="stylesheet" href="{{rootURL}}assets/test-support.css">
17
+
18
+ {{content-for "head-footer"}}
19
+ {{content-for "test-head-footer"}}
20
+ </head>
21
+ <body>
22
+ {{content-for "body"}}
23
+ {{content-for "test-body"}}
24
+
25
+ <script src="/testem.js" integrity=""></script>
26
+ <script src="{{rootURL}}assets/vendor.js"></script>
27
+ <script src="{{rootURL}}assets/test-support.js"></script>
28
+ <script src="{{rootURL}}assets/client-app.js"></script>
29
+ <script src="{{rootURL}}assets/tests.js"></script>
30
+
31
+ {{content-for "body-footer"}}
32
+ {{content-for "test-body-footer"}}
33
+ </body>
34
+ </html>
@@ -1,73 +1,123 @@
1
- import { module, test } from 'qunit';
2
- import { setupRenderingTest } from 'ember-qunit';
3
- import { render, find, findAll, click } from '@ember/test-helpers';
4
- import hbs from 'htmlbars-inline-precompile';
5
- import Message from "client-app/models/message";
6
-
7
- const message = Message.create({
8
- env: [
9
- { a: "aa", b: "bb" },
10
- { c: "cc", d: "dd" }
11
- ]
12
- })
13
-
14
- const message2 = Message.create({
15
- env: { e: "ee", f: "ff" }
16
- });
17
-
18
- function reduceToContent(node) {
19
- return Array.from(node.childNodes).reduce((ac, cr) => `${ac.textContent}: ${cr.textContent}`);
20
- }
21
-
22
- module('Integration | Component | env-tab', function(hooks) {
23
- setupRenderingTest(hooks);
24
-
25
- test('it renders', async function(assert) {
26
- this.set("message", message);
27
- await render(hbs`{{env-tab message=message}}`);
28
-
29
- assert.equal(find(".env-number").textContent, "1/2", "shows the current over the total number of env objects");
30
- let trs = findAll("tr");
31
- assert.equal(trs.length, 2);
32
- assert.equal(reduceToContent(trs[0]), 'a: aa', "has the right content");
33
- assert.equal(reduceToContent(trs[1]), 'b: bb', "has the right content");
34
-
35
- const buttons = findAll("button.nav-btn");
36
- // at first page, you can't go back
37
- assert.ok(buttons[0].disabled, "back buttons are disabled");
38
- assert.ok(buttons[1].disabled, "back buttons are disabled");
39
-
40
- assert.notOk(buttons[2].disabled, "forward buttons are not disabled");
41
- assert.notOk(buttons[3].disabled, "forward buttons are not disabled");
42
-
43
- this.set("message", message2);
44
- assert.dom("button").doesNotExist("doesn't show buttons for non-array env");
45
-
46
- trs = findAll("tr");
47
- assert.equal(trs.length, 2);
48
- assert.equal(reduceToContent(trs[0]), 'e: ee', "has the right content");
49
- assert.equal(reduceToContent(trs[1]), 'f: ff', "has the right content");
50
- });
51
-
52
- test('it works correctly', async function(assert) {
53
- this.set("message", message);
54
- await render(hbs`{{env-tab message=message}}`);
55
-
56
- const buttons = findAll("button.nav-btn");
57
- await click(buttons[2]);
58
-
59
- assert.equal(find(".env-number").textContent, "2/2", "shows the current over the total number of env objects");
60
-
61
- const trs = findAll("tr");
62
- assert.equal(trs.length, 2);
63
- assert.equal(reduceToContent(trs[0]), 'c: cc', "has the right content");
64
- assert.equal(reduceToContent(trs[1]), 'd: dd', "has the right content");
65
-
66
- // at last page, you can't go forward but you can go back
67
- assert.notOk(buttons[0].disabled, "back buttons are not disabled");
68
- assert.notOk(buttons[1].disabled, "back buttons are not disabled");
69
-
70
- assert.ok(buttons[2].disabled, "forward buttons are disabled");
71
- assert.ok(buttons[3].disabled, "forward buttons are disabled");
72
- });
73
- });
1
+ import { module, test } from "qunit";
2
+ import { setupRenderingTest } from "ember-qunit";
3
+ import { render, find, findAll, click } from "@ember/test-helpers";
4
+ import hbs from "htmlbars-inline-precompile";
5
+ import Message from "client-app/models/message";
6
+ import { init } from "client-app/lib/preload";
7
+
8
+ const message = Message.create({
9
+ env: [{ a: "aa", b: "bb" }, { c: "cc", d: "dd" }]
10
+ });
11
+
12
+ const message2 = Message.create({
13
+ env: { e: "ee", f: "ff" }
14
+ });
15
+
16
+ const message3 = Message.create({
17
+ env: [
18
+ { env_key_2: "an_env_value", notExpanded: "dsdcz" },
19
+ { env_key_2: "anotherthing", notExpanded: "cxc" }
20
+ ]
21
+ });
22
+
23
+ function reduceToContent(node) {
24
+ return Array.from(node.childNodes).reduce(
25
+ (ac, cr) => `${ac.textContent}: ${cr.textContent}`
26
+ );
27
+ }
28
+
29
+ module("Integration | Component | env-tab", function(hooks) {
30
+ setupRenderingTest(hooks);
31
+
32
+ test("it renders", async function(assert) {
33
+ this.set("message", message);
34
+ await render(hbs`{{env-tab message=message}}`);
35
+
36
+ assert.equal(
37
+ find(".env-number").textContent,
38
+ "1/2",
39
+ "shows the current over the total number of env objects"
40
+ );
41
+ let trs = findAll("tr");
42
+ assert.equal(trs.length, 2);
43
+ assert.equal(reduceToContent(trs[0]), "a: aa", "has the right content");
44
+ assert.equal(reduceToContent(trs[1]), "b: bb", "has the right content");
45
+
46
+ const buttons = findAll("button.nav-btn");
47
+ // at first page, you can't go back
48
+ assert.ok(buttons[0].disabled, "back buttons are disabled");
49
+ assert.ok(buttons[1].disabled, "back buttons are disabled");
50
+
51
+ assert.notOk(buttons[2].disabled, "forward buttons are not disabled");
52
+ assert.notOk(buttons[3].disabled, "forward buttons are not disabled");
53
+
54
+ this.set("message", message2);
55
+ assert.dom("button").doesNotExist("doesn't show buttons for non-array env");
56
+
57
+ trs = findAll("tr");
58
+ assert.equal(trs.length, 2);
59
+ assert.equal(reduceToContent(trs[0]), "e: ee", "has the right content");
60
+ assert.equal(reduceToContent(trs[1]), "f: ff", "has the right content");
61
+ });
62
+
63
+ test("it works correctly", async function(assert) {
64
+ this.set("message", message);
65
+ await render(hbs`{{env-tab message=message}}`);
66
+
67
+ const buttons = findAll("button.nav-btn");
68
+ await click(buttons[2]);
69
+
70
+ assert.equal(
71
+ find(".env-number").textContent,
72
+ "2/2",
73
+ "shows the current over the total number of env objects"
74
+ );
75
+
76
+ const trs = findAll("tr");
77
+ assert.equal(trs.length, 2);
78
+ assert.equal(reduceToContent(trs[0]), "c: cc", "has the right content");
79
+ assert.equal(reduceToContent(trs[1]), "d: dd", "has the right content");
80
+
81
+ // at last page, you can't go forward but you can go back
82
+ assert.notOk(buttons[0].disabled, "back buttons are not disabled");
83
+ assert.notOk(buttons[1].disabled, "back buttons are not disabled");
84
+
85
+ assert.ok(buttons[2].disabled, "forward buttons are disabled");
86
+ assert.ok(buttons[3].disabled, "forward buttons are disabled");
87
+ });
88
+
89
+ test("expandable env keys", async function(assert) {
90
+ document.getElementById(
91
+ "preloaded-data"
92
+ ).dataset.preloaded = JSON.stringify({
93
+ env_expandable_keys: ["env_key_2"]
94
+ });
95
+ init();
96
+ this.set("message", message3);
97
+ await render(hbs`{{env-tab message=message}}`);
98
+
99
+ const expandable = find(".env-table tr");
100
+ assert.equal(
101
+ expandable.children[1].textContent.trim(),
102
+ "an_env_value, 1 more",
103
+ "expandable env keys shown correctly"
104
+ );
105
+
106
+ assert.equal(
107
+ findAll("a.expand-list").length,
108
+ 1,
109
+ "only whitelisted env keys are expandable"
110
+ );
111
+
112
+ const expandBtn = find("a.expand-list");
113
+ assert.equal(expandBtn.textContent.trim(), "1 more");
114
+ await click(expandBtn);
115
+
116
+ const expanded = find(".env-table tr");
117
+ assert.equal(
118
+ expanded.children[1].textContent.trim(),
119
+ "[an_env_value, anotherthing]",
120
+ "expanded env keys shown correctly"
121
+ );
122
+ });
123
+ });
@@ -1,26 +1,111 @@
1
- import { module, test } from 'qunit';
2
- import { setupRenderingTest } from 'ember-qunit';
3
- import { render } from '@ember/test-helpers';
4
- import hbs from 'htmlbars-inline-precompile';
5
-
6
- module('Integration | Component | message-info', function(hooks) {
7
- setupRenderingTest(hooks);
8
-
9
- test('it renders', async function(assert) {
10
- // Set any properties with this.set('myProperty', 'value');
11
- // Handle any actions with this.set('myAction', function(val) { ... });
12
-
13
- await render(hbs`{{message-info}}`);
14
-
15
- assert.equal(this.element.textContent.trim(), '');
16
-
17
- // Template block usage:
18
- await render(hbs`
19
- {{#message-info}}
20
- template block text
21
- {{/message-info}}
22
- `);
23
-
24
- assert.equal(this.element.textContent.trim(), 'template block text');
25
- });
26
- });
1
+ import { module, test } from "qunit";
2
+ import { setupRenderingTest } from "ember-qunit";
3
+ import { render, find, findAll, click } from "@ember/test-helpers";
4
+ import hbs from "htmlbars-inline-precompile";
5
+ import Message from "client-app/models/message";
6
+
7
+ const backtrace = "test backtrace:26";
8
+ const messageTitle = "This Is Title";
9
+
10
+ const message = Message.create({
11
+ backtrace,
12
+ message: messageTitle,
13
+ env: { c: "cc", d: "dd" }
14
+ });
15
+
16
+ module("Integration | Component | message-info", function(hooks) {
17
+ setupRenderingTest(hooks);
18
+
19
+ test("it renders", async function(assert) {
20
+ this.setProperties({
21
+ actionsInMenu: true,
22
+ showTitle: false,
23
+ message
24
+ });
25
+
26
+ await render(
27
+ hbs`{{message-info currentMessage=message showTitle=showTitle actionsInMenu=actionsInMenu}}`
28
+ );
29
+ let activeTab = find(".message-info .content.active pre");
30
+ assert.equal(
31
+ activeTab.textContent,
32
+ backtrace,
33
+ "default active tab is backtrace"
34
+ );
35
+ assert.dom(".message-info .content h3").doesNotExist("no titles are shown");
36
+ assert.equal(findAll(".tabs a").length, 3, "3 tabs shown");
37
+ assert.equal(
38
+ find(".tabs a.active").textContent.trim(),
39
+ "backtrace",
40
+ "default active tab is backtrace"
41
+ );
42
+ assert.equal(
43
+ findAll(".message-actions button").length,
44
+ 2,
45
+ "2 buttons shown when `actionsInMenu` is true"
46
+ );
47
+ assert
48
+ .dom(".message-actions button.expand.no-text")
49
+ .exists("menu expand button is shown");
50
+ assert.dom(".message-actions button.share").exists("share button is shown");
51
+
52
+ await click(find(".message-actions button.expand.no-text"));
53
+ assert.equal(
54
+ findAll(".actions-menu button").length,
55
+ 2,
56
+ "extra buttons shown inside a menu"
57
+ );
58
+ assert
59
+ .dom(".actions-menu button.remove")
60
+ .exists("remove button inside the menu");
61
+ assert
62
+ .dom(".actions-menu button.protect")
63
+ .exists("protect button inside the menu");
64
+
65
+ this.setProperties({
66
+ showTitle: true,
67
+ actionsInMenu: false
68
+ });
69
+
70
+ assert.equal(
71
+ findAll(".message-info .content h3").length,
72
+ 3,
73
+ "titles are shown"
74
+ );
75
+ assert
76
+ .dom(".message-actions button.expand.no-text")
77
+ .doesNotExist("menu expand button is not shown");
78
+ assert.equal(
79
+ findAll(".message-actions button").length,
80
+ 3,
81
+ "all actions buttons are shown inline when `actionsInMenu` is false"
82
+ );
83
+
84
+ await click(findAll(".tabs a")[0]);
85
+ activeTab = find(".message-info .content.active pre");
86
+ assert.equal(activeTab.textContent, messageTitle, "can switch tabs");
87
+
88
+ assert
89
+ .dom(".message-actions button.solve")
90
+ .doesNotExist(
91
+ "no solve button when there is no application_version in env"
92
+ );
93
+
94
+ message.set("env.application_version", "fddfsdfdsf");
95
+ this.set("message", message);
96
+ assert
97
+ .dom(".message-actions button.solve")
98
+ .exists("solve button is shown when there is application_version in env");
99
+
100
+ message.set("env", [
101
+ { sd: "dx", application_version: "fsfdsf" },
102
+ { vcv: "dxc" }
103
+ ]);
104
+ this.set("message", message);
105
+ assert
106
+ .dom(".message-actions button.solve")
107
+ .exists(
108
+ "solve button is shown when there is application_version in env (array)"
109
+ );
110
+ });
111
+ });