def test_no_operator(self): klass = load_model(FIELDS['longitudinal_model']) tree = trees.create(klass) p = pipeline.LongitudinalQueryProcessor(tree=tree, study_models=STUDY_MODELS) qs = p.get_queryset() self.assertEqual(qs, None, 'No timeline if no event')
def test(self): mt = trees.create(Specimen) qs, alias = mt.add_joins(Link) self.assertEqual(str(qs.query), 'SELECT "specimen"."ALIQUOT_ID" FROM "specimen" LEFT OUTER JOIN "link" ON ("specimen"."ALIQUOT_ID" = "link"."ALIQUOT_ID")') qs, alias = mt.add_joins(Subject) self.assertEqual(str(qs.query), 'SELECT "specimen"."ALIQUOT_ID" FROM "specimen" LEFT OUTER JOIN "link" ON ("specimen"."ALIQUOT_ID" = "link"."ALIQUOT_ID") {join} "subject" ON ("link"."study_id" = "subject"."study_id")'.format(join=get_join_type()))
def setUp(self): ## Context klass = load_model(FIELDS['longitudinal_model']) tree = trees.create(klass) ctx = DataContext.objects.filter(name='default')[0] ## Get timeline long_events = DataContext.objects.filter(name='events')[0] p = pipeline.LongitudinalQueryProcessor(tree=tree, context=ctx, long_events=long_events, study_models=STUDY_MODELS) qs = p.get_queryset() ## Cache the results self.klass = klass self.tree = tree self.ctx = ctx self.long_events = long_events self.p = p self.qs = qs
def test(self): mt = trees.create(Specimen) qs, alias = mt.add_joins(Link) # Django 1.6 decided it likes to put extra whitespace around parens # for some reason so we do all the comparisons here after removing # all whitespace from the strings to avoid test failures because of # arbitrary whitespace from Django >= 1.6. self.assertEqual( str(qs.query).replace(' ', ''), 'SELECT "specimen"."ALIQUOT_ID" FROM "specimen" LEFT OUTER JOIN ' '"link" ON ("specimen"."ALIQUOT_ID" = "link"."ALIQUOT_ID")'. replace(' ', '')) qs, alias = mt.add_joins(Subject) self.assertEqual( str(qs.query).replace(' ', ''), 'SELECT "specimen"."ALIQUOT_ID" FROM "specimen" LEFT OUTER JOIN ' '"link" ON ("specimen"."ALIQUOT_ID" = "link"."ALIQUOT_ID") LEFT ' 'OUTER JOIN "subject" ON ("link"."study_id" = ' '"subject"."study_id")'.replace(' ', ''))
def test(self): mt = trees.create(Specimen) qs, alias = mt.add_joins(Link) # Django 1.6 decided it likes to put extra whitespace around parens # for some reason so we do all the comparisons here after removing # all whitespace from the strings to avoid test failures because of # arbitrary whitespace from Django >= 1.6. self.assertEqual( str(qs.query).replace(' ', ''), 'SELECT "specimen"."ALIQUOT_ID" FROM "specimen" LEFT OUTER JOIN ' '"link" ON ("specimen"."ALIQUOT_ID" = "link"."ALIQUOT_ID")' .replace(' ', '')) qs, alias = mt.add_joins(Subject) self.assertEqual( str(qs.query).replace(' ', ''), 'SELECT "specimen"."ALIQUOT_ID" FROM "specimen" LEFT OUTER JOIN ' '"link" ON ("specimen"."ALIQUOT_ID" = "link"."ALIQUOT_ID") {join} ' '"subject" ON ("link"."study_id" = "subject"."study_id")' .format(join=get_join_type()) .replace(' ', ''))
def setUp(self): self.office_mt = trees.create(models.Office) self.title_mt = trees.create(models.Title) self.employee_mt = trees.create(models.Employee) self.project_mt = trees.create(models.Project) self.meeting_mt = trees.create(models.Meeting)
def test_get_join_types(self): """ Django 1.6 decided it likes to put extra whitespace around parens for some reason so we do all the comparisons here after removing all whitespace from the strings to avoid test failures because of arbitrary whitespace from Django >= 1.6. """ self.office_mt = trees.create(models.Office) title_qs, alias = self.office_mt.add_joins(models.Title) self.assertEqual( str(title_qs.query).replace(' ', ''), 'SELECT "tests_office"."id", "tests_office"."location" FROM ' '"tests_office" LEFT OUTER JOIN "tests_employee" ON ' '("tests_office"."id" = "tests_employee"."office_id") {join} ' '"tests_title" ON ("tests_employee"."title_id" = ' '"tests_title"."id")' .format(join=get_join_type()) .replace(' ', '')) employee_qs, alias = self.office_mt.add_joins(models.Employee) self.assertEqual( str(employee_qs.query).replace(' ', ''), 'SELECT "tests_office"."id", "tests_office"."location" FROM ' '"tests_office" LEFT OUTER JOIN "tests_employee" ON ' '("tests_office"."id" = "tests_employee"."office_id")' .replace(' ', '')) project_qs, alias = self.office_mt.add_joins(models.Project) self.assertEqual( str(project_qs.query).replace(' ', ''), 'SELECT "tests_office"."id", "tests_office"."location" FROM ' '"tests_office" LEFT OUTER JOIN "tests_employee" ON ' '("tests_office"."id" = "tests_employee"."office_id") LEFT OUTER ' 'JOIN "tests_project_employees" ON ("tests_employee"."id" = ' '"tests_project_employees"."employee_id") LEFT OUTER JOIN ' '"tests_project" ON ("tests_project_employees"."project_id" = ' '"tests_project"."id")' .replace(' ', '')) meeting_qs, alias = self.office_mt.add_joins(models.Meeting) self.assertEqual( str(meeting_qs.query).replace(' ', ''), 'SELECT "tests_office"."id", "tests_office"."location" FROM ' '"tests_office" LEFT OUTER JOIN "tests_meeting" ON ' '("tests_office"."id" = "tests_meeting"."office_id")' .replace(' ', '')) self.title_mt = trees.create(models.Title) office_qs, alias = self.title_mt.add_joins(models.Office) self.assertEqual( str(office_qs.query).replace(' ', ''), 'SELECT "tests_title"."id", "tests_title"."name", ' '"tests_title"."salary" FROM "tests_title" LEFT OUTER JOIN ' '"tests_employee" ON ("tests_title"."id" = ' '"tests_employee"."title_id") {join} "tests_office" ON ' '("tests_employee"."office_id" = "tests_office"."id")' .format(join=get_join_type()) .replace(' ', '')) employee_qs, alias = self.title_mt.add_joins(models.Employee) self.assertEqual( str(employee_qs.query).replace(' ', ''), 'SELECT "tests_title"."id", "tests_title"."name", ' '"tests_title"."salary" FROM "tests_title" LEFT OUTER JOIN ' '"tests_employee" ON ("tests_title"."id" = ' '"tests_employee"."title_id")' .replace(' ', '')) project_qs, alias = self.title_mt.add_joins(models.Project) self.assertEqual( str(project_qs.query).replace(' ', ''), 'SELECT "tests_title"."id", "tests_title"."name", ' '"tests_title"."salary" FROM "tests_title" LEFT OUTER JOIN ' '"tests_employee" ON ("tests_title"."id" = ' '"tests_employee"."title_id") LEFT OUTER JOIN ' '"tests_project_employees" ON ("tests_employee"."id" = ' '"tests_project_employees"."employee_id") LEFT OUTER JOIN ' '"tests_project" ON ("tests_project_employees"."project_id" = ' '"tests_project"."id")' .replace(' ', '')) meeting_qs, alias = self.title_mt.add_joins(models.Meeting) self.assertEqual( str(meeting_qs.query).replace(' ', ''), 'SELECT "tests_title"."id", "tests_title"."name", ' '"tests_title"."salary" FROM "tests_title" LEFT OUTER JOIN ' '"tests_employee" ON ("tests_title"."id" = ' '"tests_employee"."title_id") LEFT OUTER JOIN ' '"tests_meeting_attendees" ON ("tests_employee"."id" = ' '"tests_meeting_attendees"."employee_id") LEFT OUTER JOIN ' '"tests_meeting" ON ("tests_meeting_attendees"."meeting_id" = ' '"tests_meeting"."id")' .replace(' ', '')) self.employee_mt = trees.create(models.Employee) title_qs, alias = self.employee_mt.add_joins(models.Title) self.assertEqual( str(title_qs.query).replace(' ', ''), 'SELECT "tests_employee"."id", "tests_employee"."firstName", ' '"tests_employee"."last_name", "tests_employee"."title_id", ' '"tests_employee"."office_id", "tests_employee"."manager_id" FROM ' '"tests_employee" INNER JOIN "tests_title" ON ' '("tests_employee"."title_id" = "tests_title"."id")' .replace(' ', '')) office_qs, alias = self.employee_mt.add_joins(models.Office) self.assertEqual( str(office_qs.query).replace(' ', ''), 'SELECT "tests_employee"."id", "tests_employee"."firstName", ' '"tests_employee"."last_name", "tests_employee"."title_id", ' '"tests_employee"."office_id", "tests_employee"."manager_id" FROM ' '"tests_employee" INNER JOIN "tests_office" ON ' '("tests_employee"."office_id" = "tests_office"."id")' .replace(' ', '')) project_qs, alias = self.employee_mt.add_joins(models.Project) self.assertEqual( str(project_qs.query).replace(' ', ''), 'SELECT "tests_employee"."id", "tests_employee"."firstName", ' '"tests_employee"."last_name", "tests_employee"."title_id", ' '"tests_employee"."office_id", "tests_employee"."manager_id" FROM ' '"tests_employee" LEFT OUTER JOIN "tests_project_employees" ON ' '("tests_employee"."id" = ' '"tests_project_employees"."employee_id") LEFT OUTER JOIN ' '"tests_project" ON ("tests_project_employees"."project_id" = ' '"tests_project"."id")' .replace(' ', '')) meeting_qs, alias = self.employee_mt.add_joins(models.Meeting) self.assertEqual( str(meeting_qs.query).replace(' ', ''), 'SELECT "tests_employee"."id", "tests_employee"."firstName", ' '"tests_employee"."last_name", "tests_employee"."title_id", ' '"tests_employee"."office_id", "tests_employee"."manager_id" ' 'FROM "tests_employee" LEFT OUTER JOIN "tests_meeting_attendees" ' 'ON ("tests_employee"."id" = ' '"tests_meeting_attendees"."employee_id") LEFT OUTER JOIN ' '"tests_meeting" ON ("tests_meeting_attendees"."meeting_id" = ' '"tests_meeting"."id")' .replace(' ', '')) self.project_mt = trees.create(models.Project) title_qs, alias = self.project_mt.add_joins(models.Title) self.assertEqual( str(title_qs.query).replace(' ', ''), 'SELECT "tests_project"."id", "tests_project"."name", ' '"tests_project"."manager_id", "tests_project"."due_date" FROM ' '"tests_project" LEFT OUTER JOIN "tests_project_employees" ON ' '("tests_project"."id" = "tests_project_employees"."project_id") ' 'LEFT OUTER JOIN "tests_employee" ON ' '("tests_project_employees"."employee_id" = ' '"tests_employee"."id") {join} "tests_title" ON ' '("tests_employee"."title_id" = "tests_title"."id")' .format(join=get_join_type()) .replace(' ', '')) office_qs, alias = self.project_mt.add_joins(models.Office) self.assertEqual( str(office_qs.query).replace(' ', ''), 'SELECT "tests_project"."id", "tests_project"."name", ' '"tests_project"."manager_id", "tests_project"."due_date" FROM ' '"tests_project" LEFT OUTER JOIN "tests_project_employees" ON ' '("tests_project"."id" = "tests_project_employees"."project_id") ' 'LEFT OUTER JOIN "tests_employee" ON ' '("tests_project_employees"."employee_id" = ' '"tests_employee"."id") {join} "tests_office" ON ' '("tests_employee"."office_id" = "tests_office"."id")' .format(join=get_join_type()) .replace(' ', '')) employee_qs, alias = self.project_mt.add_joins(models.Employee) self.assertEqual( str(employee_qs.query).replace(' ', ''), 'SELECT "tests_project"."id", "tests_project"."name", ' '"tests_project"."manager_id", "tests_project"."due_date" FROM ' '"tests_project" LEFT OUTER JOIN "tests_project_employees" ON ' '("tests_project"."id" = "tests_project_employees"."project_id") ' 'LEFT OUTER JOIN "tests_employee" ON ' '("tests_project_employees"."employee_id" = ' '"tests_employee"."id")' .replace(' ', '')) meeting_qs, alias = self.project_mt.add_joins(models.Meeting) self.assertEqual( str(meeting_qs.query).replace(' ', ''), 'SELECT "tests_project"."id", "tests_project"."name", ' '"tests_project"."manager_id", "tests_project"."due_date" FROM ' '"tests_project" LEFT OUTER JOIN "tests_meeting" ON ' '("tests_project"."id" = "tests_meeting"."project_id")' .replace(' ', '')) self.meeting_mt = trees.create(models.Meeting) title_qs, alias = self.meeting_mt.add_joins(models.Title) self.assertEqual( str(title_qs.query).replace(' ', ''), 'SELECT "tests_meeting"."id", "tests_meeting"."project_id", ' '"tests_meeting"."office_id", "tests_meeting"."start_time", ' '"tests_meeting"."end_time" FROM "tests_meeting" LEFT OUTER JOIN ' '"tests_meeting_attendees" ON ("tests_meeting"."id" = ' '"tests_meeting_attendees"."meeting_id") LEFT OUTER JOIN ' '"tests_employee" ON ("tests_meeting_attendees"."employee_id" = ' '"tests_employee"."id") {join} "tests_title" ON ' '("tests_employee"."title_id" = "tests_title"."id")' .format(join=get_join_type()) .replace(' ', '')) office_qs, alias = self.meeting_mt.add_joins(models.Office) self.assertEqual( str(office_qs.query).replace(' ', ''), 'SELECT "tests_meeting"."id", "tests_meeting"."project_id", ' '"tests_meeting"."office_id", "tests_meeting"."start_time", ' '"tests_meeting"."end_time" FROM "tests_meeting" INNER JOIN ' '"tests_office" ON ("tests_meeting"."office_id" = ' '"tests_office"."id")' .replace(' ', '')) employee_qs, alias = self.meeting_mt.add_joins(models.Employee) self.assertEqual( str(employee_qs.query).replace(' ', ''), 'SELECT "tests_meeting"."id", "tests_meeting"."project_id", ' '"tests_meeting"."office_id", "tests_meeting"."start_time", ' '"tests_meeting"."end_time" FROM "tests_meeting" LEFT OUTER JOIN ' '"tests_meeting_attendees" ON ("tests_meeting"."id" = ' '"tests_meeting_attendees"."meeting_id") LEFT OUTER JOIN ' '"tests_employee" ON ("tests_meeting_attendees"."employee_id" = ' '"tests_employee"."id")' .replace(' ', '')) project_qs, alias = self.meeting_mt.add_joins(models.Project) self.assertEqual( str(project_qs.query).replace(' ', ''), 'SELECT "tests_meeting"."id", "tests_meeting"."project_id", ' '"tests_meeting"."office_id", "tests_meeting"."start_time", ' '"tests_meeting"."end_time" FROM "tests_meeting" LEFT OUTER JOIN ' '"tests_project" ON ("tests_meeting"."project_id" = ' '"tests_project"."id")' .replace(' ', ''))
def setUp(self): self.office_mt = trees.create(models.Office) self.title_mt = trees.create(models.Title) self.employee_mt = trees.create(models.Employee) self.project_mt = trees.create(models.Project) self.meeting_mt = trees.create(models.Meeting)
def test_get_join_types(self): """ Django 1.6 decided it likes to put extra whitespace around parens for some reason so we do all the comparisons here after removing all whitespace from the strings to avoid test failures because of arbitrary whitespace from Django >= 1.6. """ self.office_mt = trees.create(models.Office) title_qs, alias = self.office_mt.add_joins(models.Title) self.assertEqual( str(title_qs.query).replace(' ', ''), 'SELECT "tests_office"."id", "tests_office"."location" FROM ' '"tests_office" LEFT OUTER JOIN "tests_employee" ON ' '("tests_office"."id" = "tests_employee"."office_id") LEFT OUTER ' 'JOIN "tests_title" ON ("tests_employee"."title_id" = ' '"tests_title"."id")'.replace(' ', '')) employee_qs, alias = self.office_mt.add_joins(models.Employee) self.assertEqual( str(employee_qs.query).replace(' ', ''), 'SELECT "tests_office"."id", "tests_office"."location" FROM ' '"tests_office" LEFT OUTER JOIN "tests_employee" ON ' '("tests_office"."id" = "tests_employee"."office_id")'.replace( ' ', '')) project_qs, alias = self.office_mt.add_joins(models.Project) self.assertEqual( str(project_qs.query).replace(' ', ''), 'SELECT "tests_office"."id", "tests_office"."location" FROM ' '"tests_office" LEFT OUTER JOIN "tests_employee" ON ' '("tests_office"."id" = "tests_employee"."office_id") LEFT OUTER ' 'JOIN "tests_project_employees" ON ("tests_employee"."id" = ' '"tests_project_employees"."employee_id") LEFT OUTER JOIN ' '"tests_project" ON ("tests_project_employees"."project_id" = ' '"tests_project"."id")'.replace(' ', '')) meeting_qs, alias = self.office_mt.add_joins(models.Meeting) self.assertEqual( str(meeting_qs.query).replace(' ', ''), 'SELECT "tests_office"."id", "tests_office"."location" FROM ' '"tests_office" LEFT OUTER JOIN "tests_meeting" ON ' '("tests_office"."id" = "tests_meeting"."office_id")'.replace( ' ', '')) self.title_mt = trees.create(models.Title) office_qs, alias = self.title_mt.add_joins(models.Office) self.assertEqual( str(office_qs.query).replace(' ', ''), 'SELECT "tests_title"."id", "tests_title"."name", ' '"tests_title"."salary" FROM "tests_title" LEFT OUTER JOIN ' '"tests_employee" ON ("tests_title"."id" = ' '"tests_employee"."title_id") LEFT OUTER JOIN "tests_office" ON ' '("tests_employee"."office_id" = "tests_office"."id")'.replace( ' ', '')) employee_qs, alias = self.title_mt.add_joins(models.Employee) self.assertEqual( str(employee_qs.query).replace(' ', ''), 'SELECT "tests_title"."id", "tests_title"."name", ' '"tests_title"."salary" FROM "tests_title" LEFT OUTER JOIN ' '"tests_employee" ON ("tests_title"."id" = ' '"tests_employee"."title_id")'.replace(' ', '')) project_qs, alias = self.title_mt.add_joins(models.Project) self.assertEqual( str(project_qs.query).replace(' ', ''), 'SELECT "tests_title"."id", "tests_title"."name", ' '"tests_title"."salary" FROM "tests_title" LEFT OUTER JOIN ' '"tests_employee" ON ("tests_title"."id" = ' '"tests_employee"."title_id") LEFT OUTER JOIN ' '"tests_project_employees" ON ("tests_employee"."id" = ' '"tests_project_employees"."employee_id") LEFT OUTER JOIN ' '"tests_project" ON ("tests_project_employees"."project_id" = ' '"tests_project"."id")'.replace(' ', '')) meeting_qs, alias = self.title_mt.add_joins(models.Meeting) self.assertEqual( str(meeting_qs.query).replace(' ', ''), 'SELECT "tests_title"."id", "tests_title"."name", ' '"tests_title"."salary" FROM "tests_title" LEFT OUTER JOIN ' '"tests_employee" ON ("tests_title"."id" = ' '"tests_employee"."title_id") LEFT OUTER JOIN ' '"tests_meeting_attendees" ON ("tests_employee"."id" = ' '"tests_meeting_attendees"."employee_id") LEFT OUTER JOIN ' '"tests_meeting" ON ("tests_meeting_attendees"."meeting_id" = ' '"tests_meeting"."id")'.replace(' ', '')) self.employee_mt = trees.create(models.Employee) title_qs, alias = self.employee_mt.add_joins(models.Title) self.assertEqual( str(title_qs.query).replace(' ', ''), 'SELECT "tests_employee"."id", "tests_employee"."firstName", ' '"tests_employee"."last_name", "tests_employee"."title_id", ' '"tests_employee"."office_id", "tests_employee"."manager_id" FROM ' '"tests_employee" INNER JOIN "tests_title" ON ' '("tests_employee"."title_id" = "tests_title"."id")'.replace( ' ', '')) office_qs, alias = self.employee_mt.add_joins(models.Office) self.assertEqual( str(office_qs.query).replace(' ', ''), 'SELECT "tests_employee"."id", "tests_employee"."firstName", ' '"tests_employee"."last_name", "tests_employee"."title_id", ' '"tests_employee"."office_id", "tests_employee"."manager_id" FROM ' '"tests_employee" INNER JOIN "tests_office" ON ' '("tests_employee"."office_id" = "tests_office"."id")'.replace( ' ', '')) project_qs, alias = self.employee_mt.add_joins(models.Project) self.assertEqual( str(project_qs.query).replace(' ', ''), 'SELECT "tests_employee"."id", "tests_employee"."firstName", ' '"tests_employee"."last_name", "tests_employee"."title_id", ' '"tests_employee"."office_id", "tests_employee"."manager_id" FROM ' '"tests_employee" LEFT OUTER JOIN "tests_project_employees" ON ' '("tests_employee"."id" = ' '"tests_project_employees"."employee_id") LEFT OUTER JOIN ' '"tests_project" ON ("tests_project_employees"."project_id" = ' '"tests_project"."id")'.replace(' ', '')) meeting_qs, alias = self.employee_mt.add_joins(models.Meeting) self.assertEqual( str(meeting_qs.query).replace(' ', ''), 'SELECT "tests_employee"."id", "tests_employee"."firstName", ' '"tests_employee"."last_name", "tests_employee"."title_id", ' '"tests_employee"."office_id", "tests_employee"."manager_id" ' 'FROM "tests_employee" LEFT OUTER JOIN "tests_meeting_attendees" ' 'ON ("tests_employee"."id" = ' '"tests_meeting_attendees"."employee_id") LEFT OUTER JOIN ' '"tests_meeting" ON ("tests_meeting_attendees"."meeting_id" = ' '"tests_meeting"."id")'.replace(' ', '')) self.project_mt = trees.create(models.Project) title_qs, alias = self.project_mt.add_joins(models.Title) self.assertEqual( str(title_qs.query).replace(' ', ''), 'SELECT "tests_project"."id", "tests_project"."name", ' '"tests_project"."manager_id", "tests_project"."due_date" FROM ' '"tests_project" LEFT OUTER JOIN "tests_project_employees" ON ' '("tests_project"."id" = "tests_project_employees"."project_id") ' 'LEFT OUTER JOIN "tests_employee" ON ' '("tests_project_employees"."employee_id" = ' '"tests_employee"."id") LEFT OUTER JOIN "tests_title" ON ' '("tests_employee"."title_id" = "tests_title"."id")'.replace( ' ', '')) office_qs, alias = self.project_mt.add_joins(models.Office) self.assertEqual( str(office_qs.query).replace(' ', ''), 'SELECT "tests_project"."id", "tests_project"."name", ' '"tests_project"."manager_id", "tests_project"."due_date" FROM ' '"tests_project" LEFT OUTER JOIN "tests_project_employees" ON ' '("tests_project"."id" = "tests_project_employees"."project_id") ' 'LEFT OUTER JOIN "tests_employee" ON ' '("tests_project_employees"."employee_id" = ' '"tests_employee"."id") LEFT OUTER JOIN "tests_office" ON ' '("tests_employee"."office_id" = "tests_office"."id")'.replace( ' ', '')) employee_qs, alias = self.project_mt.add_joins(models.Employee) self.assertEqual( str(employee_qs.query).replace(' ', ''), 'SELECT "tests_project"."id", "tests_project"."name", ' '"tests_project"."manager_id", "tests_project"."due_date" FROM ' '"tests_project" LEFT OUTER JOIN "tests_project_employees" ON ' '("tests_project"."id" = "tests_project_employees"."project_id") ' 'LEFT OUTER JOIN "tests_employee" ON ' '("tests_project_employees"."employee_id" = ' '"tests_employee"."id")'.replace(' ', '')) meeting_qs, alias = self.project_mt.add_joins(models.Meeting) self.assertEqual( str(meeting_qs.query).replace(' ', ''), 'SELECT "tests_project"."id", "tests_project"."name", ' '"tests_project"."manager_id", "tests_project"."due_date" FROM ' '"tests_project" LEFT OUTER JOIN "tests_meeting" ON ' '("tests_project"."id" = "tests_meeting"."project_id")'.replace( ' ', '')) self.meeting_mt = trees.create(models.Meeting) title_qs, alias = self.meeting_mt.add_joins(models.Title) self.assertEqual( str(title_qs.query).replace(' ', ''), 'SELECT "tests_meeting"."id", "tests_meeting"."project_id", ' '"tests_meeting"."office_id", "tests_meeting"."start_time", ' '"tests_meeting"."end_time" FROM "tests_meeting" LEFT OUTER JOIN ' '"tests_meeting_attendees" ON ("tests_meeting"."id" = ' '"tests_meeting_attendees"."meeting_id") LEFT OUTER JOIN ' '"tests_employee" ON ("tests_meeting_attendees"."employee_id" = ' '"tests_employee"."id") LEFT OUTER JOIN "tests_title" ON ' '("tests_employee"."title_id" = "tests_title"."id")'.replace( ' ', '')) office_qs, alias = self.meeting_mt.add_joins(models.Office) self.assertEqual( str(office_qs.query).replace(' ', ''), 'SELECT "tests_meeting"."id", "tests_meeting"."project_id", ' '"tests_meeting"."office_id", "tests_meeting"."start_time", ' '"tests_meeting"."end_time" FROM "tests_meeting" INNER JOIN ' '"tests_office" ON ("tests_meeting"."office_id" = ' '"tests_office"."id")'.replace(' ', '')) employee_qs, alias = self.meeting_mt.add_joins(models.Employee) self.assertEqual( str(employee_qs.query).replace(' ', ''), 'SELECT "tests_meeting"."id", "tests_meeting"."project_id", ' '"tests_meeting"."office_id", "tests_meeting"."start_time", ' '"tests_meeting"."end_time" FROM "tests_meeting" LEFT OUTER JOIN ' '"tests_meeting_attendees" ON ("tests_meeting"."id" = ' '"tests_meeting_attendees"."meeting_id") LEFT OUTER JOIN ' '"tests_employee" ON ("tests_meeting_attendees"."employee_id" = ' '"tests_employee"."id")'.replace(' ', '')) project_qs, alias = self.meeting_mt.add_joins(models.Project) self.assertEqual( str(project_qs.query).replace(' ', ''), 'SELECT "tests_meeting"."id", "tests_meeting"."project_id", ' '"tests_meeting"."office_id", "tests_meeting"."start_time", ' '"tests_meeting"."end_time" FROM "tests_meeting" LEFT OUTER JOIN ' '"tests_project" ON ("tests_meeting"."project_id" = ' '"tests_project"."id")'.replace(' ', ''))