From 19da287f2009902660f286069ff93ba728aaa8b6 Mon Sep 17 00:00:00 2001 From: dmuneras Date: Thu, 23 Jun 2016 11:49:38 -0500 Subject: [PATCH] Updating ember cli version --- .npmignore | 19 +++---- .travis.yml | 1 + .watchmanconfig | 2 +- LICENSE.md | 2 +- README.md | 4 +- addon/components/place-autocomplete-field.js | 22 +++++--- bower.json | 17 +++--- config/ember-try.js | 52 +++++++++++++------ config/environment.js | 1 + ember-cli-build.js | 7 +-- package.json | 43 +++++++-------- testem.js | 13 +++++ .../google-place-autocomplete-mock.js} | 0 .../place-autocomplete-field-test.js | 24 +++++++++ tests/dummy/app/app.js | 8 +-- tests/dummy/app/index.html | 8 +-- tests/dummy/app/resolver.js | 3 ++ tests/dummy/app/router.js | 2 +- tests/helpers/destroy-app.js | 5 ++ tests/helpers/module-for-acceptance.js | 23 ++++++++ tests/helpers/resolver.js | 4 +- tests/helpers/start-app.js | 6 +-- tests/index.html | 19 +++---- tests/test-helper.js | 16 ------ .../place-autocomplete-field-test.js | 4 +- 25 files changed, 194 insertions(+), 111 deletions(-) create mode 100644 testem.js rename tests/{helpers/google-place-autocomplete-response.js => acceptance/google-place-autocomplete-mock.js} (100%) create mode 100644 tests/dummy/app/resolver.js create mode 100644 tests/helpers/destroy-app.js create mode 100644 tests/helpers/module-for-acceptance.js diff --git a/.npmignore b/.npmignore index d522ca2..fa8b147 100644 --- a/.npmignore +++ b/.npmignore @@ -1,15 +1,16 @@ -bower_components/ -tests/ -tmp/ -dist/ - +/bower_components +/config/ember-try.js +/dist +/tests +/tmp +**/.gitkeep .bowerrc .editorconfig .ember-cli +.gitignore +.jshintrc +.watchmanconfig .travis.yml -.npmignore -**/.gitkeep bower.json ember-cli-build.js -Brocfile.js -testem.json +testem.js diff --git a/.travis.yml b/.travis.yml index 8197d31..ee67302 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,7 @@ cache: env: - EMBER_TRY_SCENARIO=default + - EMBER_TRY_SCENARIO=ember-1.13 - EMBER_TRY_SCENARIO=ember-release - EMBER_TRY_SCENARIO=ember-beta - EMBER_TRY_SCENARIO=ember-canary diff --git a/.watchmanconfig b/.watchmanconfig index 5e9462c..e7834e3 100644 --- a/.watchmanconfig +++ b/.watchmanconfig @@ -1,3 +1,3 @@ { - "ignore_dirs": ["tmp"] + "ignore_dirs": ["tmp", "dist"] } diff --git a/LICENSE.md b/LICENSE.md index 00e9fbb..02000b5 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2015 +Copyright (c) 2016 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/README.md b/README.md index 2e0ed8e..4c59a92 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ In order to use this addon you just have to use the component in your templates. ``` You can supply your own Google API key in `config/environment.js`: - + ```js ENV['place-autocomplete'] = { key: 'AIZ...' @@ -174,7 +174,7 @@ window.google.maps.places = { * Visit your app at http://localhost:4200. ## Running Tests - +* `npm test` (Runs `ember try:testall` to test your addon against multiple Ember versions) * `ember test` * `ember test --server` diff --git a/addon/components/place-autocomplete-field.js b/addon/components/place-autocomplete-field.js index 2398734..ece3a62 100644 --- a/addon/components/place-autocomplete-field.js +++ b/addon/components/place-autocomplete-field.js @@ -1,7 +1,7 @@ import Ember from 'ember'; import layout from '../templates/components/place-autocomplete-field'; -const { Component, isEmpty, isPresent, typeOf, isEqual } = Ember; +const { Component, isEmpty, isPresent, typeOf, isEqual, run } = Ember; export default Component.extend({ layout: layout, @@ -13,10 +13,15 @@ export default Component.extend({ didInsertElement() { this._super(...arguments); + run.scheduleOnce('afterRender', this, 'setupComponent'); + }, + + setupComponent() { this.getAutocomplete(); this.get('autocomplete').addListener('place_changed', this.placeChanged.bind(this)); }, + willDestroy() { if (isPresent(this.get('autocomplete'))) { let google = this.get('google') || window.google; @@ -24,22 +29,23 @@ export default Component.extend({ } }, - getAutocomplete(){ + getAutocomplete() { if(isEmpty(this.get('autocomplete'))){ let inputElement = document.getElementById(this.elementId).getElementsByTagName('input')[0], - google = this.get('google') || window.google; //TODO: check how to use the inyected google object - this.set('autocomplete', new google.maps.places.Autocomplete(inputElement, - { types: this._typesToArray(), componentRestrictions: this.get('restrictions') })); + google = this.get('google') || window.google, //TODO: check how to use the inyected google object + autocomplete = new google.maps.places.Autocomplete(inputElement, { types: this._typesToArray(), componentRestrictions: this.get('restrictions') }); + this.set('autocomplete', autocomplete); } }, placeChanged() { - this._callCallback('placeChangedCallback'); + let place = this.get('autocomplete').getPlace(); + this._callCallback('placeChangedCallback', place); + this.set('value', place.formatted_address); }, - _callCallback(callback) { + _callCallback(callback, place) { let callbackFn = this.attrs[callback]; - let place = this.get('autocomplete').getPlace(); if (isEqual(typeOf(callbackFn), 'function')) { callbackFn(place); } else { diff --git a/bower.json b/bower.json index 2a7fc0a..a4360dc 100644 --- a/bower.json +++ b/bower.json @@ -1,14 +1,17 @@ { "name": "ember-place-autocomplete", "dependencies": { - "ember": "~2.2.0", - "ember-cli-shims": "0.0.6", - "ember-cli-test-loader": "0.2.1", - "ember-data": "~2.2.0", + "ember": "~2.5.0", + "ember-cli-shims": "0.1.1", + "ember-cli-test-loader": "0.2.2", "ember-load-initializers": "0.1.7", "ember-resolver": "~0.1.20", - "jquery": "^1.11.3", - "loader.js": "3.4.0", - "ember-mocha": "~0.8.0" + "jquery": "1.11.3", + "loader.js": "ember-cli/loader.js#3.4.0", + "qunit": "~1.20.0", + "mocha": "~2.2.4", + "chai": "~2.3.0", + "ember-mocha-adapter": "~0.3.1", + "bind-polyfill": "^1.0.0" } } diff --git a/config/ember-try.js b/config/ember-try.js index 83dab0f..014f603 100644 --- a/config/ember-try.js +++ b/config/ember-try.js @@ -1,34 +1,54 @@ +/*jshint node:true*/ module.exports = { scenarios: [ { name: 'default', - dependencies: { } + bower: { + dependencies: { } + } + }, + { + name: 'ember-1.13', + bower: { + dependencies: { + 'ember': '~1.13.0' + }, + resolutions: { + 'ember': '~1.13.0' + } + } }, { name: 'ember-release', - dependencies: { - 'ember': 'components/ember#release' - }, - resolutions: { - 'ember': 'release' + bower: { + dependencies: { + 'ember': 'components/ember#release' + }, + resolutions: { + 'ember': 'release' + } } }, { name: 'ember-beta', - dependencies: { - 'ember': 'components/ember#beta' - }, - resolutions: { - 'ember': 'beta' + bower: { + dependencies: { + 'ember': 'components/ember#beta' + }, + resolutions: { + 'ember': 'beta' + } } }, { name: 'ember-canary', - dependencies: { - 'ember': 'components/ember#canary' - }, - resolutions: { - 'ember': 'canary' + bower: { + dependencies: { + 'ember': 'components/ember#canary' + }, + resolutions: { + 'ember': 'canary' + } } } ] diff --git a/config/environment.js b/config/environment.js index 0dfaed4..28a787b 100644 --- a/config/environment.js +++ b/config/environment.js @@ -1,3 +1,4 @@ +/*jshint node:true*/ 'use strict'; module.exports = function(/* environment, appConfig */) { diff --git a/ember-cli-build.js b/ember-cli-build.js index d37d64c..4ac3913 100644 --- a/ember-cli-build.js +++ b/ember-cli-build.js @@ -1,13 +1,14 @@ +/*jshint node:true*/ /* global require, module */ -var EmberApp = require('ember-cli/lib/broccoli/ember-addon'); +var EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); module.exports = function(defaults) { - var app = new EmberApp(defaults, { + var app = new EmberAddon(defaults, { // Add options here }); /* - This build file specifes the options for the dummy test app of this + This build file specifies the options for the dummy test app of this addon, located in `/tests/dummy` This build file does *not* influence how the addon or the app using it behave. You most likely want to be modifying `./index.js` or app's build file diff --git a/package.json b/package.json index e421578..cf6416c 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "scripts": { "build": "ember build", "start": "ember server", - "test": "ember try:testall" + "test": "ember try:each" }, "repository": "https://github.com/dmuneras/ember-place-autocomplete", "engines": { @@ -18,35 +18,32 @@ "author": "Daniel Múnera Sánchez", "license": "MIT", "devDependencies": { - "broccoli-asset-rev": "^2.1.2", - "ember-cli": "1.13.13", + "broccoli-asset-rev": "^2.4.2", + "ember-ajax": "0.7.1", + "ember-cli": "2.5.0", "ember-cli-app-version": "^1.0.0", - "ember-cli-content-security-policy": "0.4.0", - "ember-cli-dependency-checker": "^1.0.1", - "ember-cli-htmlbars-inline-precompile": "0.3.1", - "ember-cli-ic-ajax": "0.2.4", - "ember-cli-inject-live-reload": "^1.3.1", + "ember-cli-dependency-checker": "^1.2.0", + "ember-cli-htmlbars-inline-precompile": "^0.3.1", + "ember-cli-inject-live-reload": "^1.4.0", + "ember-cli-jshint": "^1.0.0", + "ember-cli-mocha": "0.10.4", "ember-cli-release": "0.2.8", - "ember-cli-sri": "^1.2.0", + "ember-cli-sri": "^2.1.0", "ember-cli-uglify": "^1.2.0", - "ember-data": "~2.2.0", - "ember-disable-proxy-controllers": "^1.0.0", - "ember-export-application-global": "^1.0.3", - "ember-disable-prototype-extensions": "^1.0.0", - "ember-try": "0.0.8", - "ember-cli-mocha": "0.9.8" + "ember-data": "^2.5.0", + "ember-disable-prototype-extensions": "^1.1.0", + "ember-export-application-global": "^1.0.5", + "ember-load-initializers": "^0.5.1", + "ember-resolver": "^2.0.3", + "ember-try": "0.2.4", + "loader.js": "^4.0.1" }, "keywords": [ - "ember-addon", - "google places api", - "autocomplete", - "ember", - "address", - "place" + "ember-addon" ], "dependencies": { - "ember-cli-babel": "^5.1.3", - "ember-cli-htmlbars": "^1.0.1" + "ember-cli-babel": "^5.1.6", + "ember-cli-htmlbars": "^1.0.3" }, "ember-addon": { "configPath": "tests/dummy/config" diff --git a/testem.js b/testem.js new file mode 100644 index 0000000..26044b2 --- /dev/null +++ b/testem.js @@ -0,0 +1,13 @@ +/*jshint node:true*/ +module.exports = { + "framework": "qunit", + "test_page": "tests/index.html?hidepassed", + "disable_watching": true, + "launch_in_ci": [ + "PhantomJS" + ], + "launch_in_dev": [ + "PhantomJS", + "Chrome" + ] +}; diff --git a/tests/helpers/google-place-autocomplete-response.js b/tests/acceptance/google-place-autocomplete-mock.js similarity index 100% rename from tests/helpers/google-place-autocomplete-response.js rename to tests/acceptance/google-place-autocomplete-mock.js diff --git a/tests/acceptance/place-autocomplete-field-test.js b/tests/acceptance/place-autocomplete-field-test.js index 046abb8..c5cafed 100644 --- a/tests/acceptance/place-autocomplete-field-test.js +++ b/tests/acceptance/place-autocomplete-field-test.js @@ -9,12 +9,36 @@ import { expect, assert } from 'chai'; import Ember from 'ember'; import startApp from '../helpers/start-app'; +import GooglePlaceAutocompleteMock from './google-place-autocomplete-mock'; describe('Acceptance : place autocomplete', function() { var application; beforeEach(function() { + + // Mock only google places + window.google.maps.places = { + Autocomplete() { + return { + addListener(event, f) { + f.call(); + }, + getPlace() { + return GooglePlaceAutocompleteMock; + } + }; + } + }; application = startApp(); + + // PhantomJS doesn't support bind yet + // see https://github.com/ariya/phantomjs/issues/10522 + Function.prototype.bind = Function.prototype.bind || function (thisp) { + let fn = this; + return function() { + return fn.apply(thisp, arguments); + }; + }; }); afterEach(function() { diff --git a/tests/dummy/app/app.js b/tests/dummy/app/app.js index 8d66b95..831ad61 100644 --- a/tests/dummy/app/app.js +++ b/tests/dummy/app/app.js @@ -1,16 +1,16 @@ import Ember from 'ember'; -import Resolver from 'ember/resolver'; -import loadInitializers from 'ember/load-initializers'; +import Resolver from './resolver'; +import loadInitializers from 'ember-load-initializers'; import config from './config/environment'; -var App; +let App; Ember.MODEL_FACTORY_INJECTIONS = true; App = Ember.Application.extend({ modulePrefix: config.modulePrefix, podModulePrefix: config.podModulePrefix, - Resolver: Resolver + Resolver }); loadInitializers(App, config.modulePrefix); diff --git a/tests/dummy/app/index.html b/tests/dummy/app/index.html index 1c49d36..c9b4327 100644 --- a/tests/dummy/app/index.html +++ b/tests/dummy/app/index.html @@ -7,19 +7,19 @@ - {{content-for 'head'}} + {{content-for "head"}} - {{content-for 'head-footer'}} + {{content-for "head-footer"}} - {{content-for 'body'}} + {{content-for "body"}} - {{content-for 'body-footer'}} + {{content-for "body-footer"}} diff --git a/tests/dummy/app/resolver.js b/tests/dummy/app/resolver.js new file mode 100644 index 0000000..2fb563d --- /dev/null +++ b/tests/dummy/app/resolver.js @@ -0,0 +1,3 @@ +import Resolver from 'ember-resolver'; + +export default Resolver; diff --git a/tests/dummy/app/router.js b/tests/dummy/app/router.js index cef554b..3bba78e 100644 --- a/tests/dummy/app/router.js +++ b/tests/dummy/app/router.js @@ -1,7 +1,7 @@ import Ember from 'ember'; import config from './config/environment'; -var Router = Ember.Router.extend({ +const Router = Ember.Router.extend({ location: config.locationType }); diff --git a/tests/helpers/destroy-app.js b/tests/helpers/destroy-app.js new file mode 100644 index 0000000..c3d4d1a --- /dev/null +++ b/tests/helpers/destroy-app.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; + +export default function destroyApp(application) { + Ember.run(application, 'destroy'); +} diff --git a/tests/helpers/module-for-acceptance.js b/tests/helpers/module-for-acceptance.js new file mode 100644 index 0000000..8c8b74e --- /dev/null +++ b/tests/helpers/module-for-acceptance.js @@ -0,0 +1,23 @@ +import { module } from 'qunit'; +import startApp from '../helpers/start-app'; +import destroyApp from '../helpers/destroy-app'; + +export default function(name, options = {}) { + module(name, { + beforeEach() { + this.application = startApp(); + + if (options.beforeEach) { + options.beforeEach.apply(this, arguments); + } + }, + + afterEach() { + if (options.afterEach) { + options.afterEach.apply(this, arguments); + } + + destroyApp(this.application); + } + }); +} diff --git a/tests/helpers/resolver.js b/tests/helpers/resolver.js index 28f4ece..b208d38 100644 --- a/tests/helpers/resolver.js +++ b/tests/helpers/resolver.js @@ -1,7 +1,7 @@ -import Resolver from 'ember/resolver'; +import Resolver from '../../resolver'; import config from '../../config/environment'; -var resolver = Resolver.create(); +const resolver = Resolver.create(); resolver.namespace = { modulePrefix: config.modulePrefix, diff --git a/tests/helpers/start-app.js b/tests/helpers/start-app.js index 0f7aab1..e098f1d 100644 --- a/tests/helpers/start-app.js +++ b/tests/helpers/start-app.js @@ -3,12 +3,12 @@ import Application from '../../app'; import config from '../../config/environment'; export default function startApp(attrs) { - var application; + let application; - var attributes = Ember.merge({}, config.APP); + let attributes = Ember.merge({}, config.APP); attributes = Ember.merge(attributes, attrs); // use defaults, but you can override; - Ember.run(function() { + Ember.run(() => { application = Application.create(attributes); application.setupForTesting(); application.injectTestHelpers(); diff --git a/tests/index.html b/tests/index.html index 8fea6fe..64cb47e 100644 --- a/tests/index.html +++ b/tests/index.html @@ -7,27 +7,28 @@ - {{content-for 'head'}} - {{content-for 'test-head'}} + {{content-for "head"}} + {{content-for "test-head"}} - {{content-for 'head-footer'}} - {{content-for 'test-head-footer'}} + {{content-for "head-footer"}} + {{content-for "test-head-footer"}} + {{content-for "body"}} + {{content-for "test-body"}} - {{content-for 'body'}} - {{content-for 'test-body'}} + - + - {{content-for 'body-footer'}} - {{content-for 'test-body-footer'}} + {{content-for "body-footer"}} + {{content-for "test-body-footer"}} diff --git a/tests/test-helper.js b/tests/test-helper.js index f9d4ce7..bbe42fa 100644 --- a/tests/test-helper.js +++ b/tests/test-helper.js @@ -1,20 +1,4 @@ import resolver from './helpers/resolver'; import { setResolver } from 'ember-mocha'; -import { GooglePlaceAutocompleteResponse } from './helpers/google-place-autocomplete-response'; setResolver(resolver); - -// Mock only google places -window.google.maps.places = { - Autocomplete: function() { - return { - addListener: function(event, f) { - f.call(); - }, - - getPlace: function() { - return GooglePlaceAutocompleteResponse; - } - }; - } -}; \ No newline at end of file diff --git a/tests/unit/components/place-autocomplete-field-test.js b/tests/unit/components/place-autocomplete-field-test.js index f39105b..31ea211 100644 --- a/tests/unit/components/place-autocomplete-field-test.js +++ b/tests/unit/components/place-autocomplete-field-test.js @@ -30,12 +30,12 @@ describeComponent( expect(component.get('label')).to.equal('address fake label'); }); - it("accetps 'value' option", function() { + it("accetps 'value' option and updates with google autocomplete response", function() { var component = this.subject(); var fakeModel = { address: 'fake address'}; component.set('value',fakeModel.address); this.render(); - expect(component.get('value')).to.equal('fake address'); + expect(component.get('value')).to.equal('Cra. 65, Medellín, Antioquia, Colombia'); }); it('converts types option to array', function(){