132 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			132 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
/* eslint-disable jasmine/no-global-setup, dot-notation, jasmine/no-expect-in-setup-teardown, max-len */
 | 
						|
/* global CommentsStore */
 | 
						|
 | 
						|
import '~/diff_notes/models/discussion';
 | 
						|
import '~/diff_notes/models/note';
 | 
						|
import '~/diff_notes/stores/comments';
 | 
						|
 | 
						|
function createDiscussion(noteId = 1, resolved = true) {
 | 
						|
  CommentsStore.create({
 | 
						|
    discussionId: 'a',
 | 
						|
    noteId,
 | 
						|
    canResolve: true,
 | 
						|
    resolved,
 | 
						|
    resolvedBy: 'test',
 | 
						|
    authorName: 'test',
 | 
						|
    authorAvatar: 'test',
 | 
						|
    noteTruncated: 'test...',
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
beforeEach(() => {
 | 
						|
  CommentsStore.state = {};
 | 
						|
});
 | 
						|
 | 
						|
describe('New discussion', () => {
 | 
						|
  it('creates new discussion', () => {
 | 
						|
    expect(Object.keys(CommentsStore.state).length).toBe(0);
 | 
						|
    createDiscussion();
 | 
						|
    expect(Object.keys(CommentsStore.state).length).toBe(1);
 | 
						|
  });
 | 
						|
 | 
						|
  it('creates new note in discussion', () => {
 | 
						|
    createDiscussion();
 | 
						|
    createDiscussion(2);
 | 
						|
 | 
						|
    const discussion = CommentsStore.state['a'];
 | 
						|
    expect(Object.keys(discussion.notes).length).toBe(2);
 | 
						|
  });
 | 
						|
});
 | 
						|
 | 
						|
describe('Get note', () => {
 | 
						|
  beforeEach(() => {
 | 
						|
    expect(Object.keys(CommentsStore.state).length).toBe(0);
 | 
						|
    createDiscussion();
 | 
						|
  });
 | 
						|
 | 
						|
  it('gets note by ID', () => {
 | 
						|
    const note = CommentsStore.get('a', 1);
 | 
						|
    expect(note).toBeDefined();
 | 
						|
    expect(note.id).toBe(1);
 | 
						|
  });
 | 
						|
});
 | 
						|
 | 
						|
describe('Delete discussion', () => {
 | 
						|
  beforeEach(() => {
 | 
						|
    expect(Object.keys(CommentsStore.state).length).toBe(0);
 | 
						|
    createDiscussion();
 | 
						|
  });
 | 
						|
 | 
						|
  it('deletes discussion by ID', () => {
 | 
						|
    CommentsStore.delete('a', 1);
 | 
						|
    expect(Object.keys(CommentsStore.state).length).toBe(0);
 | 
						|
  });
 | 
						|
 | 
						|
  it('deletes discussion when no more notes', () => {
 | 
						|
    createDiscussion();
 | 
						|
    createDiscussion(2);
 | 
						|
    expect(Object.keys(CommentsStore.state).length).toBe(1);
 | 
						|
    expect(Object.keys(CommentsStore.state['a'].notes).length).toBe(2);
 | 
						|
 | 
						|
    CommentsStore.delete('a', 1);
 | 
						|
    CommentsStore.delete('a', 2);
 | 
						|
    expect(Object.keys(CommentsStore.state).length).toBe(0);
 | 
						|
  });
 | 
						|
});
 | 
						|
 | 
						|
describe('Update note', () => {
 | 
						|
  beforeEach(() => {
 | 
						|
    expect(Object.keys(CommentsStore.state).length).toBe(0);
 | 
						|
    createDiscussion();
 | 
						|
  });
 | 
						|
 | 
						|
  it('updates note to be unresolved', () => {
 | 
						|
    CommentsStore.update('a', 1, false, 'test');
 | 
						|
 | 
						|
    const note = CommentsStore.get('a', 1);
 | 
						|
    expect(note.resolved).toBe(false);
 | 
						|
  });
 | 
						|
});
 | 
						|
 | 
						|
describe('Discussion resolved', () => {
 | 
						|
  beforeEach(() => {
 | 
						|
    expect(Object.keys(CommentsStore.state).length).toBe(0);
 | 
						|
    createDiscussion();
 | 
						|
  });
 | 
						|
 | 
						|
  it('is resolved with single note', () => {
 | 
						|
    const discussion = CommentsStore.state['a'];
 | 
						|
    expect(discussion.isResolved()).toBe(true);
 | 
						|
  });
 | 
						|
 | 
						|
  it('is unresolved with 2 notes', () => {
 | 
						|
    const discussion = CommentsStore.state['a'];
 | 
						|
    createDiscussion(2, false);
 | 
						|
 | 
						|
    expect(discussion.isResolved()).toBe(false);
 | 
						|
  });
 | 
						|
 | 
						|
  it('is resolved with 2 notes', () => {
 | 
						|
    const discussion = CommentsStore.state['a'];
 | 
						|
    createDiscussion(2);
 | 
						|
 | 
						|
    expect(discussion.isResolved()).toBe(true);
 | 
						|
  });
 | 
						|
 | 
						|
  it('resolve all notes', () => {
 | 
						|
    const discussion = CommentsStore.state['a'];
 | 
						|
    createDiscussion(2, false);
 | 
						|
 | 
						|
    discussion.resolveAllNotes();
 | 
						|
    expect(discussion.isResolved()).toBe(true);
 | 
						|
  });
 | 
						|
 | 
						|
  it('unresolve all notes', () => {
 | 
						|
    const discussion = CommentsStore.state['a'];
 | 
						|
    createDiscussion(2);
 | 
						|
 | 
						|
    discussion.unResolveAllNotes();
 | 
						|
    expect(discussion.isResolved()).toBe(false);
 | 
						|
  });
 | 
						|
});
 |