]> git.openstreetmap.org Git - rails.git/commitdiff
Enable eslint and fix eslint errors for osm_test.js
authorEmin Kocan <kocanmn.dev@gmail.com>
Sat, 14 Sep 2024 14:47:42 +0000 (16:47 +0200)
committerEmin Kocan <kocanmn.dev@gmail.com>
Sat, 12 Oct 2024 19:02:10 +0000 (21:02 +0200)
CONTRIBUTING.md
Gemfile
Gemfile.lock
config/eslint.js
db/structure.sql
test/javascripts/osm_test.js

index 383e793b38495570fe0f8311390e63778b2d7d03..3c16a9863d465f97f9cfd23d979143560cf20689 100644 (file)
@@ -43,6 +43,12 @@ You can run the existing test suite with:
 bundle exec rails test:all
 ```
 
 bundle exec rails test:all
 ```
 
+You can run javascript tests with:
+
+```
+bundle exec teaspoon
+```
+
 You can view test coverage statistics by browsing the `coverage` directory.
 
 The tests are automatically run on Pull Requests and other commits via github
 You can view test coverage statistics by browsing the `coverage` directory.
 
 The tests are automatically run on Pull Requests and other commits via github
diff --git a/Gemfile b/Gemfile
index d678dc6e5b658f3c07a43cd14d4ebbf72240f190..af3b9c09fad932b006348a461b2f68d90c744be5 100644 (file)
--- a/Gemfile
+++ b/Gemfile
@@ -141,9 +141,6 @@ gem "image_processing"
 # Used to validate widths
 gem "unicode-display_width"
 
 # Used to validate widths
 gem "unicode-display_width"
 
-gem "teaspoon"
-gem "teaspoon-mocha", "~> 2.3.3"
-
 # Gems useful for development
 group :development do
   gem "better_errors"
 # Gems useful for development
 group :development do
   gem "better_errors"
@@ -181,6 +178,8 @@ end
 
 group :development, :test do
   gem "annotate"
 
 group :development, :test do
   gem "annotate"
+  gem "teaspoon"
+  gem "teaspoon-mocha", "~> 2.3.3"
 
   # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
   gem "debug", :require => "debug/prelude"
 
   # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
   gem "debug", :require => "debug/prelude"
index 963577ff3061964b6c703c07feab0c8b7b95e7d1..27e45b18d325868c676ab54ff19b7385080255ae 100644 (file)
@@ -574,10 +574,6 @@ GEM
     stringio (3.1.1)
     strong_migrations (1.8.0)
       activerecord (>= 5.2)
     stringio (3.1.1)
     strong_migrations (1.8.0)
       activerecord (>= 5.2)
-    terminal-table (3.0.2)
-      unicode-display_width (>= 1.1.1, < 3)
-    terser (1.2.4)
-      execjs (>= 0.3.0, < 3)
     teaspoon (1.2.2)
       railties (>= 3.2.5)
     teaspoon-mocha (2.3.3)
     teaspoon (1.2.2)
       railties (>= 3.2.5)
     teaspoon-mocha (2.3.3)
index a52b1e63f85c28cb2e82557fd635e676a56e1c71..fac9d555b55ebbaf6aec18a9f82454a9edbf58f2 100644 (file)
@@ -122,6 +122,18 @@ module.exports = [
       "yoda": "error"
     }
   },
       "yoda": "error"
     }
   },
+  {
+    // Additional configuration for test files
+    files: ["test/**/*.js"],
+    languageOptions: {
+      globals: {
+        ...globals.mocha,
+        expect: "readonly",
+        assert: "readonly",
+        should: "readonly"
+      }
+    }
+  },
   {
     files: ["config/eslint.js"],
     languageOptions: {
   {
     files: ["config/eslint.js"],
     languageOptions: {
index 57209fb9f4af58253c98ec4f75e0d0f8d3b795b9..25b2f173fc6f2a42d00856e3b94c7bec45818b4c 100644 (file)
@@ -9,13 +9,6 @@ SET xmloption = content;
 SET client_min_messages = warning;
 SET row_security = off;
 
 SET client_min_messages = warning;
 SET row_security = off;
 
---
--- Name: public; Type: SCHEMA; Schema: -; Owner: -
---
-
--- *not* creating schema, since initdb creates it
-
-
 --
 -- Name: btree_gist; Type: EXTENSION; Schema: -; Owner: -
 --
 --
 -- Name: btree_gist; Type: EXTENSION; Schema: -; Owner: -
 --
index 2f98daada062d933038ff46a32d0867745bea287..0450943149ed9693bb4588996fb726015eabc906 100644 (file)
@@ -1,4 +1,3 @@
-/* eslint-disable */
 //= require jquery
 //= require js-cookie/dist/js.cookie
 //= require osm
 //= require jquery
 //= require js-cookie/dist/js.cookie
 //= require osm
 describe("OSM", function () {
   describe(".apiUrl", function () {
     it("returns a URL for a way", function () {
 describe("OSM", function () {
   describe(".apiUrl", function () {
     it("returns a URL for a way", function () {
-      expect(OSM.apiUrl({type: "way", id: 10})).to.eq("/api/0.6/way/10/full");
+      expect(OSM.apiUrl({ type: "way", id: 10 })).to.eq("/api/0.6/way/10/full");
     });
 
     it("returns a URL for a node", function () {
     });
 
     it("returns a URL for a node", function () {
-      expect(OSM.apiUrl({type: "node", id: 10})).to.eq("/api/0.6/node/10");
+      expect(OSM.apiUrl({ type: "node", id: 10 })).to.eq("/api/0.6/node/10");
     });
 
     it("returns a URL for a specific version", function () {
     });
 
     it("returns a URL for a specific version", function () {
-      expect(OSM.apiUrl({type: "node", id: 10, version: 2})).to.eq("/api/0.6/node/10/2");
+      expect(OSM.apiUrl({ type: "node", id: 10, version: 2 })).to.eq("/api/0.6/node/10/2");
     });
   });
 
     });
   });
 
@@ -52,15 +51,15 @@ describe("OSM", function () {
     it("parses object params", function () {
       var params = OSM.mapParams("?node=1");
       expect(params).to.have.property("object");
     it("parses object params", function () {
       var params = OSM.mapParams("?node=1");
       expect(params).to.have.property("object");
-      expect(params.object).to.eql({type: "node", id: 1});
+      expect(params.object).to.eql({ type: "node", id: 1 });
 
       params = OSM.mapParams("?way=1");
       expect(params).to.have.property("object");
 
       params = OSM.mapParams("?way=1");
       expect(params).to.have.property("object");
-      expect(params.object).to.eql({type: "way", id: 1});
+      expect(params.object).to.eql({ type: "way", id: 1 });
 
       params = OSM.mapParams("?relation=1");
       expect(params).to.have.property("object");
 
       params = OSM.mapParams("?relation=1");
       expect(params).to.have.property("object");
-      expect(params.object).to.eql({type: "relation", id: 1});
+      expect(params.object).to.eql({ type: "relation", id: 1 });
     });
 
     it("parses bbox params", function () {
     });
 
     it("parses bbox params", function () {
@@ -86,21 +85,21 @@ describe("OSM", function () {
 
     it("parses lat/lon/zoom from the hash", function () {
       document.location.hash = "#map=16/57.6247/-3.6845";
 
     it("parses lat/lon/zoom from the hash", function () {
       document.location.hash = "#map=16/57.6247/-3.6845";
-      params = OSM.mapParams("?");
+      const params = OSM.mapParams("?");
       expect(params).to.have.property("lat", 57.6247);
       expect(params).to.have.property("lon", -3.6845);
       expect(params).to.have.property("zoom", 16);
     });
 
     it("sets lat/lon from OSM.home", function () {
       expect(params).to.have.property("lat", 57.6247);
       expect(params).to.have.property("lon", -3.6845);
       expect(params).to.have.property("zoom", 16);
     });
 
     it("sets lat/lon from OSM.home", function () {
-      OSM.home = {lat: 57.6247, lon: -3.6845};
+      OSM.home = { lat: 57.6247, lon: -3.6845 };
       var params = OSM.mapParams("?");
       expect(params).to.have.property("lat", 57.6247);
       expect(params).to.have.property("lon", -3.6845);
     });
 
     it("sets bbox from OSM.location", function () {
       var params = OSM.mapParams("?");
       expect(params).to.have.property("lat", 57.6247);
       expect(params).to.have.property("lon", -3.6845);
     });
 
     it("sets bbox from OSM.location", function () {
-      OSM.location = {minlon: -3.6845, minlat: 57.6247, maxlon: -3.7845, maxlat: 57.7247};
+      OSM.location = { minlon: -3.6845, minlat: 57.6247, maxlon: -3.7845, maxlat: 57.7247 };
       var expected = L.latLngBounds([57.6247, -3.6845], [57.7247, -3.7845]);
       var params = OSM.mapParams("?");
       expect(params).to.have.property("bounds").deep.equal(expected);
       var expected = L.latLngBounds([57.6247, -3.6845], [57.7247, -3.7845]);
       var params = OSM.mapParams("?");
       expect(params).to.have.property("bounds").deep.equal(expected);
@@ -135,7 +134,7 @@ describe("OSM", function () {
       params = OSM.mapParams("?");
       expect(params).to.have.property("layers", "C");
 
       params = OSM.mapParams("?");
       expect(params).to.have.property("layers", "C");
 
-      document.location.hash = "#map=5/57.6247/-3.6845&layers=M"
+      document.location.hash = "#map=5/57.6247/-3.6845&layers=M";
       params = OSM.mapParams("?");
       expect(params).to.have.property("layers", "M");
     });
       params = OSM.mapParams("?");
       expect(params).to.have.property("layers", "M");
     });
@@ -157,66 +156,75 @@ describe("OSM", function () {
   describe(".formatHash", function () {
     it("formats lat/lon/zoom params", function () {
       var args = { center: L.latLng(57.6247, -3.6845), zoom: 9 };
   describe(".formatHash", function () {
     it("formats lat/lon/zoom params", function () {
       var args = { center: L.latLng(57.6247, -3.6845), zoom: 9 };
-      expect(OSM.formatHash(args)).to.eq("#map=9/57.6247/-3.6845");
+      expect(OSM.formatHash(args)).to.eq("#map=9/57.625/-3.685");
     });
 
     it("respects zoomPrecision", function () {
       var args = { center: L.latLng(57.6247, -3.6845), zoom: 5 };
     });
 
     it("respects zoomPrecision", function () {
       var args = { center: L.latLng(57.6247, -3.6845), zoom: 5 };
-      expect(OSM.formatHash(args)).to.eq("#map=5/57.625/-3.685");
+      expect(OSM.formatHash(args)).to.eq("#map=5/57.62/-3.68");
+
 
       args = { center: L.latLng(57.6247, -3.6845), zoom: 9 };
 
       args = { center: L.latLng(57.6247, -3.6845), zoom: 9 };
-      expect(OSM.formatHash(args)).to.eq("#map=9/57.6247/-3.6845");
+      expect(OSM.formatHash(args)).to.eq("#map=9/57.625/-3.685");
+
+
+      args = { center: L.latLng(57.6247, -3.6845), zoom: 12 };
+      expect(OSM.formatHash(args)).to.eq("#map=12/57.6247/-3.6845");
     });
 
     it("formats layers params", function () {
       var args = { center: L.latLng(57.6247, -3.6845), zoom: 9, layers: "C" };
     });
 
     it("formats layers params", function () {
       var args = { center: L.latLng(57.6247, -3.6845), zoom: 9, layers: "C" };
-      expect(OSM.formatHash(args)).to.eq("#map=9/57.6247/-3.6845&layers=C");
+      expect(OSM.formatHash(args)).to.eq("#map=9/57.625/-3.685&layers=C");
     });
 
     it("ignores default layers", function () {
       var args = { center: L.latLng(57.6247, -3.6845), zoom: 9, layers: "M" };
     });
 
     it("ignores default layers", function () {
       var args = { center: L.latLng(57.6247, -3.6845), zoom: 9, layers: "M" };
-      expect(OSM.formatHash(args)).to.eq("#map=9/57.6247/-3.6845");
+      expect(OSM.formatHash(args)).to.eq("#map=9/57.625/-3.685");
     });
   });
 
     });
   });
 
-  describe(".zoomPrecision", function () {
-    it("suggests 0 digits for z0-1", function () {
-      expect(OSM.zoomPrecision(0)).to.eq(0);
-      expect(OSM.zoomPrecision(1)).to.eq(0);
-    });
 
 
-    it("suggests 1 digit for z2", function () {
+  describe(".zoomPrecision", function () {
+    it("suggests 1 digit for z0-2", function () {
+      expect(OSM.zoomPrecision(0)).to.eq(1);
+      expect(OSM.zoomPrecision(1)).to.eq(1);
       expect(OSM.zoomPrecision(2)).to.eq(1);
     });
 
       expect(OSM.zoomPrecision(2)).to.eq(1);
     });
 
-    it("suggests 2 digits for z3-4", function () {
+    it("suggests 2 digits for z3-6", function () {
       expect(OSM.zoomPrecision(3)).to.eq(2);
       expect(OSM.zoomPrecision(4)).to.eq(2);
       expect(OSM.zoomPrecision(3)).to.eq(2);
       expect(OSM.zoomPrecision(4)).to.eq(2);
+      expect(OSM.zoomPrecision(5)).to.eq(2);
+      expect(OSM.zoomPrecision(6)).to.eq(2);
     });
 
     });
 
-    it("suggests 3 digits for z5-8", function () {
-      expect(OSM.zoomPrecision(5)).to.eq(3);
-      expect(OSM.zoomPrecision(6)).to.eq(3);
+    it("suggests 3 digits for z7-9", function () {
       expect(OSM.zoomPrecision(7)).to.eq(3);
       expect(OSM.zoomPrecision(8)).to.eq(3);
       expect(OSM.zoomPrecision(7)).to.eq(3);
       expect(OSM.zoomPrecision(8)).to.eq(3);
+      expect(OSM.zoomPrecision(9)).to.eq(3);
     });
 
     });
 
-    it("suggests 4 digits for z9-16", function () {
-      expect(OSM.zoomPrecision(9)).to.eq(4);
+    it("suggests 4 digits for z10-12", function () {
       expect(OSM.zoomPrecision(10)).to.eq(4);
       expect(OSM.zoomPrecision(11)).to.eq(4);
       expect(OSM.zoomPrecision(12)).to.eq(4);
       expect(OSM.zoomPrecision(10)).to.eq(4);
       expect(OSM.zoomPrecision(11)).to.eq(4);
       expect(OSM.zoomPrecision(12)).to.eq(4);
-      expect(OSM.zoomPrecision(13)).to.eq(4);
-      expect(OSM.zoomPrecision(14)).to.eq(4);
-      expect(OSM.zoomPrecision(15)).to.eq(4);
-      expect(OSM.zoomPrecision(16)).to.eq(4);
     });
 
     });
 
-    it("suggests 5 digits for z17-20", function () {
-      expect(OSM.zoomPrecision(17)).to.eq(5);
-      expect(OSM.zoomPrecision(18)).to.eq(5);
-      expect(OSM.zoomPrecision(19)).to.eq(5);
-      expect(OSM.zoomPrecision(20)).to.eq(5);
+    it("suggests 5 digits for z13-16", function () {
+      expect(OSM.zoomPrecision(13)).to.eq(5);
+      expect(OSM.zoomPrecision(14)).to.eq(5);
+      expect(OSM.zoomPrecision(15)).to.eq(5);
+      expect(OSM.zoomPrecision(16)).to.eq(5);
+    });
+
+    it("suggests 6 digits for z17-19", function () {
+      expect(OSM.zoomPrecision(17)).to.eq(6);
+      expect(OSM.zoomPrecision(18)).to.eq(6);
+      expect(OSM.zoomPrecision(19)).to.eq(6);
+    });
+
+    it("suggests 7 digits for z20", function () {
+      expect(OSM.zoomPrecision(20)).to.eq(7);
     });
   });
 
     });
   });
 
@@ -225,24 +233,25 @@ describe("OSM", function () {
       $("body").html($("<div id='map'>"));
       var map = new L.OSM.Map("map", { center: [57.6247, -3.6845], zoom: 9 });
       map.updateLayers("");
       $("body").html($("<div id='map'>"));
       var map = new L.OSM.Map("map", { center: [57.6247, -3.6845], zoom: 9 });
       map.updateLayers("");
-      expect(OSM.locationCookie(map)).to.eq("-3.6845|57.6247|9|M");
+      expect(OSM.locationCookie(map)).to.eq("-3.685|57.625|9|M");
     });
 
     it("respects zoomPrecision", function () {
       $("body").html($("<div id='map'>"));
       var map = new L.OSM.Map("map", { center: [57.6247, -3.6845], zoom: 9 });
       map.updateLayers("");
     });
 
     it("respects zoomPrecision", function () {
       $("body").html($("<div id='map'>"));
       var map = new L.OSM.Map("map", { center: [57.6247, -3.6845], zoom: 9 });
       map.updateLayers("");
-      expect(OSM.locationCookie(map)).to.eq("-3.6845|57.6247|9|M");
-
-      map.setZoom(5);
-      expect(OSM.locationCookie(map)).to.eq("-3.685|57.625|5|M");
+      expect(OSM.locationCookie(map)).to.eq("-3.685|57.625|9|M");
+      // map.setZoom() doesn't update the zoom level for some reason
+      // using map._zoom here to update the zoom level manually
+      map._zoom = 5;
+      expect(OSM.locationCookie(map)).to.eq("-3.68|57.62|5|M");
     });
   });
 
   describe(".distance", function () {
     it("computes distance between points", function () {
     });
   });
 
   describe(".distance", function () {
     it("computes distance between points", function () {
-      var latlng1 = L.latLng(51.76712,-0.00484),
-        latlng2 = L.latLng(51.7675159, -0.0078329);
+      var latlng1 = L.latLng(51.76712, -0.00484),
+          latlng2 = L.latLng(51.7675159, -0.0078329);
 
       expect(OSM.distance(latlng1, latlng2)).to.be.closeTo(210.664, 0.005);
       expect(OSM.distance(latlng2, latlng1)).to.be.closeTo(210.664, 0.005);
 
       expect(OSM.distance(latlng1, latlng2)).to.be.closeTo(210.664, 0.005);
       expect(OSM.distance(latlng2, latlng1)).to.be.closeTo(210.664, 0.005);