+from nose.tools import *
+import unittest
+from sqlalchemy.orm import aliased
+
+from pokedex.db import connect, tables
+
+def test_encounter_slots():
+ # Encounters have a version, which has a version group; encounters also
+ # have an encounter_slot, which has a version group. The two version
+ # groups should match, universally.
+ session = connect()
+
+ version_group_a = aliased(tables.VersionGroup)
+ version_group_b = aliased(tables.VersionGroup)
+
+ sanity_q = session.query(tables.Encounter) \
+ .join((tables.EncounterSlot, tables.Encounter.slot)) \
+ .join((version_group_a, tables.EncounterSlot.version_group)) \
+ .join((tables.Version, tables.Encounter.version)) \
+ .join((version_group_b, tables.Version.version_group)) \
+ .filter(version_group_a.id != version_group_b.id)
+
+ assert_equal(sanity_q.count(), 0,
+ "Encounter slots all match the encounters they belong to")