def test_update_milestone_without_name(self): cursor = self.db.cursor() cursor.execute("INSERT INTO milestone (name) VALUES ('Test')") cursor.close() milestone = Milestone(self.env, 'Test') milestone.name = None self.assertRaises(AssertionError, milestone.update)
def test_create_milestone(self): milestone = Milestone(self.env) milestone.name = 'Test' milestone.insert() cursor = self.db.cursor() cursor.execute("SELECT name,due,completed,description FROM milestone " "WHERE name='Test'") self.assertEqual(('Test', 0, 0, ''), cursor.fetchone())
def test_delete_milestone(self): cursor = self.db.cursor() cursor.execute("INSERT INTO milestone (name) VALUES ('Test')") cursor.close() milestone = Milestone(self.env, 'Test') milestone.delete() cursor = self.db.cursor() cursor.execute("SELECT * FROM milestone WHERE name='Test'") self.assertEqual(None, cursor.fetchone())
def test_new_milestone(self): milestone = Milestone(self.env) self.assertEqual(False, milestone.exists) self.assertEqual(None, milestone.name) self.assertEqual(0, milestone.due) self.assertEqual(0, milestone.completed) self.assertEqual('', milestone.description)
def test_delete_milestone_retarget_tickets(self): cursor = self.db.cursor() cursor.execute("INSERT INTO milestone (name) VALUES ('Test')") cursor.close() tkt1 = Ticket(self.env) tkt1.populate({'summary': 'Foo', 'milestone': 'Test'}) tkt1.insert() tkt2 = Ticket(self.env) tkt2.populate({'summary': 'Bar', 'milestone': 'Test'}) tkt2.insert() milestone = Milestone(self.env, 'Test') milestone.delete(retarget_to='Other') self.assertEqual('Other', Ticket(self.env, tkt1.id)['milestone']) self.assertEqual('Other', Ticket(self.env, tkt2.id)['milestone'])
def test_update_milestone_update_tickets(self): cursor = self.db.cursor() cursor.execute("INSERT INTO milestone (name) VALUES ('Test')") cursor.close() tkt1 = Ticket(self.env) tkt1.populate({'summary': 'Foo', 'milestone': 'Test'}) tkt1.insert() tkt2 = Ticket(self.env) tkt2.populate({'summary': 'Bar', 'milestone': 'Test'}) tkt2.insert() milestone = Milestone(self.env, 'Test') milestone.name = 'Testing' milestone.update() self.assertEqual('Testing', Ticket(self.env, tkt1.id)['milestone']) self.assertEqual('Testing', Ticket(self.env, tkt2.id)['milestone'])
def process_request(self, req): req.perm.assert_permission('TICKET_CREATE') db = self.env.get_db_cnx() if req.method == 'POST' and not req.args.has_key('preview'): self._do_create(req, db) ticket = Ticket(self.env, db=db) ticket.populate(req.args) ticket.values.setdefault('reporter', util.get_reporter_id(req)) if ticket.values.has_key('description'): description = wiki_to_html(ticket['description'], self.env, req, db) req.hdf['newticket.description_preview'] = description req.hdf['title'] = 'New Ticket' req.hdf['newticket'] = dict( zip(ticket.values.keys(), [util.escape(value) for value in ticket.values.values()])) field_names = [ field['name'] for field in ticket.fields if not field.get('custom') ] if 'owner' in field_names: curr_idx = field_names.index('owner') if 'cc' in field_names: insert_idx = field_names.index('cc') else: insert_idx = len(field_names) if curr_idx < insert_idx: ticket.fields.insert(insert_idx, ticket.fields[curr_idx]) del ticket.fields[curr_idx] for field in ticket.fields: name = field['name'] del field['name'] if name in ('summary', 'reporter', 'description', 'type', 'status', 'resolution'): field['skip'] = True elif name == 'owner': field['label'] = 'Assign to' elif name == 'milestone': # Don't make completed milestones available for selection options = field['options'] for option in field['options']: milestone = Milestone(self.env, option, db=db) if milestone.is_completed: options.remove(option) field['options'] = options req.hdf['newticket.fields.' + name] = field add_stylesheet(req, 'common/css/ticket.css') return 'newticket.cs', None
def test_existing_milestone(self): cursor = self.db.cursor() cursor.execute("INSERT INTO milestone (name) VALUES ('Test')") cursor.close() milestone = Milestone(self.env, 'Test') self.assertEqual(True, milestone.exists) self.assertEqual('Test', milestone.name) self.assertEqual(0, milestone.due) self.assertEqual(0, milestone.completed) self.assertEqual('', milestone.description)
def test_new_milestone_empty_name(self): """ Verifies that specifying an empty milestone name results in the milestone being correctly detected as non-existent. """ milestone = Milestone(self.env, '') self.assertEqual(False, milestone.exists) self.assertEqual(None, milestone.name) self.assertEqual(0, milestone.due) self.assertEqual(0, milestone.completed) self.assertEqual('', milestone.description)
def test_select_milestones(self): cursor = self.db.cursor() cursor.executemany("INSERT INTO milestone (name) VALUES (%s)", [('1.0', ), ('2.0', )]) cursor.close() milestones = list(Milestone.select(self.env)) self.assertEqual('1.0', milestones[0].name) assert milestones[0].exists self.assertEqual('2.0', milestones[1].name) assert milestones[1].exists
def test_update_milestone(self): cursor = self.db.cursor() cursor.execute("INSERT INTO milestone (name) VALUES ('Test')") cursor.close() milestone = Milestone(self.env, 'Test') milestone.due = 42 milestone.completed = 43 milestone.description = 'Foo bar' milestone.update() cursor = self.db.cursor() cursor.execute("SELECT * FROM milestone WHERE name='Test'") self.assertEqual(('Test', 42, 43, 'Foo bar'), cursor.fetchone())
def process_request(self, req): req.perm.assert_permission('ROADMAP_VIEW') req.hdf['title'] = 'Roadmap' showall = req.args.get('show') == 'all' req.hdf['roadmap.showall'] = showall db = self.env.get_db_cnx() milestones = [] for idx, milestone in enum(Milestone.select(self.env, showall)): hdf = milestone_to_hdf(self.env, db, req, milestone) milestones.append(hdf) req.hdf['roadmap.milestones'] = milestones for idx,milestone in enum(milestones): prefix = 'roadmap.milestones.%d.' % idx tickets = get_tickets_for_milestone(self.env, db, milestone['name'], 'owner') req.hdf[prefix + 'stats'] = calc_ticket_stats(tickets) for k, v in get_query_links(self.env, milestone['name']).items(): req.hdf[prefix + 'queries.' + k] = escape(v) milestone['tickets'] = tickets # for the iCalendar view if req.args.get('format') == 'ics': self.render_ics(req, db, milestones) return add_stylesheet(req, 'common/css/roadmap.css') # FIXME should use the 'webcal:' scheme, probably username = None if req.authname and req.authname != 'anonymous': username = req.authname icshref = self.env.href.roadmap(show=req.args.get('show'), user=username, format='ics') add_link(req, 'alternate', icshref, 'iCalendar', 'text/calendar', 'ics') return 'roadmap.cs', None
def test_create_milestone_without_name(self): milestone = Milestone(self.env) self.assertRaises(AssertionError, milestone.insert)