You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by sh...@apache.org on 2016/01/05 02:01:38 UTC

[2/2] ios commit: CB-10233: Support different config.xml file per CDVViewController instance

CB-10233: Support different config.xml file per CDVViewController instance

Add unit test to prove that settings are loaded from the right config
file

This closes #186


Project: http://git-wip-us.apache.org/repos/asf/cordova-ios/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-ios/commit/48dfb42b
Tree: http://git-wip-us.apache.org/repos/asf/cordova-ios/tree/48dfb42b
Diff: http://git-wip-us.apache.org/repos/asf/cordova-ios/diff/48dfb42b

Branch: refs/heads/master
Commit: 48dfb42b95fc8469986ba7f9d977a43bf2aaf56c
Parents: 813a3ba
Author: Mirko Luchi <mi...@thedigitalstack.com>
Authored: Wed Dec 23 14:06:52 2015 +0100
Committer: Shazron Abdullah <sh...@apache.org>
Committed: Mon Jan 4 17:02:04 2016 -0800

----------------------------------------------------------------------
 tests/CordovaLibTests/CDVViewControllerTest.m   | 60 ++++++++++++++++++++
 tests/CordovaLibTests/CordovaLibApp/config.xml  |  4 +-
 .../CordovaLibTests.xcodeproj/project.pbxproj   | 20 +++++--
 tests/CordovaLibTests/config-custom.xml         | 23 ++++++++
 4 files changed, 100 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/48dfb42b/tests/CordovaLibTests/CDVViewControllerTest.m
----------------------------------------------------------------------
diff --git a/tests/CordovaLibTests/CDVViewControllerTest.m b/tests/CordovaLibTests/CDVViewControllerTest.m
new file mode 100644
index 0000000..dcff8fd
--- /dev/null
+++ b/tests/CordovaLibTests/CDVViewControllerTest.m
@@ -0,0 +1,60 @@
+//
+//  CDVViewControllerTest.m
+//  CordovaLibTests
+//
+//  Created by Mirko Luchi on 23/12/15.
+//
+//
+
+#import <XCTest/XCTest.h>
+#import <Cordova/CDVViewController.h>
+
+#define CDVViewControllerTestSettingKey @"test_cdvconfigfile"
+#define CDVViewControllerTestSettingValueDefault @"config.xml"
+#define CDVViewControllerTestSettingValueCustom @"config-custom.xml"
+
+@interface CDVViewControllerTest : XCTestCase
+
+@end
+
+@implementation CDVViewControllerTest
+
+-(CDVViewController*)viewController{
+    CDVViewController* viewController = [CDVViewController new];
+    return viewController;
+}
+
+-(void)doTestInitWithConfigFile:(NSString*)configFile expectedSettingValue:(NSString*)value{
+    // Create a CDVViewController
+    CDVViewController* viewController = [self viewController];
+    if(configFile){
+        // Set custom config file
+        viewController.configFile = configFile;
+    }else{
+        // Do not specify config file ==> fallback to default config.xml
+    }
+    
+    // Trigger -viewDidLoad
+    [viewController view];
+    
+    // Assert that the proper file was actually loaded, checking the value of a test setting it must contain
+    NSString* settingValue = [viewController.settings objectForKey:CDVViewControllerTestSettingKey];
+    XCTAssertEqualObjects(settingValue, value);
+}
+
+-(void)testInitWithDefaultConfigFile{
+    [self doTestInitWithConfigFile:nil expectedSettingValue:CDVViewControllerTestSettingValueDefault];
+}
+
+-(void)testInitWithCustomConfigFileAbsolutePath{
+    NSString* configFileAbsolutePath = [[NSBundle mainBundle] pathForResource:@"config-custom" ofType:@"xml"];
+    [self doTestInitWithConfigFile:configFileAbsolutePath expectedSettingValue:CDVViewControllerTestSettingValueCustom];
+}
+
+-(void)testInitWithCustomConfigFileRelativePath{
+    NSString* configFileRelativePath = @"config-custom.xml";
+    [self doTestInitWithConfigFile:configFileRelativePath expectedSettingValue:CDVViewControllerTestSettingValueCustom];
+}
+
+@end
+

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/48dfb42b/tests/CordovaLibTests/CordovaLibApp/config.xml
----------------------------------------------------------------------
diff --git a/tests/CordovaLibTests/CordovaLibApp/config.xml b/tests/CordovaLibTests/CordovaLibApp/config.xml
index 8acdea7..5b930fc 100644
--- a/tests/CordovaLibTests/CordovaLibApp/config.xml
+++ b/tests/CordovaLibTests/CordovaLibApp/config.xml
@@ -49,7 +49,9 @@
     <preference name="PageLength" value="0" />
     <preference name="PaginationBreakingMode" value="page" /> <!-- page, column -->
     <preference name="PaginationMode" value="unpaginated" /> <!-- unpaginated, leftToRight, topToBottom, bottomToTop, rightToLeft -->
-
+    <!-- This settings is just used by the CDVViewControllerTest to assert which config file has been loaded -->
+    <preference name="test_CDVConfigFile" value="config.xml" />
+    
     <feature name="LocalStorage">
         <param name="ios-package" value="CDVLocalStorage"/>
     </feature>

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/48dfb42b/tests/CordovaLibTests/CordovaLibTests.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --git a/tests/CordovaLibTests/CordovaLibTests.xcodeproj/project.pbxproj b/tests/CordovaLibTests/CordovaLibTests.xcodeproj/project.pbxproj
index c4b9007..023b4a5 100644
--- a/tests/CordovaLibTests/CordovaLibTests.xcodeproj/project.pbxproj
+++ b/tests/CordovaLibTests/CordovaLibTests.xcodeproj/project.pbxproj
@@ -17,6 +17,8 @@
 		30B342F515224B360070E6A5 /* CDVWebViewTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B342F415224B360070E6A5 /* CDVWebViewTest.m */; };
 		30D1B08C15A2B36D0060C291 /* CDVBase64Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 30D1B08B15A2B36D0060C291 /* CDVBase64Tests.m */; };
 		30F8AE1D152129DA006625B3 /* www in Resources */ = {isa = PBXBuildFile; fileRef = 30F8AE1C152129DA006625B3 /* www */; };
+		5C4C91761C2ACE450055AFC3 /* CDVViewControllerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C4C91751C2ACE450055AFC3 /* CDVViewControllerTest.m */; };
+		5C4C917B1C2AD44E0055AFC3 /* config-custom.xml in Resources */ = {isa = PBXBuildFile; fileRef = 5C4C91771C2ACF130055AFC3 /* config-custom.xml */; };
 		686357B5141002F200DF4CF2 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 686357B3141002F200DF4CF2 /* InfoPlist.strings */; };
 		686357BA141002F200DF4CF2 /* CDVPluginResultJSONSerializationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 686357B9141002F200DF4CF2 /* CDVPluginResultJSONSerializationTests.m */; };
 		7E91406017711D88002C6A3F /* CDVWebViewDelegateTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E91405F17711D88002C6A3F /* CDVWebViewDelegateTests.m */; };
@@ -54,6 +56,8 @@
 		30B342F415224B360070E6A5 /* CDVWebViewTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVWebViewTest.m; sourceTree = "<group>"; };
 		30D1B08B15A2B36D0060C291 /* CDVBase64Tests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVBase64Tests.m; sourceTree = "<group>"; };
 		30F8AE1C152129DA006625B3 /* www */ = {isa = PBXFileReference; lastKnownFileType = folder; path = www; sourceTree = "<group>"; };
+		5C4C91751C2ACE450055AFC3 /* CDVViewControllerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVViewControllerTest.m; sourceTree = "<group>"; };
+		5C4C91771C2ACF130055AFC3 /* config-custom.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "config-custom.xml"; sourceTree = "<group>"; };
 		686357A9141002F100DF4CF2 /* CordovaLibTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CordovaLibTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
 		686357B2141002F200DF4CF2 /* CordovaLibTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "CordovaLibTests-Info.plist"; sourceTree = "<group>"; };
 		686357B4141002F200DF4CF2 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
@@ -104,6 +108,7 @@
 			children = (
 				7EF33BD61911ABA20048544E /* Default-568h@2x.png */,
 				F8EB14D0165FFD3200616F39 /* config.xml */,
+				5C4C91771C2ACF130055AFC3 /* config-custom.xml */,
 				EB3B34F4161B585D003DBE7D /* CordovaLibTests */,
 				303A406D152124BB00182201 /* CordovaLibApp */,
 				0867D69AFE84028FC02AAC07 /* Frameworks */,
@@ -156,18 +161,19 @@
 		EB3B34F4161B585D003DBE7D /* CordovaLibTests */ = {
 			isa = PBXGroup;
 			children = (
+				30D1B08B15A2B36D0060C291 /* CDVBase64Tests.m */,
 				30610C9119AD9B95000B3781 /* CDVCommandDelegateTests.m */,
-				EBA7F20417962CCD001A0CE6 /* CDVStartPageTests.m */,
-				7E91405F17711D88002C6A3F /* CDVWebViewDelegateTests.m */,
-				EB96677116ADBCF500D86CDF /* CDVUserAgentTest.m */,
 				EBA3554415A731F100F4DE24 /* CDVFakeFileManager.h */,
 				EBA3554515A731F100F4DE24 /* CDVFakeFileManager.m */,
-				EBA3550F15A5F18900F4DE24 /* CDVWebViewTest.h */,
-				30B342F415224B360070E6A5 /* CDVWebViewTest.m */,
-				30D1B08B15A2B36D0060C291 /* CDVBase64Tests.m */,
 				EB89634915FE66EA00E12277 /* CDVInvokedUrlCommandTests.m */,
 				3062D1AD151D4D9D000D9128 /* CDVLocalStorageTests.m */,
 				686357B9141002F200DF4CF2 /* CDVPluginResultJSONSerializationTests.m */,
+				EBA7F20417962CCD001A0CE6 /* CDVStartPageTests.m */,
+				EB96677116ADBCF500D86CDF /* CDVUserAgentTest.m */,
+				5C4C91751C2ACE450055AFC3 /* CDVViewControllerTest.m */,
+				7E91405F17711D88002C6A3F /* CDVWebViewDelegateTests.m */,
+				EBA3550F15A5F18900F4DE24 /* CDVWebViewTest.h */,
+				30B342F415224B360070E6A5 /* CDVWebViewTest.m */,
 				30356213141049E1006C2D43 /* CDVWhitelistTests.m */,
 				686357B1141002F200DF4CF2 /* Supporting Files */,
 			);
@@ -253,6 +259,7 @@
 				7EF33BD71911ABA20048544E /* Default-568h@2x.png in Resources */,
 				303A4072152124BB00182201 /* InfoPlist.strings in Resources */,
 				30F8AE1D152129DA006625B3 /* www in Resources */,
+				5C4C917B1C2AD44E0055AFC3 /* config-custom.xml in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -319,6 +326,7 @@
 				30B342F515224B360070E6A5 /* CDVWebViewTest.m in Sources */,
 				30D1B08C15A2B36D0060C291 /* CDVBase64Tests.m in Sources */,
 				EBA3554615A731F100F4DE24 /* CDVFakeFileManager.m in Sources */,
+				5C4C91761C2ACE450055AFC3 /* CDVViewControllerTest.m in Sources */,
 				EB89634A15FE66EA00E12277 /* CDVInvokedUrlCommandTests.m in Sources */,
 				EB96677216ADBCF500D86CDF /* CDVUserAgentTest.m in Sources */,
 				7E91406017711D88002C6A3F /* CDVWebViewDelegateTests.m in Sources */,

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/48dfb42b/tests/CordovaLibTests/config-custom.xml
----------------------------------------------------------------------
diff --git a/tests/CordovaLibTests/config-custom.xml b/tests/CordovaLibTests/config-custom.xml
new file mode 100644
index 0000000..18cf6a4
--- /dev/null
+++ b/tests/CordovaLibTests/config-custom.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+ 
+ http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<widget>
+    <!-- This settings is just used by the CDVViewControllerTest to assert which config file has been loaded -->
+    <preference name="test_CDVConfigFile" value="config-custom.xml" />
+</widget>


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org