From 48e4991907aa9046c25323af53afc3b7eaa895c4 Mon Sep 17 00:00:00 2001 From: Clement Ho Date: Fri, 5 May 2017 13:23:31 -0500 Subject: Add sidebar specs --- .../time_tracking/sidebar_time_tracking.js | 20 +++++++++++++------- app/assets/javascripts/sidebar/sidebar_bundle.js | 7 +++++-- app/assets/javascripts/sidebar/sidebar_mediator.js | 4 ++-- .../javascripts/sidebar/stores/sidebar_store.js | 4 ++-- 4 files changed, 22 insertions(+), 13 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/sidebar/components/time_tracking/sidebar_time_tracking.js b/app/assets/javascripts/sidebar/components/time_tracking/sidebar_time_tracking.js index e2dba1fb0c2..244b67b3ad9 100644 --- a/app/assets/javascripts/sidebar/components/time_tracking/sidebar_time_tracking.js +++ b/app/assets/javascripts/sidebar/components/time_tracking/sidebar_time_tracking.js @@ -17,15 +17,21 @@ export default { }, methods: { listenForSlashCommands() { - $(document).on('ajax:success', '.gfm-form', (e, data) => { - const subscribedCommands = ['spend_time', 'time_estimate']; - const changedCommands = data.commands_changes + $(document).on('ajax:success', '.gfm-form', this.slashCommandListened); + }, + slashCommandListened(e, data) { + const subscribedCommands = ['spend_time', 'time_estimate']; + let changedCommands; + if (data !== undefined) { + changedCommands = data.commands_changes ? Object.keys(data.commands_changes) : []; - if (changedCommands && _.intersection(subscribedCommands, changedCommands).length) { - this.mediator.fetch(); - } - }); + } else { + changedCommands = []; + } + if (changedCommands && _.intersection(subscribedCommands, changedCommands).length) { + this.mediator.fetch(); + } }, }, mounted() { diff --git a/app/assets/javascripts/sidebar/sidebar_bundle.js b/app/assets/javascripts/sidebar/sidebar_bundle.js index 2ce53c2ed30..2b02af87d8a 100644 --- a/app/assets/javascripts/sidebar/sidebar_bundle.js +++ b/app/assets/javascripts/sidebar/sidebar_bundle.js @@ -4,7 +4,7 @@ import sidebarAssignees from './components/assignees/sidebar_assignees'; import Mediator from './sidebar_mediator'; -document.addEventListener('DOMContentLoaded', () => { +function domContentLoaded() { const mediator = new Mediator(gl.sidebarOptions); mediator.fetch(); @@ -17,5 +17,8 @@ document.addEventListener('DOMContentLoaded', () => { } new Vue(sidebarTimeTracking).$mount('#issuable-time-tracker'); -}); +} +document.addEventListener('DOMContentLoaded', domContentLoaded); + +export default domContentLoaded; diff --git a/app/assets/javascripts/sidebar/sidebar_mediator.js b/app/assets/javascripts/sidebar/sidebar_mediator.js index c13f3391f0d..5ccfb4ee9c1 100644 --- a/app/assets/javascripts/sidebar/sidebar_mediator.js +++ b/app/assets/javascripts/sidebar/sidebar_mediator.js @@ -30,8 +30,8 @@ export default class SidebarMediator { this.service.get() .then((response) => { const data = response.json(); - this.store.processAssigneeData(data); - this.store.processTimeTrackingData(data); + this.store.setAssigneeData(data); + this.store.setTimeTrackingData(data); }) .catch(() => new Flash('Error occured when fetching sidebar data')); } diff --git a/app/assets/javascripts/sidebar/stores/sidebar_store.js b/app/assets/javascripts/sidebar/stores/sidebar_store.js index 94408c4d715..2d44c05bb8d 100644 --- a/app/assets/javascripts/sidebar/stores/sidebar_store.js +++ b/app/assets/javascripts/sidebar/stores/sidebar_store.js @@ -17,13 +17,13 @@ export default class SidebarStore { return SidebarStore.singleton; } - processAssigneeData(data) { + setAssigneeData(data) { if (data.assignees) { this.assignees = data.assignees; } } - processTimeTrackingData(data) { + setTimeTrackingData(data) { this.timeEstimate = data.time_estimate; this.totalTimeSpent = data.total_time_spent; this.humanTimeEstimate = data.human_time_estimate; -- cgit v1.2.3