Esempio n. 1
0
    def test_unjoinify(self):
        awards = unjoinify(
            Award, """
			SELECT
				tests_award.id,
				tests_award.name,
				tests_nomination.id AS nominations__id,
				tests_nomination.ranking AS nominations__ranking,
				tests_movie.id AS nominations__movie__id,
				tests_movie.title AS nominations__movie__title,
				producer.id AS nominations__movie__producers__id,
				producer.first_name AS nominations__movie__producers__first_name,
				producer.surname AS nominations__movie__producers__surname,
				actor.id AS nominations__movie__actors__id,
				actor.first_name AS nominations__movie__actors__first_name,
				actor.surname AS nominations__movie__actors__surname,
				tests_presenter.id AS presenter__id,
				tests_presenter.name AS presenter__name
			FROM
				tests_award
				LEFT JOIN tests_nomination ON (tests_award.id = tests_nomination.award_id)
				LEFT JOIN tests_movie ON (tests_nomination.movie_id = tests_movie.id)
				LEFT JOIN tests_movie_producers ON (tests_movie.id = tests_movie_producers.movie_id)
				LEFT JOIN tests_person AS producer ON (tests_movie_producers.person_id = producer.id)
				LEFT JOIN tests_person_movies_acted_in ON (tests_person_movies_acted_in.movie_id = tests_movie.id)
				LEFT JOIN tests_person AS actor ON (tests_person_movies_acted_in.person_id = actor.id)
				LEFT JOIN tests_presenter ON (tests_award.presenter_id = tests_presenter.id)
			WHERE
				tests_award.festival_id = %s
			ORDER BY
				tests_award.name,
				tests_nomination.ranking,
				producer.surname,
				actor.surname
		""", (1, ))

        (award, nominations, presenter) = awards[0]
        self.assertEquals("Best Director", award.name)
        self.assertEquals(3, len(nominations))
        self.assertEquals(None, presenter)

        (nomination, movie, producers, actors) = nominations[0]
        self.assertEquals(1, nomination.ranking)
        self.assertEquals("The King's Speech", movie.title)
        self.assertEquals(3, len(producers))
        self.assertEquals("Canning", producers[0].surname)
        self.assertEquals(2, len(actors))
        self.assertEquals("Firth", actors[0].surname)

        (award, nominations, presenter) = awards[1]
        self.assertEquals("Best Picture", award.name)
        self.assertEquals("Steven Spielberg", presenter.name)
Esempio n. 2
0
	def test_unjoinify(self):
		awards = unjoinify(Award, """
			SELECT
				tests_award.id,
				tests_award.name,
				tests_nomination.id AS nominations__id,
				tests_nomination.ranking AS nominations__ranking,
				tests_movie.id AS nominations__movie__id,
				tests_movie.title AS nominations__movie__title,
				producer.id AS nominations__movie__producers__id,
				producer.first_name AS nominations__movie__producers__first_name,
				producer.surname AS nominations__movie__producers__surname,
				actor.id AS nominations__movie__actors__id,
				actor.first_name AS nominations__movie__actors__first_name,
				actor.surname AS nominations__movie__actors__surname,
				tests_presenter.id AS presenter__id,
				tests_presenter.name AS presenter__name
			FROM
				tests_award
				LEFT JOIN tests_nomination ON (tests_award.id = tests_nomination.award_id)
				LEFT JOIN tests_movie ON (tests_nomination.movie_id = tests_movie.id)
				LEFT JOIN tests_movie_producers ON (tests_movie.id = tests_movie_producers.movie_id)
				LEFT JOIN tests_person AS producer ON (tests_movie_producers.person_id = producer.id)
				LEFT JOIN tests_person_movies_acted_in ON (tests_person_movies_acted_in.movie_id = tests_movie.id)
				LEFT JOIN tests_person AS actor ON (tests_person_movies_acted_in.person_id = actor.id)
				LEFT JOIN tests_presenter ON (tests_award.presenter_id = tests_presenter.id)
			WHERE
				tests_award.festival_id = %s
			ORDER BY
				tests_award.name,
				tests_nomination.ranking,
				producer.surname,
				actor.surname
		""", (1,))
		
		(award, nominations, presenter) = awards[0]
		self.assertEquals("Best Director", award.name)
		self.assertEquals(3, len(nominations))
		self.assertEquals(None, presenter)
		
		(nomination, movie, producers, actors) = nominations[0]
		self.assertEquals(1, nomination.ranking)
		self.assertEquals("The King's Speech", movie.title)
		self.assertEquals(3, len(producers))
		self.assertEquals("Canning", producers[0].surname)
		self.assertEquals(2, len(actors))
		self.assertEquals("Firth", actors[0].surname)
		
		(award, nominations, presenter) = awards[1]
		self.assertEquals("Best Picture", award.name)
		self.assertEquals("Steven Spielberg", presenter.name)
Esempio n. 3
0
	def test_reverse_one_to_one_relation(self):
		presenters = unjoinify(Presenter, """
			SELECT
				tests_presenter.id,
				tests_presenter.name,
				tests_award.id AS award__id,
				tests_award.name AS award__name
			FROM
				tests_presenter
				LEFT JOIN tests_award ON (tests_presenter.id = tests_award.presenter_id)
		""")
		
		(presenter, award) = presenters[0]
		self.assertEquals("Steven Spielberg", presenter.name)
		self.assertEquals("Best Picture", award.name)
Esempio n. 4
0
	def test_overriding_column_names(self):
		festivals = unjoinify(Festival, """
			SELECT
				tests_festival.id AS arbitrary_name_1,
				tests_festival.name AS arbitrary_name_2,
				tests_award.id AS arbitrary_name_3,
				tests_award.name AS arbitrary_name_4
			FROM
				tests_festival
				LEFT JOIN tests_award ON (tests_festival.id = tests_award.festival_id)
			ORDER BY
				tests_festival.name,
				tests_award.name
		""", columns = ["id", "name", "awards__id", "awards__name"])
		
		(festival, awards) = festivals[0]
		self.assertEquals("83rd Academy Awards", festival.name)
		self.assertEquals("Best Director", awards[0].name)