Last active
April 19, 2017 22:28
-
-
Save lbrenman/0c18239184cec1c8c74b to your computer and use it in GitHub Desktop.
Appcelerator Titanium ti-mocha simple titanium example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Titanium has no built in Unit Test as Xcode/ObjC and Android Java have | |
Jasmine and Ti-mocha are the two main unit test frameworks for titanium | |
Jasmine runs without requiring the app to run | |
Ti-mocha runs while the app is running | |
Using T-Mocha | |
References: | |
https://github.com/tonylukasavage/ti-mocha | |
http://tonylukasavage.com/ti-mocha/ | |
https://github.com/rblalock/core | |
* Add ti-mocha.js to app/lib folder | |
* add tests folder to app/lib folder to hold unit tests | |
* add test js file to tests folder (e.g. mytests.js) | |
* require mytests,js in alloy.js: | |
- require(‘tests/mytests) | |
* add ti-mocha unit tests to mytests.js | |
- in below example, we are testing business logic (add2nums()) and a controller (makeRow.js) | |
require('ti-mocha'); | |
mocha.setup({ reporter: 'ti-spec-studio' }); | |
var alloy = require('alloy'); | |
var utils = require('utils'); | |
// create the test suite | |
describe('Leors Unit Test', function() { | |
describe('utilities', function() { | |
it('Adding two numbers together', function(){ | |
var results = utils.add2nums(11,22); | |
if(results !== 33) { | |
throw new ("Add Two Numbers Together FAILED"); | |
} | |
}); | |
it('Verify row controller', function(){ | |
var controller = alloy.createController('makeRow', { | |
name: "uniqueName", | |
}); | |
if(controller.makeLbl.text !== "uniqueName"){ | |
throw new ("Verify row controller FAILED"); | |
} | |
}); | |
}); | |
}); | |
// run the tests | |
mocha.run(); | |
* In example above, utils.js in the lib folder contains the methods to be tested, utils.js: | |
exports.add2nums = function(a,b) { | |
return a + b; | |
} | |
* See corejs for example on how to configure ti-mocha from config.js | |
* Just run the app in Studio onto iPhone sim or device or Android emulator or device and see ti-mocha results in console can also see in CLI | |
 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require('tests/mytests'); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$.makeTV.addEventListener('click', function(e) { | |
Ti.API.info("index: $.makeTV.addEventListener(click)"); | |
}); | |
$.makeBTN.addEventListener('click', function(e){ | |
Ti.API.info("index: $.makeBTN.addEventListener(change)"); | |
getMakes({ | |
success: function(e) { | |
Ti.API.info('Received data = '+e); | |
loadTable(e); | |
}, | |
error: function(e) { | |
Ti.API.info('Error = '+e); | |
alert("No network or server not available. Please try again."); | |
} | |
}); | |
}); | |
function loadTable(e) { | |
Ti.API.info("index: loadTable()"); | |
var reply = JSON.parse(e); | |
var rows = []; | |
var i = 0; | |
Ti.API.info("index: reply = "+JSON.stringify(reply)); | |
Ti.API.info("index: reply.makes.length = "+reply.makes.length); | |
if(reply.makes.length>0){ | |
_.each(reply.makes, function(item) { | |
rows.push(Alloy.createController('makeRow', { | |
name: item.name, | |
//year: item.year, | |
}).getView()); | |
}); | |
} | |
else { | |
alert("No makes found."); | |
} | |
$.makeTV.setData(rows); | |
} | |
function getMakes(o){ | |
Ti.API.info("getMakes()"); | |
if(Titanium.Network.networkType == Titanium.Network.NETWORK_NONE){ | |
Ti.API.info("index: getMakes() - No Network"); | |
if (o.error) { o.error("No Network"); }; | |
return; | |
} | |
var xhr = Titanium.Network.createHTTPClient({ | |
onload: function() { | |
if (o.success) { o.success(this.responseText); }; | |
}, | |
onerror: function(e) { | |
if (o.error) { o.error("Error with Edmunds API"); }; | |
}, | |
timeout: 10000, | |
}); | |
xhr.open("GET", "https://api.edmunds.com/api/vehicle/v2/makes?state=new&fmt=json&api_key=97zchuauxdqzw5thqxqhpzgq"); | |
xhr.send(); | |
}; | |
$.index.open(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<Alloy> | |
<Window class="container" layout="vertical"> | |
<View height="40" backgroundColor="black"> | |
<Label color="white">Web Service Demo</Label> | |
</View> | |
<View layout="vertical"> | |
<Button id="makeBTN" top="20">Get Makes</Button> | |
<TableView id="makeTV" top="20"/> | |
</View> | |
</Window> | |
</Alloy> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var args = arguments[0] || {}; | |
//Ti.API.info("row created, args.name = "+args.name); | |
$.makeRow.name = args.name; | |
//$.movieRow.year = args.year; | |
$.makeLbl.text = args.name; | |
//$.yearLbl.text = args.year; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<Alloy> | |
<TableViewRow class="movieTVR"> | |
<Label id="makeLbl" width="80%" left="10"/> | |
<!--Label id="yearLbl" width="20%" right="0"/--> | |
</TableViewRow> | |
</Alloy> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require('ti-mocha'); | |
//mocha.setup({ reporter: 'ti-spec-studio' }); | |
var alloy = require('alloy'); | |
var utils = require('utils'); | |
// create the test suite | |
describe('Leors Unit Test', function() { | |
describe('utilities', function() { | |
it('Adding two numbers together', function(){ | |
var results = utils.add2nums(11,22); | |
if(results !== 33) { | |
throw new ("Add Two Numbers Together FAILED"); | |
} | |
}); | |
it('Verify row controller', function(){ | |
var controller = alloy.createController('makeRow', { | |
name: "uniqueName", | |
}); | |
if(controller.makeLbl.text !== "uniqueName"){ | |
throw new ("Verify row controller FAILED"); | |
} | |
}); | |
}); | |
}); | |
// run the tests | |
mocha.run(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
exports.add2nums = function(a,b) { | |
return a + b; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment