コード例 #1
0
        public AttendanceListDocumentGenerator(IAttendanceListData data, ILocalizedNames names)
        {
            if (data == null || names == null)
            {
                throw new ArgumentNullException();
            }

            _data  = data;
            _names = names;
        }
コード例 #2
0
        public string GeneratePdfDocumentFilename(IAttendanceListData data)
        {
            if (data == null)
            {
                throw new ArgumentNullException("IAttendanceListData cannot be null");
            }

            string fileExtension = ".pdf";

            // Get month localized name and year converted to string
            string documentsMonth = _names.GetMonthName(data.Month);
            string documentsYear  = data.Year.ToString();

            // Get current DateTime
            DateTime now = _dateTimeProvider.Now;

            // Get current date time converted to string
            string currentYear   = now.Year.ToString();
            string currentMonth  = GetStringWithZeroAtTheBegnning(now.Month);
            string currentDay    = GetStringWithZeroAtTheBegnning(now.Day);
            string currentHour   = GetStringWithZeroAtTheBegnning(now.Hour);
            string currentMinute = GetStringWithZeroAtTheBegnning(now.Minute);
            string currentSecond = GetStringWithZeroAtTheBegnning(now.Second);

            // Build a result string
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.Append(documentsMonth);
            stringBuilder.Append("_");
            stringBuilder.Append(documentsYear);
            stringBuilder.Append("_");
            stringBuilder.Append(currentDay);
            stringBuilder.Append(currentMonth);
            stringBuilder.Append(currentYear);
            stringBuilder.Append(currentHour);
            stringBuilder.Append(currentMinute);
            stringBuilder.Append(currentSecond);
            stringBuilder.Append(fileExtension);

            return(stringBuilder.ToString());
        }
        public void GeneratePdfDocumentFilename_GivenData_ReturnsCorrectFileName(Month month, int year, DateTime dateTime, string expectedResult)
        {
            ILocalizedNames localizedNames = Mock.Of <ILocalizedNames>(l => l.GetMonthName(Month.January) == "January" &&
                                                                       l.GetMonthName(Month.February) == "February" &&
                                                                       l.GetMonthName(Month.March) == "March" &&
                                                                       l.GetMonthName(Month.April) == "April" &&
                                                                       l.GetMonthName(Month.May) == "May" &&
                                                                       l.GetMonthName(Month.June) == "June" &&
                                                                       l.GetMonthName(Month.July) == "July" &&
                                                                       l.GetMonthName(Month.September) == "September" &&
                                                                       l.GetMonthName(Month.October) == "October" &&
                                                                       l.GetMonthName(Month.November) == "November" &&
                                                                       l.GetMonthName(Month.December) == "December");
            IAttendanceListData attendanceListData = Mock.Of <IAttendanceListData>(a => a.Month == month && a.Year == year);
            IDateTimeProvider   dateTimeProvider   = Mock.Of <IDateTimeProvider>(d => d.Now == dateTime);
            FilenameGenerator   fileNameGenerator  = new FilenameGenerator(localizedNames, dateTimeProvider);

            string fileName = fileNameGenerator.GeneratePdfDocumentFilename(attendanceListData);

            Assert.That(fileName, Is.EqualTo(expectedResult));
        }
        private AttendanceListDocumentGenerator GetAttendanceListDocumentGenerator()
        {
            IList<IPerson> people = new List<IPerson>
            {
                Mock.Of<IPerson>(p => p.FirstName == "James" && p.LastName == "Hunt"),
                Mock.Of<IPerson>(p => p.FirstName == "William" && p.LastName == "Jefferson"),
                Mock.Of<IPerson>(p => p.FirstName == "Ryan" && p.LastName == "Carroll")
            };

            IList<IDay> days = new List<IDay>
            {
                Mock.Of<IDay>(d => d.DayOfMonth == 1 && d.FormattedDayOfMonth == "1." && d.DayOfWeek == DayOfWeek.Tuesday && d.Holiday == Holiday.NewYearsDay),
                Mock.Of<IDay>(d => d.DayOfMonth == 2 && d.FormattedDayOfMonth == "2." && d.DayOfWeek == DayOfWeek.Wednesday),
                Mock.Of<IDay>(d => d.DayOfMonth == 3 && d.FormattedDayOfMonth == "3." && d.DayOfWeek == DayOfWeek.Thursday),
                Mock.Of<IDay>(d => d.DayOfMonth == 4 && d.FormattedDayOfMonth == "4." && d.DayOfWeek == DayOfWeek.Friday),
                Mock.Of<IDay>(d => d.DayOfMonth == 5 && d.FormattedDayOfMonth == "5." && d.DayOfWeek == DayOfWeek.Saturday),
                Mock.Of<IDay>(d => d.DayOfMonth == 6 && d.FormattedDayOfMonth == "6." && d.DayOfWeek == DayOfWeek.Sunday && d.Holiday == Holiday.Epiphany),
                Mock.Of<IDay>(d => d.DayOfMonth == 7 && d.FormattedDayOfMonth == "7." && d.DayOfWeek == DayOfWeek.Monday),
                Mock.Of<IDay>(d => d.DayOfMonth == 8 && d.FormattedDayOfMonth == "8." && d.DayOfWeek == DayOfWeek.Tuesday),
                Mock.Of<IDay>(d => d.DayOfMonth == 9 && d.FormattedDayOfMonth == "9." && d.DayOfWeek == DayOfWeek.Wednesday),
                Mock.Of<IDay>(d => d.DayOfMonth == 10 && d.FormattedDayOfMonth == "10." && d.DayOfWeek == DayOfWeek.Thursday),
                Mock.Of<IDay>(d => d.DayOfMonth == 11 && d.FormattedDayOfMonth == "11." && d.DayOfWeek == DayOfWeek.Friday),
                Mock.Of<IDay>(d => d.DayOfMonth == 12 && d.FormattedDayOfMonth == "12." && d.DayOfWeek == DayOfWeek.Saturday),
                Mock.Of<IDay>(d => d.DayOfMonth == 13 && d.FormattedDayOfMonth == "13." && d.DayOfWeek == DayOfWeek.Sunday),
                Mock.Of<IDay>(d => d.DayOfMonth == 14 && d.FormattedDayOfMonth == "14." && d.DayOfWeek == DayOfWeek.Monday),
                Mock.Of<IDay>(d => d.DayOfMonth == 15 && d.FormattedDayOfMonth == "15." && d.DayOfWeek == DayOfWeek.Tuesday),
                Mock.Of<IDay>(d => d.DayOfMonth == 16 && d.FormattedDayOfMonth == "16." && d.DayOfWeek == DayOfWeek.Wednesday),
                Mock.Of<IDay>(d => d.DayOfMonth == 17 && d.FormattedDayOfMonth == "17." && d.DayOfWeek == DayOfWeek.Thursday),
                Mock.Of<IDay>(d => d.DayOfMonth == 18 && d.FormattedDayOfMonth == "18." && d.DayOfWeek == DayOfWeek.Friday),
                Mock.Of<IDay>(d => d.DayOfMonth == 19 && d.FormattedDayOfMonth == "19." && d.DayOfWeek == DayOfWeek.Saturday),
                Mock.Of<IDay>(d => d.DayOfMonth == 20 && d.FormattedDayOfMonth == "20." && d.DayOfWeek == DayOfWeek.Sunday),
                Mock.Of<IDay>(d => d.DayOfMonth == 21 && d.FormattedDayOfMonth == "21." && d.DayOfWeek == DayOfWeek.Monday),
                Mock.Of<IDay>(d => d.DayOfMonth == 22 && d.FormattedDayOfMonth == "22." && d.DayOfWeek == DayOfWeek.Tuesday),
                Mock.Of<IDay>(d => d.DayOfMonth == 23 && d.FormattedDayOfMonth == "23." && d.DayOfWeek == DayOfWeek.Wednesday),
                Mock.Of<IDay>(d => d.DayOfMonth == 24 && d.FormattedDayOfMonth == "24." && d.DayOfWeek == DayOfWeek.Thursday),
                Mock.Of<IDay>(d => d.DayOfMonth == 25 && d.FormattedDayOfMonth == "25." && d.DayOfWeek == DayOfWeek.Friday),
                Mock.Of<IDay>(d => d.DayOfMonth == 26 && d.FormattedDayOfMonth == "26." && d.DayOfWeek == DayOfWeek.Saturday),
                Mock.Of<IDay>(d => d.DayOfMonth == 27 && d.FormattedDayOfMonth == "27." && d.DayOfWeek == DayOfWeek.Sunday),
                Mock.Of<IDay>(d => d.DayOfMonth == 28 && d.FormattedDayOfMonth == "28." && d.DayOfWeek == DayOfWeek.Monday),
                Mock.Of<IDay>(d => d.DayOfMonth == 29 && d.FormattedDayOfMonth == "29." && d.DayOfWeek == DayOfWeek.Tuesday),
                Mock.Of<IDay>(d => d.DayOfMonth == 30 && d.FormattedDayOfMonth == "30." && d.DayOfWeek == DayOfWeek.Wednesday),
                Mock.Of<IDay>(d => d.DayOfMonth == 31 && d.FormattedDayOfMonth == "31." && d.DayOfWeek == DayOfWeek.Thursday),
            };

            IAttendanceListData stubAttendanceListData = Mock.Of<IAttendanceListData>
                                                       (a =>
                                                        a.People == people &&
                                                        a.Days == days &&
                                                        a.Month == Month.January &&
                                                        a.Year == 2019 &&
                                                        a.MaxNumberOfFullnames == 7);

            ILocalizedNames names = Mock.Of<ILocalizedNames>
                                   (n =>
                                    n.GetDocumentTitle(Month.January, 2019) == "January 2019" &&
                                    n.GetDayOfWeekAbbreviation(DayOfWeek.Monday) == "Mon." &&
                                    n.GetDayOfWeekAbbreviation(DayOfWeek.Tuesday) == "Tue." &&
                                    n.GetDayOfWeekAbbreviation(DayOfWeek.Wednesday) == "Wed." &&
                                    n.GetDayOfWeekAbbreviation(DayOfWeek.Thursday) == "Thu." &&
                                    n.GetDayOfWeekAbbreviation(DayOfWeek.Friday) == "Fri." &&
                                    n.GetDayOfWeekAbbreviation(DayOfWeek.Saturday) == "Sat." &&
                                    n.GetDayOfWeekAbbreviation(DayOfWeek.Sunday) == "Sun." &&
                                    n.GetDayOfWeekName(DayOfWeek.Sunday) == "Sunday" &&
                                    n.GetHolidayName(Holiday.NewYearsDay) == "New Years Day" &&
                                    n.GetHolidayName(Holiday.Epiphany) == "Epiphany");

            return new AttendanceListDocumentGenerator(stubAttendanceListData, names);
        }