Exemple #1
0
    def testSaveCalendarEntry(self):
        startDate = date(2015, 1, 14)
        endDate = date(2015, 1, 15)
        daysWeek = [2]
        testHW = "my homework"
        testEvent = "my event"

        expectedDateEvent = [DBM.DateEvent(date=startDate, event=testEvent, homework=testHW)]

        # overwrite existing session values
        session = {'username': '******', 'currentPassword': '******', 'currentSyllabus': self.syllabusName}

        # prepare the session cookie to be used
        serialized = self.secure_cookie_serializer.serialize('session', session)
        headers = {'Cookie': 'session=%s' % serialized}

        calendar = Calendar.getCurrentCalendar(self.syllabusName)
        calendar.entries = Calendar.generateEntryRange(startDate, endDate, daysWeek)
        calendar.put()

        # there should be one entry in the calendar entries at this point
        assert (calendar.entries == [DBM.DateEvent(date=startDate, event="", homework="")])

        params = {'homework': [testHW], 'event': [testEvent]}
        self.testapp.post("/updateCalendarEntries", params=params, headers=headers)

        # get the savePolicy page and submit information
        with mock.patch('jinja2.Template.render') as r2r:
            result = self.testapp.get("/syllabusStepCalendar.html", headers=headers)

            # not there shouldn't be any entries in the current calendar
            r2r.assert_called_with(
                {'progress': 7, 'weekdayPrinter': Calendar.weekdayPrinter, 'date_events': expectedDateEvent})
Exemple #2
0
    def testGetCurrentCalendarWhenPopulated(self):
        expectedResult = DBM.Calendar(key=ndb.Key(self.syllabusName, 'calendar name', 'Calendar', 3),
                                      entries=self.entry_response,
                                      name=u'MyTestSyllabus')

        Calendar.getCurrentCalendar(self.syllabusName)
        result = Calendar.getCurrentCalendar(self.syllabusName)
        assert (result == expectedResult)
Exemple #3
0
    def testGetCurrentCalendarSyllabusLinkage(self):
        expectedResult = ndb.Key(self.syllabusName, 'calendar name', 'Calendar', 3)

        Calendar.getCurrentCalendar(self.syllabusName)

        result = DBM.Syllabus.query(ancestor=DBM.SyllabusKey(self.syllabusName)).fetch(1)[0].calendar

        assert (result == expectedResult)
Exemple #4
0
    def testAddDate(self):
        goodDate = date(2015, 1, 1)
        calendarName = "testCal"
        calendar = DBM.Calendar(parent=DBM.CalendarKey(calendarName), name=calendarName,
                                entries=[DBM.DateEvent(date=goodDate, event="")], daysActive=[0])
        calendar.put()
        toAddDate = date(2015, 1, 2)

        Calendar.addDateToCalendar(calendarName, toAddDate)

        calendar = DBM.Calendar.query(ancestor=DBM.CalendarKey(calendarName)).fetch()[0]

        assert (len(calendar.entries) == 2)
        assert (calendar.entries[1].date == toAddDate)
Exemple #5
0
    def testCopyCalendar(self):
        calendarA = "A calendar"
        calendarB = "B calendar"

        ADate = DBM.DateEvent(date=date(2015, 1, 1), event="thing", homework="read")
        BDate = DBM.DateEvent(date=date(2015, 2, 3))

        DBM.Calendar(parent=DBM.CalendarKey(calendarA), name=calendarA, entries=[ADate]).put()
        DBM.Calendar(parent=DBM.CalendarKey(calendarB), name=calendarB, entries=[BDate]).put()

        Calendar.copyCalendar(calendarA, calendarB)

        calendarB = DBM.Calendar.query(ancestor=DBM.CalendarKey(calendarB)).fetch(1)[0]
        assert (calendarB.entries[0].event == ADate.event)
        assert (calendarB.entries[0].homework == ADate.homework)

        if __name__ == '__main__':
            unittest.main()
Exemple #6
0
    def testGenerateEntryRange(self):
        startDate = date(2015, 1, 5)
        endDate = date(2015, 1, 12)
        daysWeek = [1, 3]

        expectedResult = [DBM.DateEvent(date=date(2015, 1, 6), event="", homework=""),
                          DBM.DateEvent(date=date(2015, 1, 8), event="", homework="")]

        result = Calendar.generateEntryRange(startDate, endDate, daysWeek)

        assert (result == expectedResult)
Exemple #7
0
    def setUp(self):
        self.testbed = testbed.Testbed()
        self.testbed.activate()
        self.testbed.init_datastore_v3_stub()
        self.testbed.init_memcache_stub()

        # create a cookie serializer to emulate our sessions
        self.secure_cookie_serializer = SecureCookieSerializer('no-one-will-guess-kwsfs-secret-key')
        sessionConfig = {}
        sessionConfig['webapp2_extras.sessions'] = {
            'secret_key': 'no-one-will-guess-kwsfs-secret-key',
        }
        # redirect Jinja Env to a directory up
        Base.JINJA_ENVIRONMENT = jinja2.Environment(
            loader=jinja2.FileSystemLoader('../html'),
            extensions=['jinja2.ext.autoescape'],
            autoescape=True)

        # prepare env with only needed URLs
        app = webapp2.WSGIApplication([
            ('/syllabusStepCalendar.html', Calendar.CalendarHandler),
            ('/deleteCalendarEntry', Calendar.DeleteCalendarEntryHandler),
            ('/updateCalendarEntries', Calendar.UpdateCalendarEntriesHandler)
        ], debug=True, config=sessionConfig)

        self.testapp = webtest.TestApp(app)

        # TODO: replace this with a parser mock once the parser is integrated
        # This is used to verify functionality in tests that are not testing entry's results
        # Entry is tested separately, and these responses allows further test isolation
        self.start_date = date(2015, 8, 1)
        self.end_date = date(2016, 2, 1)
        self.days_of_week = [0, 2, 4]
        self.entry_response = Calendar.generateEntryRange(self.start_date, self.end_date, self.days_of_week)

        # create a test user
        newUser = DBM.User(parent=DBM.UserKey("rock"),
                           username="******", password="******")
        newUser.put()

        # create a test syllabus
        self.syllabusKey = DBM.SyllabusKey("MyTestSyllabus")
        self.syllabusName = "MyTestSyllabus"
        newSyllabus = DBM.Syllabus(parent=self.syllabusKey, name=self.syllabusName,
                                   active=False)
        newSyllabus.put()
Exemple #8
0
    def testGetClassesAndDays(self):
        goodDate = date(2015, 1, 1)
        badDate = date(2015, 2, 1)

        # syllabus I want to hit
        toHit = DBM.Syllabus(active=True, course=DBM.Course(department="cs", course_number=101, section_number=1))
        cal1 = DBM.Calendar(entries=[DBM.DateEvent(date=goodDate, event="")], daysActive=[3])
        cal1.put()
        toHit.calendar = cal1.key
        toHit.put()
        # syllabus I don't want to hit
        toMiss = DBM.Syllabus(active=True, course=DBM.Course(department="ab", course_number=102, section_number=2))
        cal2 = DBM.Calendar(entries=[DBM.DateEvent(date=badDate, event="")], daysActive=[3])
        cal2.put()
        toMiss.calendar = cal2.key
        toMiss.put()

        result = Calendar.getClasssesAndDays(goodDate, goodDate)

        assert (result == [[toHit]])