def setUp(self): # main start date self.main_start = datetime(2015, 1, 1, 18, 00) self.main_end = datetime(2015, 1, 1, 20, 00) # Create an event with a recurrence of monthly on the 3rd monday. self.event = mommy.make( 'events.Event', start=self.main_start, end=self.main_end, recurrences='RRULE:FREQ=MONTHLY;BYDAY=3MO') self.first_occ = Occurrence.from_event(self.event, datetime(2015, 1, 18, 16, 00)) self.first_occ.save() self.second_occ = Occurrence.from_event(self.event, datetime(2015, 2, 18, 16, 00)) self.second_occ.save()
def test_set_template_no_template_string(self, mock_get_template_context): # Create occurrence occurrence_start = datetime(2015, 2, 1, 12, 00) occurrence_end = datetime(2015, 2, 1, 18, 00) occ = Occurrence.from_event(self.event, occurrence_start, occurrence_end) # getting context returns mock context string mock_get_template_context.is_callable().returns('context') # Expact the default template to be set on the occurrence occ.default_a_field_template = 'default jinja template' # Jinja template engine is selected and is passed the template string, render is called on the template mock_jinja_engine = fudge.Fake() mock_template = mock_jinja_engine.expects('from_string').with_args('default jinja template').returns_fake() mock_template.expects('render').with_args('context').returns('rendered context') mock_engines = { 'jinja2': mock_jinja_engine } patched_engines = fudge.patch_object(events_models, 'engines', mock_engines) # call set_template occ.set_template('a_field') self.assertEqual(occ.a_field, 'rendered context') patched_engines.restore()
def test_update_template_description(self, mock_set_template): mock_set_template.is_callable().with_args('description', 'jinja description template') occurrence_start = datetime(2015, 2, 1, 12, 00) occurrence_end = datetime(2015, 2, 1, 18, 00) occ = Occurrence.from_event(self.event, occurrence_start, occurrence_end) occ.update_template_description()
def test_from_event_no_occurrence_end_created(self, mock_title, mock_description): # provised mocked template functions as we expect them not to be called occurrence_start = datetime(2015, 2, 1, 12, 00) occ = Occurrence.from_event(self.event, occurrence_start) self.assertEqual(occ.start, occurrence_start) self.assertEqual(occ.original_start, occurrence_start) orig_end = datetime(2015, 2, 1, 16, 00) self.assertEqual(occ.end, orig_end) self.assertEqual(occ.original_end, orig_end) self.assertEqual(occ.event, self.event) self.assertEqual(occ.location, self.event.location)
def test_get_template_context(self): # Create occurrence occurrence_start = datetime(2015, 2, 1, 12, 00) occurrence_end = datetime(2015, 2, 1, 18, 00) occ = Occurrence.from_event(self.event, occurrence_start, occurrence_end) context = occ.get_template_context() self.assertEqual(context, { 'occ': occ, 'event': self.event })
def test_from_event_occurrence_created(self, mock_title, mock_description): # An alternative end time is provided occurrence_start = datetime(2015, 2, 1, 12, 00) occurrence_end = datetime(2015, 2, 1, 18, 00) occ = Occurrence.from_event(self.event, occurrence_start, occurrence_end) self.assertEqual(occ.start, occurrence_start) self.assertEqual(occ.original_start, occurrence_start) orig_end = datetime(2015, 2, 1, 18, 00) self.assertEqual(occ.end, orig_end) self.assertEqual(occ.original_end, orig_end) self.assertEqual(occ.event, self.event) self.assertEqual(occ.location, self.event.location)
def test_from_event_occurrence_use_templates_enabled(self, mock_title, mock_description): # Check to make sure they are called mock_title.expects_call() mock_description.expects_call() occurrence_start = datetime(2015, 2, 1, 12, 00) occ = Occurrence.from_event(self.event, occurrence_start, use_templates=True) self.assertEqual(occ.start, occurrence_start) self.assertEqual(occ.original_start, occurrence_start) orig_end = datetime(2015, 2, 1, 16, 00) self.assertEqual(occ.end, orig_end) self.assertEqual(occ.event, self.event) self.assertEqual(occ.location, self.event.location)
def run(self): ctree = CachedCategoryTree() tester_api = User.objects.get(username='******') village_vanguard = Place.objects.get(slug='village-vanguard') for concrete_category in ctree.concretes: for n_events in xrange(self.n_events_per_concrete_category): # create an event title = '%s event #%i' % (concrete_category.title, n_events) e = Event( xid = 'xid-%i' % n_events, title = title, slug = slugify(title), description = 'This is a test `%s`.\n\nSome Mitch:\n%s' % (title, self.description), submitted_by = tester_api, url = 'http://abextratech.com/', image_url = 'http://www3.pictures.fp.zimbio.com/Vicky+Cristina+Barcelona+Movie+Stills+-Zma0rlbU7Tl.jpg', video_url = 'http://www.youtube.com/watch?v=a1Y73sPHKxw' ) e.concrete_category = concrete_category e.save() # add some abstract categories to it abstract_leaves = ctree.leaves(ctree.abstract_node) divergent_leaves = unique_everseen(abstract_leaves, lambda c: c.parent) for ac in random.sample(list(divergent_leaves), random.randint(1, self.max_abstract_categories)): e.categories.add(ac) # add some occurrences for n_occurences in xrange(random.randint(1, self.max_occurrences_per_event)): today = datetime.date.today() Occurrence( event = e, place = village_vanguard, one_off_place = "AbextraTech @ 93 Leonard St., New York, NY 10013", start_date = today, start_time = datetime.datetime.now().time(), end_date = today, end_time = datetime.datetime.now().time(), is_all_day = False ).save()
def test_from_event_wrong_occurrence_start(self): with self.assertRaises(AssertionError): Occurrence.from_event(self.event, 'string date')
def test_from_event_no_occurrence_start(self): with self.assertRaises(TypeError): Occurrence.from_event(self.event)