Merge branch 'due-dates-in-todos' into release
This commit is contained in:
@@ -241,10 +241,10 @@
|
||||
>
|
||||
<div
|
||||
v-b-tooltip.hover.bottom="$t('dueDate')"
|
||||
class="svg-icon calendar"
|
||||
class="svg-icon calendar my-auto"
|
||||
v-html="icons.calendar"
|
||||
></div>
|
||||
<span>{{ formatDueDate() }}</span>
|
||||
<span>{{ $t('due') }} {{ formatDueDate() }}</span>
|
||||
</div>
|
||||
<div class="icons-right d-flex justify-content-end">
|
||||
<div
|
||||
@@ -701,7 +701,7 @@
|
||||
|
||||
.icons {
|
||||
margin-top: 4px;
|
||||
color: $gray-300;
|
||||
color: $gray-100;
|
||||
font-style: normal;
|
||||
|
||||
&-right {
|
||||
@@ -760,7 +760,7 @@
|
||||
}
|
||||
|
||||
.due-overdue {
|
||||
color: $red-50;
|
||||
color: $maroon-10;
|
||||
}
|
||||
|
||||
.calendar.svg-icon {
|
||||
@@ -899,7 +899,7 @@
|
||||
}
|
||||
</style>
|
||||
<!-- eslint-enable max-len -->
|
||||
|
||||
<!-- eslint-disable-next-line vue/component-tags-order -->
|
||||
<script>
|
||||
import moment from 'moment';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
@@ -1126,13 +1126,13 @@ export default {
|
||||
return moment.duration(endOfDueDate.diff(endOfToday));
|
||||
},
|
||||
checkIfOverdue () {
|
||||
return this.calculateTimeTillDue().asDays() <= 0;
|
||||
return this.calculateTimeTillDue().asDays() < 0;
|
||||
},
|
||||
formatDueDate () {
|
||||
const timeTillDue = this.calculateTimeTillDue();
|
||||
const dueIn = timeTillDue.asDays() === 0 ? this.$t('today') : timeTillDue.humanize(true);
|
||||
|
||||
return this.task.date && this.$t('dueIn', { dueIn });
|
||||
if (moment().isSame(this.task.date, 'day')) {
|
||||
return this.$t('today');
|
||||
}
|
||||
return moment(this.task.date).format(this.user.preferences.dateFormat.toUpperCase());
|
||||
},
|
||||
edit (e, task) {
|
||||
if (this.isRunningYesterdailies) return;
|
||||
|
||||
@@ -1,94 +0,0 @@
|
||||
import { shallowMount, createLocalVue } from '@vue/test-utils';
|
||||
import moment from 'moment';
|
||||
|
||||
import Task from '@/components/tasks/task.vue';
|
||||
import Store from '@/libs/store';
|
||||
|
||||
const localVue = createLocalVue();
|
||||
localVue.use(Store);
|
||||
|
||||
describe('Task', () => {
|
||||
let wrapper;
|
||||
|
||||
function makeWrapper (additionalTaskData = {}, additionalUserData = {}) {
|
||||
return shallowMount(Task, {
|
||||
propsData: {
|
||||
task: {
|
||||
group: {},
|
||||
...additionalTaskData,
|
||||
},
|
||||
},
|
||||
store: {
|
||||
state: {
|
||||
user: {
|
||||
data: {
|
||||
preferences: {
|
||||
tasks: {
|
||||
activeFilter: {
|
||||
|
||||
},
|
||||
},
|
||||
},
|
||||
...additionalUserData,
|
||||
},
|
||||
},
|
||||
},
|
||||
getters: {
|
||||
'tasks:getTaskClasses': () => ({}),
|
||||
'tasks:canEdit': () => ({}),
|
||||
'tasks:canDelete': () => ({}),
|
||||
},
|
||||
},
|
||||
mocks: { $t: (key, params) => key + (params ? JSON.stringify(params) : '') },
|
||||
directives: { 'b-tooltip': {} },
|
||||
localVue,
|
||||
});
|
||||
}
|
||||
|
||||
it('returns a vue instance', () => {
|
||||
wrapper = makeWrapper();
|
||||
expect(wrapper.isVueInstance()).to.be.true;
|
||||
});
|
||||
|
||||
describe('Due date calculation', () => {
|
||||
let clock;
|
||||
|
||||
function setClockTo (time) {
|
||||
const now = moment(time);
|
||||
clock = sinon.useFakeTimers(now.toDate());
|
||||
return now;
|
||||
}
|
||||
|
||||
afterEach(() => {
|
||||
clock.restore();
|
||||
});
|
||||
|
||||
it('formats due date to today if due today', () => {
|
||||
const now = setClockTo('2019-09-17T17:57:00+02:00');
|
||||
wrapper = makeWrapper({ date: now });
|
||||
|
||||
expect(wrapper.vm.formatDueDate()).to.equal('dueIn{"dueIn":"today"}');
|
||||
});
|
||||
|
||||
it('formats due date to tomorrow if due tomorrow', () => {
|
||||
const now = setClockTo('2012-06-12T14:17:28Z');
|
||||
wrapper = makeWrapper({ date: now.add(1, 'day') });
|
||||
|
||||
expect(wrapper.vm.formatDueDate()).to.equal('dueIn{"dueIn":"in a day"}');
|
||||
});
|
||||
|
||||
it('formats due date to 5 days if due in 5 days', () => {
|
||||
const now = setClockTo();
|
||||
wrapper = makeWrapper({ date: now.add(5, 'days') });
|
||||
|
||||
expect(wrapper.vm.formatDueDate()).to.equal('dueIn{"dueIn":"in 5 days"}');
|
||||
});
|
||||
|
||||
it('formats due date to tomorrow if today but before dayStart', () => {
|
||||
const now = setClockTo('2019-06-12T04:23:37+02:00');
|
||||
wrapper = makeWrapper({ date: now.add(8, 'hours') }, { preferences: { dayStart: 7 } });
|
||||
|
||||
expect(wrapper.vm.formatDueDate()).to.equal('dueIn{"dueIn":"in a day"}');
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user