Exemple #1
0
        public void InterpretHoursRecordMessage_canInterpretHoursYesterdayForProject()
        {
            var sut = new HoursInterpreter().InterpretMessage(ToPayload("record au 8 yesterday"));

            sut.Date.Date.Should().Be(DateTime.UtcNow.AddDays(-1).Date);
            sut.Hours.Should().Be(8d);
        }
Exemple #2
0
        public void InterpretHoursRecordMessage_canInterpretSickHours()
        {
            var sut = new HoursInterpreter().InterpretMessage(ToPayload("record sick 8 \"flu\""));

            sut.Date.Date.Should().Be(DateTime.UtcNow.Date);
            sut.Hours.Should().Be(8d);
            sut.IsBillable.Should().BeFalse();
            sut.TimeEntryType.Should().Be(TimeEntryTypeEnum.Sick);
            sut.NonBillReason.Should().Be("flu");
        }
Exemple #3
0
        public void InterpretHoursRecordMessage_canInterpretHoursTodayWithWfh()
        {
            var sut = new HoursInterpreter().InterpretMessage(ToPayload("record au 8 wfh"));

            sut.Hours.Should().Be(8d);
            sut.IsWorkFromHome.Should().BeTrue();
            sut.Project.Should().Be("au");
            sut.TimeEntryType.Should().Be(TimeEntryTypeEnum.BillableProject);
            sut.Date.Day.Should().Be(DateTime.UtcNow.Day);
        }
Exemple #4
0
        public void InterpretHoursRecordMessage_canInterpretVacationEasyDate()
        {
            var sut = new HoursInterpreter().InterpretMessage(ToPayload("record vacation 8 jan-21"));

            sut.Date.Date.Should().Be(new DateTime(2019, 1, 21, 0, 0, 0, DateTimeKind.Utc));
            sut.Hours.Should().Be(8d);
            sut.IsBillable.Should().BeFalse();
            sut.TimeEntryType.Should().Be(TimeEntryTypeEnum.Vacation);
            sut.NonBillReason.Should().BeNullOrEmpty();
        }
Exemple #5
0
        public void InterpretHoursRecordMessage_canInterpretVacationHours()
        {
            var sut = new HoursInterpreter().InterpretMessage(ToPayload("record vacation 8"));

            sut.Date.Date.Should().Be(DateTime.UtcNow.Date);
            sut.Hours.Should().Be(8d);
            sut.IsBillable.Should().BeFalse();
            sut.TimeEntryType.Should().Be(TimeEntryTypeEnum.Vacation);
            sut.NonBillReason.Should().BeNullOrEmpty();
        }
Exemple #6
0
        public void InterpretHoursRecordMessage_canInterpretHoursTodayForProjectWFH()
        {
            var sut = new HoursInterpreter().InterpretMessage(ToPayload("record au 8 wfh"));

            // change timezone on sut. date, and then compare the Date portion only.
            var tzi = TimeZoneInfo.FindSystemTimeZoneById("Asia/Kabul");

            var kabulTime = TimeZoneInfo.ConvertTimeFromUtc(sut.Date, tzi);

            sut.Hours.Should().Be(8d);
            sut.Project.Should().Be("au");
            sut.IsWorkFromHome.Should().BeTrue();
            sut.TimeEntryType.Should().Be(TimeEntryTypeEnum.BillableProject);

            kabulTime.Day.Should().Be(sut.Date.Day);
        }
Exemple #7
0
        public void InterpretHoursRecordMessage_canInterpretNonBillableWithVarietyText(string nonbillText, string description, double hours, string dateText)
        {
            var sut = new HoursInterpreter().InterpretMessage(ToPayload($"record {nonbillText} {hours:F1} {description} {dateText ?? ""}"));

            if (dateText != "some non bill reason")
            {
                sut.Date.Date.Should().Be(EasyDateParser.ParseEasyDate(dateText));
                sut.NonBillReason.Should().Be(description.Replace("\"", ""));
            }
            else
            {
                sut.Date.Date.Should().Be(EasyDateParser.ParseEasyDate(description));
                sut.NonBillReason.Should().Be(dateText.Replace("\"", ""));
            }

            sut.Hours.Should().Be(hours);
            sut.IsBillable.Should().BeFalse();
            sut.TimeEntryType.Should().Be(TimeEntryTypeEnum.NonBillable);
        }
Exemple #8
0
        public void InterpretHoursRecordMessage_doesNotFullyInterpretGibberish()
        {
            var sut = new HoursInterpreter().InterpretMessage(ToPayload("record au 8 yesterday or maybe today"));

            sut.ErrorMessage.Should().Be("Not sure how to interpret 'or maybe today'");
        }