def test_sort_relationship_descending(self): """Test sorting a relationhip's field in descending order.""" a = CompanyModel.mock(name="Last") b = CompanyModel.mock(name="First") PersonModel.mock(name="A", companies=[a]) PersonModel.mock(name="B", companies=[b]) parameters = {'sort': '-companies.name'} query = Resource(self.model, parameters).sort_query(self.query) result = query.all() self.assertEqual(result[0].companies[0].name, 'Last')
def test_include_many_to_many_relationship(self): """Test including a many to many relationship field.""" company_1 = CompanyModel.mock() company_2 = CompanyModel.mock() model = PersonModel.mock(companies=[company_1, company_2]) include = ['companies'] iv_objects, errors = IncludeValue.generate(self.view, include) data = IncludeValue.include(iv_objects, model) self.assertTrue(errors == []) self.assertTrue(len(data) == 2)
def test_include_many_to_many(self): """Test including a many-to-many relationship.""" company = CompanyModel.mock() model = PersonModel.mock(companies=[company]) parameters = {'include': 'companies'} included = Resource(self.model, parameters).compound_response(model) self.assertTrue(len(included) == 1)
def test_include_nested(self): """Test including a nested relationship.""" company = CompanyModel.mock() model = PersonModel.mock(companies=[company]) EmployeeModel.mock(person_id=model.id) parameters = {'include': 'employee.person.companies'} included = Resource(self.model, parameters).compound_response(model) self.assertTrue(len(included) == 1)
def test_filter_many_to_many_relationship(self): """Test filtering by a many-to-many relationship field.""" company = CompanyModel.mock(name="company") PersonModel.mock(companies=[company]) parameters = {'filter[companies.name]': 'COMPANY'} query = Resource(self.model, parameters).filter_query(self.query) result = query.all() self.assertEqual(len(result), 1)
def test_include_multiple_relationships(self): """Test including multiple relationship fields of differing types. """ company = CompanyModel.mock() model = PersonModel.mock(companies=[company]) EmployeeModel.mock(person_id=1) include = ['companies', 'employee'] iv_objects, errors = IncludeValue.generate(self.view, include) data = IncludeValue.include(iv_objects, model) self.assertTrue(errors == []) self.assertTrue(len(data) == 2)