diff options
author | Phil Hughes <me@iamphill.com> | 2018-03-21 10:05:08 +0000 |
---|---|---|
committer | Phil Hughes <me@iamphill.com> | 2018-03-22 10:33:19 +0000 |
commit | 51c64f3fc7180732621d60f939bfe6157165040f (patch) | |
tree | eaa1154ec945cfc289de9d2fd3f54a906d74d43b /spec/javascripts/ide/stores/actions_spec.js | |
parent | 4718f22f5751f8d50bd7897ff4a967ccc5625c80 (diff) | |
download | gitlab-ce-51c64f3fc7180732621d60f939bfe6157165040f.tar.gz |
Added staged files state to IDE
Closes https://gitlab.com/gitlab-org/gitlab-ee/issues/4541
Diffstat (limited to 'spec/javascripts/ide/stores/actions_spec.js')
-rw-r--r-- | spec/javascripts/ide/stores/actions_spec.js | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/spec/javascripts/ide/stores/actions_spec.js b/spec/javascripts/ide/stores/actions_spec.js index cec572f4507..0cbf9f3735f 100644 --- a/spec/javascripts/ide/stores/actions_spec.js +++ b/spec/javascripts/ide/stores/actions_spec.js @@ -292,6 +292,84 @@ describe('Multi-file store actions', () => { }); }); + describe('stageAllChanges', () => { + it('adds all files from changedFiles to stagedFiles', done => { + const f = file(); + store.state.changedFiles.push(f); + store.state.changedFiles.push(file('new')); + + store + .dispatch('stageAllChanges') + .then(() => { + expect(store.state.stagedFiles.length).toBe(2); + expect(store.state.stagedFiles[0]).toEqual(f); + + done(); + }) + .catch(done.fail); + }); + + it('sets all files from changedFiles as staged after adding to stagedFiles', done => { + store.state.changedFiles.push(file()); + store.state.changedFiles.push(file('new')); + + store + .dispatch('stageAllChanges') + .then(() => { + expect(store.state.changedFiles.length).toBe(2); + store.state.changedFiles.forEach(f => { + expect(f.staged).toBeTruthy(); + }); + + done(); + }) + .catch(done.fail); + }); + }); + + describe('unstageAllChanges', () => { + let f; + + beforeEach(() => { + f = { + ...file(), + type: 'blob', + staged: true, + }; + + store.state.changedFiles.push({ + ...f, + }); + }); + + it('sets staged to false in changedFiles when unstaging', done => { + store.state.stagedFiles.push(f); + + store + .dispatch('unstageAllChanges') + .then(() => { + expect(store.state.stagedFiles.length).toBe(0); + expect(store.state.changedFiles[0].staged).toBeFalsy(); + + done(); + }) + .catch(done.fail); + }); + + it('removes all files from stagedFiles after unstaging', done => { + store.state.stagedFiles.push(file()); + + store + .dispatch('unstageAllChanges') + .then(() => { + expect(store.state.stagedFiles.length).toBe(0); + + done(); + }) + .catch(done.fail); + }); + }); + describe('updateViewer', () => { it('updates viewer state', done => { store |