var assert = require("assert");
var path = require("path");
var Promise = require("nodegit-promise");
var local = path.join.bind(path, __dirname);
describe("Branch", function() {
var NodeGit = require("../../");
var Repository = NodeGit.Repository;
var Branch = NodeGit.Branch;
var branchName = "test-branch";
var fullBranchName = "refs/heads/" + branchName;
var reposPath = local("../repos/workdir");
beforeEach(function() {
var test = this;
return Repository.open(reposPath)
.then(function(repository) {
test.repository = repository;
return repository.getMasterCommit();
})
.then(function(masterCommit) {
test.masterCommit = masterCommit;
return test.repository.createBranch(branchName, masterCommit, true);
})
.then(function(branch) {
test.branch = branch;
});
});
it("can create a branch", function() {
var branch = this.branch;
var masterCommit = this.masterCommit;
assert.equal(branch.name(), fullBranchName);
assert.equal(branch.target().toString(), masterCommit.sha());
});
it("can delete a branch", function() {
var repo = this.repository;
Branch.delete(this.branch);
return repo.getBranch(branchName)
// Reverse the results, since if we found it it wasn't deleted
.then(Promise.reject, Promise.resolve);
});
it("can see if the branch is pointed to by head", function() {
var repo = this.repository;
return repo.getBranch("master")
.then(function(branch) {
assert.ok(branch.isHead());
});
});
});