You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by fi...@apache.org on 2013/01/31 23:03:46 UTC

[3/10] git commit: tweaked up tests for project parsers.

tweaked up tests for project parsers.


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

Branch: refs/heads/master
Commit: c133822007740f2d643ae83e5d748c6bcbd5f17e
Parents: 47c4528
Author: Fil Maj <ma...@gmail.com>
Authored: Wed Jan 30 13:27:06 2013 -0800
Committer: Fil Maj <ma...@gmail.com>
Committed: Wed Jan 30 13:27:06 2013 -0800

----------------------------------------------------------------------
 spec/metadata/android_parser.spec.js    |    5 +-
 spec/metadata/blackberry_parser.spec.js |  207 +++++++++++++-------------
 spec/metadata/ios_parser.spec.js        |    6 +-
 3 files changed, 113 insertions(+), 105 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/c1338220/spec/metadata/android_parser.spec.js
----------------------------------------------------------------------
diff --git a/spec/metadata/android_parser.spec.js b/spec/metadata/android_parser.spec.js
index 61eedc1..5429dec 100644
--- a/spec/metadata/android_parser.spec.js
+++ b/spec/metadata/android_parser.spec.js
@@ -24,9 +24,8 @@ var android_parser = require('../../src/metadata/android_parser'),
     shell = require('shelljs'),
     fs = require('fs'),
     et = require('elementtree'),
-    tempDir = path.join(__dirname, '..', '..', 'temp'),
-    cordova = require('../../cordova');
-    projects_path = path.join(__dirname, '..', 'fixtures', 'projects')
+    cordova = require('../../cordova'),
+    projects_path = path.join(__dirname, '..', 'fixtures', 'projects'),
     android_path = path.join(projects_path, 'native', 'android_fixture'),
     project_path = path.join(projects_path, 'cordova'),
     android_project_path = path.join(project_path, 'platforms', 'android');

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/c1338220/spec/metadata/blackberry_parser.spec.js
----------------------------------------------------------------------
diff --git a/spec/metadata/blackberry_parser.spec.js b/spec/metadata/blackberry_parser.spec.js
index cf147ad..79fc786 100644
--- a/spec/metadata/blackberry_parser.spec.js
+++ b/spec/metadata/blackberry_parser.spec.js
@@ -20,25 +20,23 @@
 var blackberry_parser = require('../../src/metadata/blackberry_parser'),
     config_parser = require('../../src/config_parser'),
     path = require('path'),
+    util = require('../../src/util'),
     et = require('elementtree'),
     shell = require('shelljs'),
     cordova = require('../../cordova'),
     fs = require('fs'),
-    tempDir = path.join(__dirname, '..', '..', 'temp'),
-    tempBb = path.join(tempDir, 'platforms', 'blackberry'),
-    cfg_path = path.join(__dirname, '..', 'fixtures', 'projects', 'test', 'www', 'config.xml'),
-    blackberry_path = path.join(__dirname, '..', 'fixtures', 'projects', 'native', 'blackberry_fixture'),
-    blackberry_config = path.join(blackberry_path, 'www', 'config.xml');
+    projects_path = path.join(__dirname, '..', 'fixtures', 'projects'),
+    blackberry_path = path.join(projects_path, 'native', 'blackberry_fixture'),
+    project_path = path.join(projects_path, 'cordova'),
+    blackberry_project_path = path.join(project_path, 'platforms', 'blackberry');
 
-var cwd = process.cwd();
-
-var original_config = fs.readFileSync(blackberry_config, 'utf-8');
-var orig_www_config = fs.readFileSync(cfg_path, 'utf-8');
+var www_config = path.join(project_path, 'www', 'config.xml');
+var original_www_config = fs.readFileSync(www_config, 'utf-8');
 
 describe('blackberry project parser', function() {
     it('should throw an exception with a path that is not a native blackberry project', function() {
         expect(function() {
-            var project = new blackberry_parser(cwd);
+            var project = new blackberry_parser(process.cwd());
         }).toThrow();
     });
     it('should accept a proper native blackberry project path as construction parameter', function() {
@@ -52,13 +50,16 @@ describe('blackberry project parser', function() {
     describe('update_from_config method', function() {
         var project, config;
 
+        var blackberry_config = path.join(blackberry_path, 'www', 'config.xml');
+        var original_blackberry_config = fs.readFileSync(blackberry_config, 'utf-8');
+
         beforeEach(function() {
             project = new blackberry_parser(blackberry_path);
-            config = new config_parser(cfg_path);
+            config = new config_parser(www_config);
         });
         afterEach(function() {
-            fs.writeFileSync(blackberry_config, original_config, 'utf-8');
-            fs.writeFileSync(cfg_path, orig_www_config, 'utf-8');
+            fs.writeFileSync(blackberry_config, original_blackberry_config, 'utf-8');
+            fs.writeFileSync(www_config, original_www_config, 'utf-8');
         });
         it('should throw an exception if a non config_parser object is passed into it', function() {
             expect(function() {
@@ -94,8 +95,8 @@ describe('blackberry project parser', function() {
                 expect(as[1].attrib.uri).toEqual('http://rim.com');
             });
             it('should update the whitelist when using access elements with uri attributes', function() {
-                fs.writeFileSync(cfg_path, fs.readFileSync(cfg_path, 'utf-8').replace(/origin="\*/,'uri="http://rim.com'), 'utf-8');
-                config = new config_parser(cfg_path);
+                fs.writeFileSync(www_config, fs.readFileSync(www_config, 'utf-8').replace(/origin="\*/,'uri="http://rim.com'), 'utf-8');
+                config = new config_parser(www_config);
                 project.update_from_config(config);
 
                 var bb_cfg = new et.ElementTree(et.XML(fs.readFileSync(blackberry_config, 'utf-8')));
@@ -106,99 +107,103 @@ describe('blackberry project parser', function() {
         });
     });
 
-    describe('update_www method', function() {
-        var s, parser;
-        beforeEach(function() {
-            shell.rm('-rf', tempDir);
-            cordova.create(tempDir);
-            shell.mkdir('-p', tempBb);
-            shell.cp('-rf', path.join(blackberry_path, '*'), tempBb); 
-            parser = new blackberry_parser(tempBb);
-        });
+    describe('cross-platform project level methods', function() {
+        var parser, config;
 
-        it('should update all www assets', function() {
-            var newFile = path.join(tempDir, 'www', 'somescript.js');
-            fs.writeFileSync(newFile, 'alert("sup");', 'utf-8');
-            parser.update_www();
-            expect(fs.existsSync(path.join(tempBb, 'www', 'somescript.js'))).toBe(true);
-        });
-        it('should not overwrite the blackberry-specific config.xml', function() {
-            var www_cfg = fs.readFileSync(path.join(tempDir, 'www', 'config.xml'), 'utf-8');
-            parser.update_www();
-            var bb_cfg = fs.readFileSync(path.join(tempBb, 'www', 'config.xml'), 'utf-8');
-            expect(bb_cfg).not.toBe(www_cfg);
-        });
-        it('should inject a reference to webworks.js in index.html', function() {
-            parser.update_www();
-            var index = fs.readFileSync(path.join(tempBb, 'www', 'index.html'), 'utf-8');
-            expect(index).toMatch(/<script type="text\/javascript" src="js\/webworks.js">/i);
-        });
-    });
+        var blackberry_config = path.join(blackberry_project_path, 'www', 'config.xml');
+        var original_blackberry_config = fs.readFileSync(blackberry_config, 'utf-8');
 
-    describe('update_project method', function() {
-        var parser, cfg, s,
-            ioFake = function() { s.mostRecentCall.args[1](null, {}); };
         beforeEach(function() {
-            shell.rm('-rf', tempDir);
-            cordova.create(tempDir);
-            s = spyOn(require('prompt'), 'get').andReturn(true);
-            shell.mkdir('-p', tempBb);
-            shell.cp('-rf', path.join(blackberry_path, '*'), tempBb); 
-            parser = new blackberry_parser(tempBb);
-            cfg = new config_parser(path.join(tempDir, 'www', 'config.xml'));
-        });
-
-        it('should invoke update_www', function() {
-            var spyWww = spyOn(parser, 'update_www');
-            parser.update_project(cfg);
-            ioFake();
-            expect(spyWww).toHaveBeenCalled();
+            parser = new blackberry_parser(blackberry_project_path);
+            config = new config_parser(www_config);
         });
-        it('should invoke update_from_config', function() {
-            var spyConfig = spyOn(parser, 'update_from_config');
-            parser.update_project(cfg);
-            ioFake();
-            expect(spyConfig).toHaveBeenCalled();
-        });
-        it('should invoke get_blackberry_environment if .cordova/config.json file has no BB config', function() {
-            var spyEnv = spyOn(parser, 'get_blackberry_environment');
-            parser.update_project(cfg);
-            expect(spyEnv).toHaveBeenCalled();
-        });
-        it('should not invoke get_blackberry_environment if .cordova/config.json file has BB config', function() {
-            var spyEnv = spyOn(parser, 'get_blackberry_environment');
-            fs.writeFileSync(path.join(tempDir, '.cordova', 'config.json'), JSON.stringify({
-                blackberry:{
-                    qnx:{
-                    }
-                }
-            }), 'utf-8');
-            parser.update_project(cfg);
-            expect(spyEnv).not.toHaveBeenCalled();
-        });
-        it('should write out project properties with no BB config in .cordova/config.json', function() {
-            var spyProps = spyOn(parser, 'write_project_properties');
-            var cb = jasmine.createSpy();
-            runs(function() {
-                parser.update_project(cfg, cb);
-                ioFake();
+        afterEach(function() {
+            fs.writeFileSync(blackberry_config, original_blackberry_config, 'utf-8');
+            fs.writeFileSync(www_config, original_www_config, 'utf-8');
+        });
+
+        describe('update_www method', function() {
+            it('should update all www assets', function() {
+                var newFile = path.join(project_path, 'www', 'somescript.js');
+                this.after(function() {
+                    shell.rm('-f', newFile);
+                });
+                fs.writeFileSync(newFile, 'alert("sup");', 'utf-8');
+                parser.update_www();
+                expect(fs.existsSync(path.join(blackberry_project_path, 'www', 'somescript.js'))).toBe(true);
+            });
+            it('should not overwrite the blackberry-specific config.xml', function() {
+                var www_cfg = fs.readFileSync(path.join(project_path, 'www', 'config.xml'), 'utf-8');
+                parser.update_www();
+                var bb_cfg = fs.readFileSync(blackberry_config, 'utf-8');
+                expect(bb_cfg).not.toBe(www_cfg);
             });
-            waitsFor(function() { return cb.wasCalled; }, 'update project');
-            runs(function() {
-                expect(spyProps).toHaveBeenCalled();
+            it('should inject a reference to webworks.js in index.html', function() {
+                parser.update_www();
+                var index = fs.readFileSync(path.join(blackberry_project_path, 'www', 'index.html'), 'utf-8');
+                expect(index).toMatch(/<script type="text\/javascript" src="js\/webworks.js">/i);
+            });
+            it('should call out to util.deleteSvnFolders', function() {
+                var spy = spyOn(util, 'deleteSvnFolders');
+                parser.update_www();
+                expect(spy).toHaveBeenCalled();
             });
         });
-        it('should write out project properties with BB config in .cordova/config.json', function() {
-            var spyProps = spyOn(parser, 'write_project_properties');
-            var cb = jasmine.createSpy();
-            fs.writeFileSync(path.join(tempDir, '.cordova/config.json'), JSON.stringify({
-                blackberry:{
-                    qnx:{
-                    }
-                }
-            }), 'utf-8');
-            parser.update_project(cfg, cb);
-            expect(spyProps).toHaveBeenCalled();
+
+        describe('update_project method', function() {
+            var cordova_config_path = path.join(project_path, '.cordova', 'config.json');
+            var original_config_json = fs.readFileSync(cordova_config_path, 'utf-8');
+            describe('with stubbed out config for BlackBerry SDKs', function() {
+                beforeEach(function() {
+                    fs.writeFileSync(cordova_config_path, JSON.stringify({
+                        blackberry:{
+                            qnx:{
+                            }
+                        }
+                    }), 'utf-8');
+                });
+                afterEach(function() {
+                    fs.writeFileSync(cordova_config_path, original_config_json, 'utf-8');
+                });
+                it('should invoke update_www', function() {
+                    var spyWww = spyOn(parser, 'update_www');
+                    parser.update_project(config);
+                    expect(spyWww).toHaveBeenCalled();
+                });
+                it('should invoke update_from_config', function() {
+                    var spyConfig = spyOn(parser, 'update_from_config');
+                    parser.update_project(config);
+                    expect(spyConfig).toHaveBeenCalled();
+                });
+                it('should not invoke get_blackberry_environment', function() {
+                    var spyEnv = spyOn(parser, 'get_blackberry_environment');
+                    parser.update_project(config);
+                    expect(spyEnv).not.toHaveBeenCalled();
+                });
+                it('should write out project properties', function() {
+                    var spyProps = spyOn(parser, 'write_project_properties');
+                    parser.update_project(config, function() { 
+                        expect(spyProps).toHaveBeenCalled();
+                    });
+                });
+            });
+            describe('with empty BlackBerry SDKs in config', function() {
+                it('should invoke get_blackberry_environment', function() {
+                    var spyEnv = spyOn(parser, 'get_blackberry_environment');
+                    var promptSpy = spyOn(require('prompt'), 'get');
+                    parser.update_project(config);
+                    expect(spyEnv).toHaveBeenCalled();
+                });
+                it('should write out project properties', function(done) {
+                    var spyProps = spyOn(parser, 'write_project_properties');
+                    var promptSpy = spyOn(require('prompt'), 'get');
+                    parser.update_project(config, function() {
+                        expect(spyProps).toHaveBeenCalled();
+                        done();
+                    });
+                    promptSpy.mostRecentCall.args[1](null, {});
+                });
+            });
         });
     });
 

http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/c1338220/spec/metadata/ios_parser.spec.js
----------------------------------------------------------------------
diff --git a/spec/metadata/ios_parser.spec.js b/spec/metadata/ios_parser.spec.js
index 0a1e252..b467fef 100644
--- a/spec/metadata/ios_parser.spec.js
+++ b/spec/metadata/ios_parser.spec.js
@@ -25,7 +25,6 @@ var ios_parser = require('../../src/metadata/ios_parser'),
     shell = require('shelljs'),
     fs = require('fs'),
     et = require('elementtree'),
-    tempDir = path.join(__dirname, '..', '..', 'temp'),
     projects_path = path.join(__dirname, '..', 'fixtures', 'projects')
     ios_path = path.join(projects_path, 'native', 'ios_fixture'),
     project_path = path.join(projects_path, 'cordova'),
@@ -160,6 +159,11 @@ describe('ios project parser', function() {
                 parser.update_www();
                 expect(fs.readFileSync(path.join(ios_project_path, 'www', 'cordova.js'),'utf-8')).toBe(fs.readFileSync(path.join(util.libDirectory, 'cordova-ios', 'CordovaLib', 'cordova.ios.js'), 'utf-8'));
             });
+            it('should call out to util.deleteSvnFolders', function() {
+                var spy = spyOn(util, 'deleteSvnFolders');
+                parser.update_www();
+                expect(spy).toHaveBeenCalled();
+            });
         });
 
         describe('update_project method', function() {