From 7ba020d04d61d11c9c7650b586c60a54570d26d9 Mon Sep 17 00:00:00 2001 From: rebuilt Date: Fri, 15 Oct 2021 23:47:12 +0200 Subject: [PATCH] Add missing javascript dependencies to package.json. Move javascripts files to app/javascript. Add first javascript test. Change test mode --- .prettierrc | 1 + app/assets/javascripts/application.js | 15 ----------- app/assets/javascripts/dashboard.js | 12 --------- app/assets/javascripts/jester.js | 7 ----- app/javascript/application.js | 14 ++++++++++ .../javascripts => javascript}/cable.js | 0 app/javascript/channels/.keep | 0 app/javascript/dashboard.js | 14 ++++++++++ .../javascripts => javascript}/home.js | 5 +++- package.json | 18 ++++++++----- spec/javascript/hello_jest.spec.js | 12 --------- spec/javascript/home.spec.js | 12 +++++++++ yarn.lock | 27 +++++++++++++++++++ 13 files changed, 83 insertions(+), 54 deletions(-) create mode 100644 .prettierrc delete mode 100644 app/assets/javascripts/application.js delete mode 100644 app/assets/javascripts/dashboard.js delete mode 100644 app/assets/javascripts/jester.js rename app/{assets/javascripts => javascript}/cable.js (100%) create mode 100644 app/javascript/channels/.keep create mode 100644 app/javascript/dashboard.js rename app/{assets/javascripts => javascript}/home.js (88%) delete mode 100644 spec/javascript/hello_jest.spec.js create mode 100644 spec/javascript/home.spec.js diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/.prettierrc @@ -0,0 +1 @@ +{} diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js deleted file mode 100644 index dfc21a66..00000000 --- a/app/assets/javascripts/application.js +++ /dev/null @@ -1,15 +0,0 @@ -// This is a manifest file that'll be compiled into application.js, which will include all the files -// listed below. -// -// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, -// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path. -// -// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the -// compiled file. JavaScript code in this file should be added after the last require_* statement. -// -// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details -// about supported directives. -// -//= require bootstrap -//= require turbolinks -//= require_tree . diff --git a/app/assets/javascripts/dashboard.js b/app/assets/javascripts/dashboard.js deleted file mode 100644 index dbcad599..00000000 --- a/app/assets/javascripts/dashboard.js +++ /dev/null @@ -1,12 +0,0 @@ -document.addEventListener("turbolinks:load", function() { - const schoolDropdown = document.querySelector('#select-school'); - if (schoolDropdown) { - document.querySelector('#select-school').addEventListener('change', (event) => { - window.location = event.target.value; - }); - - document.querySelector('#select-district').addEventListener('change', (event) => { - window.location = event.target.value; - }); - } -}); diff --git a/app/assets/javascripts/jester.js b/app/assets/javascripts/jester.js deleted file mode 100644 index 52a9d9b6..00000000 --- a/app/assets/javascripts/jester.js +++ /dev/null @@ -1,7 +0,0 @@ -export default class Jester { - constructor(){} - - hello(){ - return "Hello" - } -} diff --git a/app/javascript/application.js b/app/javascript/application.js index db91aa88..018d4f16 100644 --- a/app/javascript/application.js +++ b/app/javascript/application.js @@ -1 +1,15 @@ // Entry point for the build script in your package.json + + import Rails from "@rails/ujs"; + import Turbolinks from "turbolinks"; + import * as ActiveStorage from "@rails/activestorage"; + // import "channels"; + + Rails.start(); + Turbolinks.start(); + ActiveStorage.start(); +import { initializeListenersForNavDropdowns } from "./dashboard.js"; +import { initializeListenersForHomeDropdowns } from "./home.js"; + +initializeListenersForNavDropdowns(); +initializeListenersForHomeDropdowns(); diff --git a/app/assets/javascripts/cable.js b/app/javascript/cable.js similarity index 100% rename from app/assets/javascripts/cable.js rename to app/javascript/cable.js diff --git a/app/javascript/channels/.keep b/app/javascript/channels/.keep new file mode 100644 index 00000000..e69de29b diff --git a/app/javascript/dashboard.js b/app/javascript/dashboard.js new file mode 100644 index 00000000..74aad336 --- /dev/null +++ b/app/javascript/dashboard.js @@ -0,0 +1,14 @@ +export function initializeListenersForNavDropdowns(){ + document.addEventListener("turbolinks:load", function() { + const schoolDropdown = document.querySelector('#select-school'); + if (schoolDropdown) { + document.querySelector('#select-school').addEventListener('change', (event) => { + window.location = event.target.value; + }); + + document.querySelector('#select-district').addEventListener('change', (event) => { + window.location = event.target.value; + }); + } + }); +} diff --git a/app/assets/javascripts/home.js b/app/javascript/home.js similarity index 88% rename from app/assets/javascripts/home.js rename to app/javascript/home.js index 47d80f08..bbc1476e 100644 --- a/app/assets/javascripts/home.js +++ b/app/javascript/home.js @@ -1,4 +1,5 @@ -document.addEventListener('DOMContentLoaded', () => { +export function initializeListenersForHomeDropdowns(){ +document.addEventListener('turbolinks:load', () => { const districtDropdown = document.querySelector('#district-dropdown'); if (districtDropdown) { districtDropdown.addEventListener('change', event => { @@ -23,3 +24,5 @@ document.addEventListener('DOMContentLoaded', () => { }); } }); +return true; +} diff --git a/package.json b/package.json index 21b951f2..63bd6f4a 100644 --- a/package.json +++ b/package.json @@ -4,22 +4,26 @@ "dependencies": { "@babel/preset-env": "^7.15.8", "babel-preset-es2015": "^6.24.1", - "esbuild": "^0.13.6" + "esbuild": "^0.13.6", + "@rails/actioncable": "^6.0.0", + "@rails/activestorage": "^6.0.0", + "@rails/ujs": "^6.0.0", + "turbolinks": "^5.2.0" }, "scripts": { "build": "esbuild app/javascript/*.* --bundle --outdir=app/assets/builds", - "test": "jest" + "test": "jest --env=jsdom" }, "devDependencies": { "jest": "^27.2.5" }, "jest": { - "roots": [ - "./spec/javascript" + "roots": [ + "./spec/javascript" ], - "moduleDirectories": [ - "node_modules", - "app/assets/javascripts" + "moduleDirectories": [ + "node_modules", + "app/javascript" ] } } diff --git a/spec/javascript/hello_jest.spec.js b/spec/javascript/hello_jest.spec.js deleted file mode 100644 index ff3d5aab..00000000 --- a/spec/javascript/hello_jest.spec.js +++ /dev/null @@ -1,12 +0,0 @@ -import Jester from "jester" - -describe('this test should pass', () => { - test('very first test', () => { - expect(true).toBe(true) - }) - - test('Jester.hello returns greeting', () =>{ - const jester = new Jester() - expect(jester.hello()).toBe("Hello") - }) -}) diff --git a/spec/javascript/home.spec.js b/spec/javascript/home.spec.js new file mode 100644 index 00000000..dd594f00 --- /dev/null +++ b/spec/javascript/home.spec.js @@ -0,0 +1,12 @@ +import {initializeListenersForHomeDropdowns } from "home" + +it("returns true when called", () =>{ + + document.body.innerHTML = + '
' + + ' ' + + ' ' + + '
'; + + expect(initializeListenersForHomeDropdowns()).toBe(true) +}) diff --git a/yarn.lock b/yarn.lock index 60dab103..453f5e6a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1079,6 +1079,23 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" +"@rails/actioncable@^6.0.0": + version "6.1.4" + resolved "https://registry.yarnpkg.com/@rails/actioncable/-/actioncable-6.1.4.tgz#c3c5a9f8302c429af9722b6c50ab48049016d2a3" + integrity sha512-0LmSKJTuo2dL6BQ+9xxLnS9lbkyfz2mBGeBnQ2J7o9Bn0l0q+ZC6VuoZMZZXPvABI4QT7Nfknv5WhfKYL+boew== + +"@rails/activestorage@^6.0.0": + version "6.1.4" + resolved "https://registry.yarnpkg.com/@rails/activestorage/-/activestorage-6.1.4.tgz#7772f539cc846df5f4364fc57ccb48860f9e966e" + integrity sha512-1Tm8uaVBhLTDEG4YaFPvqguhjbUGSPVItm0CfkRpIFZIkybWzFAxatIrk4YVOOxB8ZdXS7GdeYa1qVwjdiDkgQ== + dependencies: + spark-md5 "^3.0.0" + +"@rails/ujs@^6.0.0": + version "6.1.4" + resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-6.1.4.tgz#093d5341595a02089ed309dec40f3c37da7b1b10" + integrity sha512-O3lEzL5DYbxppMdsFSw36e4BHIlfz/xusynwXGv3l2lhSlvah41qviRpsoAlKXxl37nZAqK+UUF5cnGGK45Mfw== + "@sinonjs/commons@^1.7.0": version "1.8.3" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" @@ -3531,6 +3548,11 @@ source-map@^0.7.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +spark-md5@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-3.0.2.tgz#7952c4a30784347abcee73268e473b9c0167e3fc" + integrity sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -3683,6 +3705,11 @@ tr46@^2.1.0: dependencies: punycode "^2.1.1" +turbolinks@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/turbolinks/-/turbolinks-5.2.0.tgz#e6877a55ea5c1cb3bb225f0a4ae303d6d32ff77c" + integrity sha512-pMiez3tyBo6uRHFNNZoYMmrES/IaGgMhQQM+VFF36keryjb5ms0XkVpmKHkfW/4Vy96qiGW3K9bz0tF5sK9bBw== + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"