135 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
/* global ListIssue */
 | 
						|
 | 
						|
import '~/boards/models/label';
 | 
						|
import '~/boards/models/assignee';
 | 
						|
import '~/boards/models/issue';
 | 
						|
import '~/boards/models/list';
 | 
						|
import Store from '~/boards/stores/modal_store';
 | 
						|
 | 
						|
describe('Modal store', () => {
 | 
						|
  let issue;
 | 
						|
  let issue2;
 | 
						|
 | 
						|
  beforeEach(() => {
 | 
						|
    // Set up default state
 | 
						|
    Store.store.issues = [];
 | 
						|
    Store.store.selectedIssues = [];
 | 
						|
 | 
						|
    issue = new ListIssue({
 | 
						|
      title: 'Testing',
 | 
						|
      id: 1,
 | 
						|
      iid: 1,
 | 
						|
      confidential: false,
 | 
						|
      labels: [],
 | 
						|
      assignees: [],
 | 
						|
    });
 | 
						|
    issue2 = new ListIssue({
 | 
						|
      title: 'Testing',
 | 
						|
      id: 2,
 | 
						|
      iid: 2,
 | 
						|
      confidential: false,
 | 
						|
      labels: [],
 | 
						|
      assignees: [],
 | 
						|
    });
 | 
						|
    Store.store.issues.push(issue);
 | 
						|
    Store.store.issues.push(issue2);
 | 
						|
  });
 | 
						|
 | 
						|
  it('returns selected count', () => {
 | 
						|
    expect(Store.selectedCount()).toBe(0);
 | 
						|
  });
 | 
						|
 | 
						|
  it('toggles the issue as selected', () => {
 | 
						|
    Store.toggleIssue(issue);
 | 
						|
 | 
						|
    expect(issue.selected).toBe(true);
 | 
						|
    expect(Store.selectedCount()).toBe(1);
 | 
						|
  });
 | 
						|
 | 
						|
  it('toggles the issue as un-selected', () => {
 | 
						|
    Store.toggleIssue(issue);
 | 
						|
    Store.toggleIssue(issue);
 | 
						|
 | 
						|
    expect(issue.selected).toBe(false);
 | 
						|
    expect(Store.selectedCount()).toBe(0);
 | 
						|
  });
 | 
						|
 | 
						|
  it('toggles all issues as selected', () => {
 | 
						|
    Store.toggleAll();
 | 
						|
 | 
						|
    expect(issue.selected).toBe(true);
 | 
						|
    expect(issue2.selected).toBe(true);
 | 
						|
    expect(Store.selectedCount()).toBe(2);
 | 
						|
  });
 | 
						|
 | 
						|
  it('toggles all issues as un-selected', () => {
 | 
						|
    Store.toggleAll();
 | 
						|
    Store.toggleAll();
 | 
						|
 | 
						|
    expect(issue.selected).toBe(false);
 | 
						|
    expect(issue2.selected).toBe(false);
 | 
						|
    expect(Store.selectedCount()).toBe(0);
 | 
						|
  });
 | 
						|
 | 
						|
  it('toggles all if a single issue is selected', () => {
 | 
						|
    Store.toggleIssue(issue);
 | 
						|
    Store.toggleAll();
 | 
						|
 | 
						|
    expect(issue.selected).toBe(true);
 | 
						|
    expect(issue2.selected).toBe(true);
 | 
						|
    expect(Store.selectedCount()).toBe(2);
 | 
						|
  });
 | 
						|
 | 
						|
  it('adds issue to selected array', () => {
 | 
						|
    issue.selected = true;
 | 
						|
    Store.addSelectedIssue(issue);
 | 
						|
 | 
						|
    expect(Store.selectedCount()).toBe(1);
 | 
						|
  });
 | 
						|
 | 
						|
  it('removes issue from selected array', () => {
 | 
						|
    Store.addSelectedIssue(issue);
 | 
						|
    Store.removeSelectedIssue(issue);
 | 
						|
 | 
						|
    expect(Store.selectedCount()).toBe(0);
 | 
						|
  });
 | 
						|
 | 
						|
  it('returns selected issue index if present', () => {
 | 
						|
    Store.toggleIssue(issue);
 | 
						|
 | 
						|
    expect(Store.selectedIssueIndex(issue)).toBe(0);
 | 
						|
  });
 | 
						|
 | 
						|
  it('returns -1 if issue is not selected', () => {
 | 
						|
    expect(Store.selectedIssueIndex(issue)).toBe(-1);
 | 
						|
  });
 | 
						|
 | 
						|
  it('finds the selected issue', () => {
 | 
						|
    Store.toggleIssue(issue);
 | 
						|
 | 
						|
    expect(Store.findSelectedIssue(issue)).toBe(issue);
 | 
						|
  });
 | 
						|
 | 
						|
  it('does not find a selected issue', () => {
 | 
						|
    expect(Store.findSelectedIssue(issue)).toBe(undefined);
 | 
						|
  });
 | 
						|
 | 
						|
  it('does not remove from selected issue if tab is not all', () => {
 | 
						|
    Store.store.activeTab = 'selected';
 | 
						|
 | 
						|
    Store.toggleIssue(issue);
 | 
						|
    Store.toggleIssue(issue);
 | 
						|
 | 
						|
    expect(Store.store.selectedIssues.length).toBe(1);
 | 
						|
    expect(Store.selectedCount()).toBe(0);
 | 
						|
  });
 | 
						|
 | 
						|
  it('gets selected issue array with only selected issues', () => {
 | 
						|
    Store.toggleIssue(issue);
 | 
						|
    Store.toggleIssue(issue2);
 | 
						|
    Store.toggleIssue(issue2);
 | 
						|
 | 
						|
    expect(Store.getSelectedIssues().length).toBe(1);
 | 
						|
  });
 | 
						|
});
 |