mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
refactor(config): get/set/settings and unit tests
This commit is contained in:
@@ -7,9 +7,8 @@ import * as dom from '../util/dom';
|
||||
*/
|
||||
export class IonicPlatform {
|
||||
|
||||
constructor() {
|
||||
this._settings = {};
|
||||
this._platforms = [];
|
||||
constructor(platforms=[]) {
|
||||
this._platforms = platforms;
|
||||
this._versions = {};
|
||||
this._onResizes = [];
|
||||
|
||||
@@ -283,12 +282,12 @@ export class IonicPlatform {
|
||||
* TODO
|
||||
* @param {TODO} config TODO
|
||||
*/
|
||||
load(config) {
|
||||
load(platformOverride) {
|
||||
let rootPlatformNode = null;
|
||||
let engineNode = null;
|
||||
let self = this;
|
||||
|
||||
this.platformOverride = config.setting('platform');
|
||||
this.platformOverride = platformOverride;
|
||||
|
||||
// figure out the most specific platform and active engine
|
||||
let tmpPlatform = null;
|
||||
@@ -359,9 +358,6 @@ export class IonicPlatform {
|
||||
// the last one in the array the most important
|
||||
this._platforms.push(platformNode.name());
|
||||
|
||||
// copy default platform settings into this platform settings obj
|
||||
this._settings[platformNode.name()] = util.extend({}, platformNode.settings());
|
||||
|
||||
// get the platforms version if a version parser was provided
|
||||
this._versions[platformNode.name()] = platformNode.version(this);
|
||||
|
||||
@@ -394,13 +390,6 @@ export class IonicPlatform {
|
||||
return rootNode;
|
||||
}
|
||||
|
||||
settings(val) {
|
||||
if (arguments.length) {
|
||||
this._settings = val;
|
||||
}
|
||||
return this._settings;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function insertSuperset(platformNode) {
|
||||
|
||||
@@ -1,13 +1,21 @@
|
||||
import {IonicConfig, IonicPlatform} from 'ionic/ionic';
|
||||
import {IonicPlatform} from 'ionic/ionic';
|
||||
|
||||
export function run() {
|
||||
|
||||
it('should set core as the fallback', () => {
|
||||
let platform = new IonicPlatform();
|
||||
platform.userAgent('idk');
|
||||
platform.load();
|
||||
|
||||
expect(platform.is('android')).toEqual(false);
|
||||
expect(platform.is('ios')).toEqual(false);
|
||||
expect(platform.is('core')).toEqual(true);
|
||||
});
|
||||
|
||||
it('should set android via platformOverride, despite ios user agent', () => {
|
||||
let platform = new IonicPlatform();
|
||||
let config = new IonicConfig();
|
||||
config.setting('platform', 'android');
|
||||
platform.userAgent(IPAD_UA);
|
||||
platform.load(config);
|
||||
platform.load('android');
|
||||
|
||||
expect(platform.is('android')).toEqual(true);
|
||||
expect(platform.is('ios')).toEqual(false);
|
||||
@@ -15,10 +23,8 @@ export function run() {
|
||||
|
||||
it('should set ios via platformOverride, despite android querystring', () => {
|
||||
let platform = new IonicPlatform();
|
||||
let config = new IonicConfig();
|
||||
config.setting('platform', 'ios');
|
||||
platform.url('/?ionicplatform=android');
|
||||
platform.load(config);
|
||||
platform.load('ios');
|
||||
|
||||
expect(platform.is('android')).toEqual(false);
|
||||
expect(platform.is('ios')).toEqual(true);
|
||||
@@ -26,9 +32,7 @@ export function run() {
|
||||
|
||||
it('should set ios via platformOverride', () => {
|
||||
let platform = new IonicPlatform();
|
||||
let config = new IonicConfig();
|
||||
config.setting('platform', 'ios');
|
||||
platform.load(config);
|
||||
platform.load('ios');
|
||||
|
||||
expect(platform.is('android')).toEqual(false);
|
||||
expect(platform.is('ios')).toEqual(true);
|
||||
@@ -36,9 +40,7 @@ export function run() {
|
||||
|
||||
it('should set android via platformOverride', () => {
|
||||
let platform = new IonicPlatform();
|
||||
let config = new IonicConfig();
|
||||
config.setting('platform', 'android');
|
||||
platform.load(config);
|
||||
platform.load('android');
|
||||
|
||||
expect(platform.is('android')).toEqual(true);
|
||||
expect(platform.is('ios')).toEqual(false);
|
||||
@@ -46,9 +48,8 @@ export function run() {
|
||||
|
||||
it('should set ios via querystring', () => {
|
||||
let platform = new IonicPlatform();
|
||||
let config = new IonicConfig();
|
||||
platform.url('/?ionicplatform=ios');
|
||||
platform.load(config);
|
||||
platform.load();
|
||||
|
||||
expect(platform.is('mobile')).toEqual(true);
|
||||
expect(platform.is('android')).toEqual(false);
|
||||
@@ -58,10 +59,9 @@ export function run() {
|
||||
|
||||
it('should set ios via querystring, even with android user agent', () => {
|
||||
let platform = new IonicPlatform();
|
||||
let config = new IonicConfig();
|
||||
platform.url('/?ionicplatform=ios');
|
||||
platform.userAgent(ANDROID_UA);
|
||||
platform.load(config);
|
||||
platform.load();
|
||||
|
||||
expect(platform.is('android')).toEqual(false);
|
||||
expect(platform.is('ios')).toEqual(true);
|
||||
@@ -69,9 +69,8 @@ export function run() {
|
||||
|
||||
it('should set android via querystring', () => {
|
||||
let platform = new IonicPlatform();
|
||||
let config = new IonicConfig();
|
||||
platform.url('/?ionicplatform=android');
|
||||
platform.load(config);
|
||||
platform.load();
|
||||
|
||||
expect(platform.is('android')).toEqual(true);
|
||||
expect(platform.is('ios')).toEqual(false);
|
||||
@@ -79,10 +78,9 @@ export function run() {
|
||||
|
||||
it('should set android via querystring, even with ios user agent', () => {
|
||||
let platform = new IonicPlatform();
|
||||
let config = new IonicConfig();
|
||||
platform.url('/?ionicplatform=android');
|
||||
platform.userAgent(IPHONE_UA);
|
||||
platform.load(config);
|
||||
platform.load();
|
||||
|
||||
expect(platform.is('android')).toEqual(true);
|
||||
expect(platform.is('ios')).toEqual(false);
|
||||
@@ -90,9 +88,8 @@ export function run() {
|
||||
|
||||
it('should set android via user agent', () => {
|
||||
let platform = new IonicPlatform();
|
||||
let config = new IonicConfig();
|
||||
platform.userAgent(ANDROID_UA);
|
||||
platform.load(config);
|
||||
platform.load();
|
||||
|
||||
expect(platform.is('mobile')).toEqual(true);
|
||||
expect(platform.is('android')).toEqual(true);
|
||||
@@ -101,9 +98,8 @@ export function run() {
|
||||
|
||||
it('should set iphone via user agent', () => {
|
||||
let platform = new IonicPlatform();
|
||||
let config = new IonicConfig();
|
||||
platform.userAgent(IPHONE_UA);
|
||||
platform.load(config);
|
||||
platform.load();
|
||||
|
||||
expect(platform.is('mobile')).toEqual(true);
|
||||
expect(platform.is('android')).toEqual(false);
|
||||
@@ -114,9 +110,8 @@ export function run() {
|
||||
|
||||
it('should set ipad via user agent', () => {
|
||||
let platform = new IonicPlatform();
|
||||
let config = new IonicConfig();
|
||||
platform.userAgent(IPAD_UA);
|
||||
platform.load(config);
|
||||
platform.load();
|
||||
|
||||
expect(platform.is('mobile')).toEqual(true);
|
||||
expect(platform.is('android')).toEqual(false);
|
||||
|
||||
Reference in New Issue
Block a user