Skip to content

Commit 1ce7685

Browse files
committed
webpack: adding high-level integration test to make sure webpack integration works
#343
1 parent adbb22b commit 1ce7685

File tree

10 files changed

+146
-72
lines changed

10 files changed

+146
-72
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ spec/dummy/db/*.sqlite3
66
spec/dummy/db/*.sqlite3-journal
77
spec/dummy/log/*.log
88
spec/dummy/node_modules/
9+
spec/dummy/public/packs/
910
spec/dummy/yarn-error.log
1011
spec/dummy/storage/
1112
spec/dummy/tmp/

spec/dummy/.babelrc

Lines changed: 0 additions & 18 deletions
This file was deleted.

spec/dummy/.postcssrc.yml

Lines changed: 0 additions & 3 deletions
This file was deleted.

spec/dummy/app/javascript/packs/application.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@
77
// To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate
88
// layout file, like app/views/layouts/application.html.erb
99

10+
import MatestackUiCore from 'matestack-ui-core'
11+
1012
console.log('Hello World from Webpacker')
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<title>Dummy</title>
5+
<%= csrf_meta_tags %>
6+
<%= csp_meta_tag %>
7+
8+
<%= stylesheet_link_tag 'application', media: 'all' %>
9+
<%= javascript_pack_tag 'application' %>
10+
</head>
11+
12+
<body>
13+
<div id="matestack_ui">
14+
<%= yield %>
15+
</div>
16+
</body>
17+
</html>

spec/dummy/config/webpacker.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ default: &default
88

99
# Additional paths webpack should lookup modules
1010
# ['app/assets', 'engine/foo/app/assets']
11-
resolved_paths: []
11+
resolved_paths: ['node_modules']
1212

1313
# Reload manifest.json on all requests so we reload latest compiled packs
1414
cache_manifest: false

spec/dummy/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
"name": "dummy",
33
"private": true,
44
"dependencies": {
5-
"@rails/webpacker": "4.2.2"
5+
"@rails/webpacker": "4.2.2",
6+
"matestack-ui-core": "../../"
67
},
78
"devDependencies": {
89
"webpack-dev-server": "^3.10.2"

spec/dummy/postcss.config.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
module.exports = {
2+
plugins: [
3+
require('postcss-import'),
4+
require('postcss-flexbugs-fixes'),
5+
require('postcss-preset-env')({
6+
autoprefixer: {
7+
flexbox: 'no-2009'
8+
},
9+
stage: 3
10+
})
11+
]
12+
}

spec/dummy/yarn.lock

Lines changed: 57 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1278,6 +1278,14 @@ aws4@^1.8.0:
12781278
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
12791279
integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
12801280

1281+
axios@^0.18.1:
1282+
version "0.18.1"
1283+
resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3"
1284+
integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==
1285+
dependencies:
1286+
follow-redirects "1.5.10"
1287+
is-buffer "^2.0.2"
1288+
12811289
babel-loader@^8.0.6:
12821290
version "8.0.6"
12831291
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb"
@@ -3007,6 +3015,13 @@ flush-write-stream@^1.0.0:
30073015
inherits "^2.0.1"
30083016
readable-stream "^2.0.4"
30093017

3018+
3019+
version "1.5.10"
3020+
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a"
3021+
integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==
3022+
dependencies:
3023+
debug "=3.1.0"
3024+
30103025
follow-redirects@^1.0.0:
30113026
version "1.5.9"
30123027
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.9.tgz#c9ed9d748b814a39535716e531b9196a845d89c6"
@@ -3748,6 +3763,11 @@ is-buffer@^1.1.5:
37483763
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
37493764
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
37503765

3766+
is-buffer@^2.0.2:
3767+
version "2.0.4"
3768+
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623"
3769+
integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==
3770+
37513771
is-builtin-module@^1.0.0:
37523772
version "1.0.0"
37533773
resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
@@ -4161,6 +4181,13 @@ lines-and-columns@^1.1.6:
41614181
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
41624182
integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
41634183

4184+
link-module-alias@^1.2.0:
4185+
version "1.2.0"
4186+
resolved "https://registry.yarnpkg.com/link-module-alias/-/link-module-alias-1.2.0.tgz#6a3b7b014cfe18b2759a1222fffce6a40fc120e4"
4187+
integrity sha512-ahPjXepbSVKbahTB6LxR//VHm8HPfI+QQygCH+E82spBY4HR5VPJTvlhKBc9F7muVxnS6C1rRfoPOXAbWO/fyw==
4188+
dependencies:
4189+
chalk "^2.4.1"
4190+
41644191
load-json-file@^1.0.0:
41654192
version "1.1.0"
41664193
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
@@ -4344,6 +4371,16 @@ map-visit@^1.0.0:
43444371
dependencies:
43454372
object-visit "^1.0.0"
43464373

4374+
matestack-ui-core@../../:
4375+
version "0.7.3"
4376+
dependencies:
4377+
axios "^0.18.1"
4378+
link-module-alias "^1.2.0"
4379+
v-runtime-template "^1.5.2"
4380+
vue "^2.5.17"
4381+
vuex "^3.0.1"
4382+
yarn "^1.17.3"
4383+
43474384
md5.js@^1.3.4:
43484385
version "1.3.5"
43494386
resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
@@ -4551,14 +4588,6 @@ minipass@^2.2.1, minipass@^2.3.3:
45514588
safe-buffer "^5.1.2"
45524589
yallist "^3.0.0"
45534590

4554-
minipass@^2.8.6, minipass@^2.9.0:
4555-
version "2.9.0"
4556-
resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
4557-
integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==
4558-
dependencies:
4559-
safe-buffer "^5.1.2"
4560-
yallist "^3.0.0"
4561-
45624591
minipass@^3.0.0, minipass@^3.1.1:
45634592
version "3.1.1"
45644593
resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5"
@@ -4573,13 +4602,6 @@ minizlib@^1.1.0:
45734602
dependencies:
45744603
minipass "^2.2.1"
45754604

4576-
minizlib@^1.2.1:
4577-
version "1.3.3"
4578-
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
4579-
integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==
4580-
dependencies:
4581-
minipass "^2.9.0"
4582-
45834605
mississippi@^3.0.0:
45844606
version "3.0.0"
45854607
resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
@@ -4759,22 +4781,6 @@ node-libs-browser@^2.2.1:
47594781
util "^0.11.0"
47604782
vm-browserify "^1.0.1"
47614783

4762-
node-pre-gyp@*:
4763-
version "0.14.0"
4764-
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83"
4765-
integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==
4766-
dependencies:
4767-
detect-libc "^1.0.2"
4768-
mkdirp "^0.5.1"
4769-
needle "^2.2.1"
4770-
nopt "^4.0.1"
4771-
npm-packlist "^1.1.6"
4772-
npmlog "^4.0.2"
4773-
rc "^1.2.7"
4774-
rimraf "^2.6.1"
4775-
semver "^5.3.0"
4776-
tar "^4.4.2"
4777-
47784784
node-pre-gyp@^0.10.0:
47794785
version "0.10.3"
47804786
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
@@ -7163,19 +7169,6 @@ tar@^4:
71637169
safe-buffer "^5.1.2"
71647170
yallist "^3.0.2"
71657171

7166-
tar@^4.4.2:
7167-
version "4.4.13"
7168-
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
7169-
integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==
7170-
dependencies:
7171-
chownr "^1.1.1"
7172-
fs-minipass "^1.2.5"
7173-
minipass "^2.8.6"
7174-
minizlib "^1.2.1"
7175-
mkdirp "^0.5.0"
7176-
safe-buffer "^5.1.2"
7177-
yallist "^3.0.3"
7178-
71797172
terser-webpack-plugin@^1.4.3:
71807173
version "1.4.3"
71817174
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c"
@@ -7497,6 +7490,11 @@ uuid@^3.0.1, uuid@^3.3.2:
74977490
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
74987491
integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
74997492

7493+
v-runtime-template@^1.5.2:
7494+
version "1.10.0"
7495+
resolved "https://registry.yarnpkg.com/v-runtime-template/-/v-runtime-template-1.10.0.tgz#8ea7066c37cf4be5c701a06ca247e1afda89c4be"
7496+
integrity sha512-WLlq9jUepSfUrMEenw3mn7FDXX6hhbl11JjC1OKhwLzifHzVrY5a696TUHDPyj9jke3GGnR7b+2T3od/RL5cww==
7497+
75007498
75017499
version "2.0.3"
75027500
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe"
@@ -7534,6 +7532,16 @@ vm-browserify@^1.0.1:
75347532
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
75357533
integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
75367534

7535+
vue@^2.5.17:
7536+
version "2.6.11"
7537+
resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.11.tgz#76594d877d4b12234406e84e35275c6d514125c5"
7538+
integrity sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ==
7539+
7540+
vuex@^3.0.1:
7541+
version "3.1.2"
7542+
resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.1.2.tgz#a2863f4005aa73f2587e55c3fadf3f01f69c7d4d"
7543+
integrity sha512-ha3jNLJqNhhrAemDXcmMJMKf1Zu4sybMPr9KxJIuOpVcsDQlTBYLLladav2U+g1AvdYDG5Gs0xBTb0M5pXXYFQ==
7544+
75377545
watchpack@^1.6.0:
75387546
version "1.6.0"
75397547
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"
@@ -7781,11 +7789,6 @@ yallist@^3.0.0, yallist@^3.0.2:
77817789
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9"
77827790
integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=
77837791

7784-
yallist@^3.0.3:
7785-
version "3.1.1"
7786-
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
7787-
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
7788-
77897792
yallist@^4.0.0:
77907793
version "4.0.0"
77917794
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
@@ -7874,3 +7877,8 @@ yargs@^7.0.0:
78747877
which-module "^1.0.0"
78757878
y18n "^3.2.1"
78767879
yargs-parser "^5.0.0"
7880+
7881+
yarn@^1.17.3:
7882+
version "1.22.0"
7883+
resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.0.tgz#acf82906e36bcccd1ccab1cfb73b87509667c881"
7884+
integrity sha512-KMHP/Jq53jZKTY9iTUt3dIVl/be6UPs2INo96+BnZHLKxYNTfwMmlgHTaMWyGZoO74RI4AIFvnWhYrXq2USJkg==
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
describe "Webpacker integration", type: :feature, js: true do
2+
3+
before(:all) do
4+
# Compile webpack javascripts
5+
result = `cd spec/dummy && yarn install && rake webpacker:compile`
6+
raise "rake webpacker:compile has failed." if result.include? "Error"
7+
end
8+
9+
before do
10+
Rails.application.routes.draw do
11+
get '/webpack_test', to: 'webpack_test#my_action', as: 'webpack_test_action'
12+
end
13+
14+
class WebpackTestController < ActionController::Base
15+
layout "application_with_webpack"
16+
17+
include Matestack::Ui::Core::ApplicationHelper
18+
19+
def my_action
20+
end
21+
end
22+
23+
module Pages::WebpackTest
24+
end
25+
26+
class Pages::WebpackTest::MyAction < Matestack::Ui::Page
27+
def response
28+
components {
29+
plain "Hello from matestack with webpacker"
30+
}
31+
end
32+
end
33+
end
34+
35+
after do
36+
Rails.application.reload_routes!
37+
end
38+
39+
specify "Matestack can be used in layouts that use a javascript_pack_tag (webpack) rather than the asset pipeline" do
40+
visit "/webpack_test"
41+
42+
expect(page).to have_text "Hello from matestack with webpacker"
43+
end
44+
45+
specify "MatestackUiCore is exposed to the global namespace" do
46+
visit "/webpack_test"
47+
expect(page).to have_text "Hello from matestack with webpacker"
48+
49+
expect(page.evaluate_script("typeof MatestackUiCore")).to eq "object"
50+
expect(page.evaluate_script("typeof MatestackUiCore")).not_to eq "undefined"
51+
expect(page.evaluate_script("typeof MatestackUiCore.matestackEventHub")).to eq "object"
52+
end
53+
54+
end

0 commit comments

Comments
 (0)