From 958aaebdde3255df1cfd45e1e75c7a0c19700a6c Mon Sep 17 00:00:00 2001 From: Paul Slaughter Date: Mon, 10 Dec 2018 16:41:22 -0600 Subject: Fix MR discussion counts being off **What was the issue?** Notes can be unresolved, but not resolvable. Without this, the unresolvedDiscussionsCount was inflated. **References** https://gitlab.com/gitlab-org/gitlab-ce/issues/55138 --- spec/javascripts/notes/stores/mutation_spec.js | 71 ++++++++++++++++---------- 1 file changed, 44 insertions(+), 27 deletions(-) (limited to 'spec/javascripts') diff --git a/spec/javascripts/notes/stores/mutation_spec.js b/spec/javascripts/notes/stores/mutation_spec.js index 52cdc16353a..3fbae82f16c 100644 --- a/spec/javascripts/notes/stores/mutation_spec.js +++ b/spec/javascripts/notes/stores/mutation_spec.js @@ -9,6 +9,11 @@ import { individualNote, } from '../mock_data'; +const RESOLVED_NOTE = { resolvable: true, resolved: true }; +const UNRESOLVED_NOTE = { resolvable: true, resolved: false }; +const SYSTEM_NOTE = { resolvable: false, resolved: false }; +const WEIRD_NOTE = { resolvable: false, resolved: true }; + describe('Notes Store mutations', () => { describe('ADD_NEW_NOTE', () => { let state; @@ -449,49 +454,61 @@ describe('Notes Store mutations', () => { }); describe('UPDATE_RESOLVABLE_DISCUSSIONS_COUNTS', () => { - it('updates resolvableDiscussionsCount', () => { - const state = { - discussions: [ - { individual_note: false, resolvable: true, notes: [] }, - { individual_note: true, resolvable: true, notes: [] }, - { individual_note: false, resolvable: false, notes: [] }, - ], - resolvableDiscussionsCount: 0, - }; - - mutations.UPDATE_RESOLVABLE_DISCUSSIONS_COUNTS(state); - - expect(state.resolvableDiscussionsCount).toBe(1); - }); - - it('updates unresolvedDiscussionsCount', () => { + it('with unresolvable discussions, updates state', () => { const state = { discussions: [ - { individual_note: false, resolvable: true, notes: [{ resolved: false }] }, - { individual_note: true, resolvable: true, notes: [{ resolved: false }] }, - { individual_note: false, resolvable: false, notes: [{ resolved: false }] }, + { individual_note: false, resolvable: true, notes: [UNRESOLVED_NOTE] }, + { individual_note: true, resolvable: true, notes: [UNRESOLVED_NOTE] }, + { individual_note: false, resolvable: false, notes: [UNRESOLVED_NOTE] }, ], - unresolvedDiscussionsCount: 0, }; mutations.UPDATE_RESOLVABLE_DISCUSSIONS_COUNTS(state); - expect(state.unresolvedDiscussionsCount).toBe(1); + expect(state).toEqual( + jasmine.objectContaining({ + resolvableDiscussionsCount: 1, + unresolvedDiscussionsCount: 1, + hasUnresolvedDiscussions: false, + }), + ); }); - it('updates hasUnresolvedDiscussions', () => { + it('with resolvable discussions, updates state', () => { const state = { discussions: [ - { individual_note: false, resolvable: true, notes: [{ resolved: false }] }, - { individual_note: false, resolvable: true, notes: [{ resolved: false }] }, - { individual_note: false, resolvable: false, notes: [{ resolved: false }] }, + { + individual_note: false, + resolvable: true, + notes: [RESOLVED_NOTE, SYSTEM_NOTE, RESOLVED_NOTE], + }, + { + individual_note: false, + resolvable: true, + notes: [RESOLVED_NOTE, SYSTEM_NOTE, WEIRD_NOTE], + }, + { + individual_note: false, + resolvable: true, + notes: [SYSTEM_NOTE, RESOLVED_NOTE, WEIRD_NOTE, UNRESOLVED_NOTE], + }, + { + individual_note: false, + resolvable: true, + notes: [UNRESOLVED_NOTE], + }, ], - hasUnresolvedDiscussions: 0, }; mutations.UPDATE_RESOLVABLE_DISCUSSIONS_COUNTS(state); - expect(state.hasUnresolvedDiscussions).toBe(true); + expect(state).toEqual( + jasmine.objectContaining({ + resolvableDiscussionsCount: 4, + unresolvedDiscussionsCount: 2, + hasUnresolvedDiscussions: true, + }), + ); }); }); }); -- cgit v1.2.3