blob: 012e129eb960899988d07c0e23bd2c48beebae61 [file] [log] [blame]
var should = require('should');
var fetchGitData = require('../lib/fetchGitData');
var getOptions = require('../index').getOptions;
describe("fetchGitData", function(){
beforeEach(function(){
process.env = {PATH: process.env.PATH};
});
it("should throw an error when no data is passed", function() {
fetchGitData.should.throw(/fetchGitData requires a callback/);
});
it('should throw an error when no git context is provided', function(done) {
fetchGitData(undefined, function(err){
err.should.match(/No options passed/);
done();
});
});
it("should throw an error if no head is provided", function(done) {
fetchGitData({
}, function(err){
err.should.match(/You must provide the head/);
done();
});
});
it("should throw an error if no head.id is provided", function(done) {
fetchGitData({
head: {}
}, function(err){
err.should.match(/You must provide the head.id/);
done();
});
});
it("should return default values", function(done) {
var options = fetchGitData({
head: {
id: "COMMIT_HASH"
}
}, function(err, options){
options.should.eql({
"head": {
"id": "COMMIT_HASH",
"author_name": "Unknown Author",
"author_email": "",
"committer_name": "Unknown Committer",
"committer_email": "",
"message": "Unknown Commit Message"
},
"branch": "",
"remotes": []
});
done();
});
});
it("should override default values", function(done) {
var options = fetchGitData({
"head": {
"id": "COMMIT_HASH",
"author_name": "MY AUTHOR",
"author_email": "",
"committer_name": "MY COMMITTER",
"committer_email": "",
"message": "MY COMMIT MESSAGE"
},
"branch": "TEST",
"remotes": [
{
"name": "TEST",
"url": "test-url"
}
]
}, function(err, options){
options.should.eql({
"head": {
"id": "COMMIT_HASH",
"author_name": "MY AUTHOR",
"author_email": "",
"committer_name": "MY COMMITTER",
"committer_email": "",
"message": "MY COMMIT MESSAGE"
},
"branch": "TEST",
"remotes": [
{
"name": "TEST",
"url": "test-url"
}
]
});
done();
});
});
it("should convert git.branch to a string", function(done) {
fetchGitData({
"head": {
"id": "COMMIT_HASH"
},
"branch": {
"covert": "to a string"
}
}, function(err, str){
str.branch.should.be.String();
fetchGitData({
"head": {
"id": "COMMIT_HASH"
},
"branch": ["convert", "to", "a", "string"]
}, function(err, str){
str.branch.should.be.String();
done();
});
});
});
it("should convert git.remotes to an array", function(done) {
fetchGitData({
"head": {
"id": "COMMIT_HASH"
},
"remotes": "convert from string to an array"
}, function(err, arr){
arr.remotes.should.be.instanceof(Array);
fetchGitData({
"head": {
"id": "COMMIT_HASH"
},
"remotes": {
"convert": "from object to an array"
}
}, function(err, arr){
arr.remotes.should.be.instanceof(Array);
done();
});
});
});
it("should save passed remotes", function(done) {
fetchGitData({
"head": {
"id": "COMMIT_HASH"
},
"remotes": [
{
"name": "test",
"url": "https://my.test.url"
}
]
}, function(err, options){
options.should.eql({
"head": {
"id": "COMMIT_HASH",
"author_name": "Unknown Author",
"author_email": "",
"committer_name": "Unknown Committer",
"committer_email": "",
"message": "Unknown Commit Message"
},
"branch": "",
"remotes": [
{
"name": "test",
"url": "https://my.test.url"
}
]
});
done();
});
});
it("should execute git commands when a valid commit hash is given", function(done) {
process.env.COVERALLS_GIT_COMMIT = "HEAD";
process.env.COVERALLS_GIT_BRANCH = "master";
getOptions(function(err, options){
options = options.git;
options.head.should.be.Object();
options.head.author_name.should.not.equal("Unknown Author");
options.head.committer_name.should.not.equal("Unknown Committer");
options.head.message.should.not.equal("Unknown Commit Message");
options.branch.should.be.String();
options.should.have.property("remotes");
options.remotes.should.be.instanceof(Array);
options.remotes.length.should.be.above(0);
done();
});
});
});