def test_orders_properly(self): procedure = factories.ProcedureFactory() page1 = factories.PageFactory(display_index=1, procedure=procedure) page2 = factories.PageFactory(display_index=0, procedure=procedure) pages = Page.objects.all() assert_equals(len(pages), 2) assert_equals(pages[0], page2) assert_equals(pages[1], page1)
def setUp(self): self.client = Client() self.user = factories.UserFactory() procedure = factories.ProcedureFactory() self.page1 = factories.PageFactory(display_index=0, procedure=procedure) self.page2 = factories.PageFactory(display_index=1, procedure=procedure) self.page3 = factories.PageFactory(display_index=2, procedure=procedure) self.token = Token.objects.get(user=self.user) self.PARTIAL_BULK_URL = '/api/pages/partial_bulk_update' grant_permissions()
def test_create_showif(self): page = factories.PageFactory() element = factories.ElementFactory() conditions = json.dumps({ 'node_type': 'NOT', 'children': [{ 'node_type': 'AND', 'children': [{ 'criteria_element': element.pk, 'node_type': 'EQUALS', 'value': 'foo' }, { 'criteria_element': element.pk, 'node_type': 'LESS', 'value': 'bar' }] }] }) ShowIf.objects.create(page=page, conditions=conditions) show_if = ShowIf.objects.get(page=page) assert_equals(show_if.page, page) assert_equals(show_if.conditions, conditions) assert_not_equals(show_if.last_modified, None) assert_not_equals(show_if.created, None)
def test_updates_last_modified(self): page = factories.PageFactory() original_last_modified = page.last_modified factories.ElementFactory(page=page) assert_true(original_last_modified < page.last_modified)
def test_elements_all_select_properties(self): page = factories.PageFactory() concept = factories.ConceptFactory() Element.objects.create(display_index=0, element_type='SELECT', choices='[one, two, three]', concept=concept, question='test question', answer='', required=True, image='test', audio='ping', page=page) element = Element.objects.get(concept=concept) assert_equals(element.display_index, 0) assert_equals(element.element_type, 'SELECT') assert_equals(element.choices, '[one, two, three]') assert_equals(element.concept, concept) assert_equals(element.question, 'test question') assert_equals(element.answer, '') assert_equals(element.page, page) assert_true(element.required) assert_equals(element.image, 'test') assert_equals(element.audio, 'ping') assert_is_not_none(element.last_modified, None) assert_is_not_none(element.created, None)
def test_elements_all_plugin_properties(self): page = factories.PageFactory() concept = factories.ConceptFactory() Element.objects.create(display_index=0, element_type='PLUGIN', concept=concept, question='test question', answer='', required=True, image='test', audio='ping', action='action', mime_type='text/javascript', page=page) element = Element.objects.get(concept=concept) assert_equals(element.display_index, 0) assert_equals(element.element_type, 'PLUGIN') assert_equals(element.concept, concept) assert_equals(element.question, 'test question') assert_equals(element.answer, '') assert_equals(element.page, page) assert_true(element.required) assert_equals(element.image, 'test') assert_equals(element.audio, 'ping') assert_equals(element.action, 'action') assert_equals(element.mime_type, 'text/javascript') assert_is_not_none(element.last_modified, None) assert_is_not_none(element.created, None)
def test_props(self): generator = generators.CriteriaNodeGenerator(self.data, factories.PageFactory()) expected = { 'value': self.data['value'], 'id': str(self.element.pk), 'type': self.data['node_type'] } assert_equals(generator.get_properties(), expected)
def setUp(self): self.page = factories.PageFactory(display_index=0) factories.ElementFactory(page=self.page) self.generator = generators.PageGenerator(self.page) self.page_etree_element = self.generator.generate( ElementTree.Element('test'))
def test_create_page(self): test_procedure = factories.ProcedureFactory() page = factories.PageFactory(display_index=0, procedure=test_procedure) assert_equals(page.display_index, 0) assert_equals(page.procedure, test_procedure) assert_not_equals(page.last_modified, None) assert_not_equals(page.created, None)
def test_has_correct_name(self): generator = generators.LogicalNodeGenerator( { 'node_type': 'NOT', 'children': [{ 'criteria_element': factories.ElementFactory().pk, 'node_type': 'GREATER', 'value': 'bar' }] }, factories.PageFactory()) assert_equals(generator.name, 'not')
def test_orders_properly(self): page = factories.PageFactory() element1 = factories.ElementFactory(display_index=1, page=page) element2 = factories.ElementFactory(display_index=0, page=page) elements = Element.objects.all() assert_equals(len(elements), 2) assert_equals(elements[0], element2) assert_equals(elements[1], element1)
def setUp(self): self.procedure = factories.ProcedureFactory( author='TestUser', title='Burns"\'' ) for i in range(4): page = factories.PageFactory( procedure=self.procedure ) factories.ElementFactory( page=page ) elements = Element.objects.all() factories.ShowIfFactory( page=page, conditions=json.dumps({ 'node_type': 'NOT', 'children': [ { 'node_type': 'AND', 'children': [ { 'criteria_element': elements[0].pk, 'node_type': 'EQUALS', 'value': 'foo' }, { 'criteria_element': elements[1].pk, 'node_type': 'LESS', 'value': 'bar' }, { 'node_type': 'AND', 'children': [ { 'criteria_element': elements[2].pk, 'node_type': 'GREATER', 'value': 'bar' } ] } ] } ] })) self.procedure.save()
def test_generates_not_node(self): data = { 'node_type': 'NOT', 'children': [ { 'criteria_element': factories.ElementFactory().pk, 'node_type': 'GREATER', 'value': 'bar' } ] } generator = generators.LogicalNodeGenerator(data, factories.PageFactory()) assert_is_not_none(generator.get_etree_node(ElementTree.Element('test')))
def test_procedure_comes_with_pages(self): procedure = factories.ProcedureFactory(owner=self.user) factories.PageFactory(procedure=procedure) flags = {'only_return_id': 'false'} response = self.client.get(path=self.procedure_url, data=flags, content_type='application/json', HTTP_AUTHORIZATION=add_token_to_header( self.user, self.token)) assert_equals(response.status_code, status.HTTP_200_OK) body = json.loads(response.content) pages = body[0]['pages'] assert_equals(len(pages), 1) assert_true('display_index' in pages[0])
def test_elements_required(self): page = factories.PageFactory() concept = factories.ConceptFactory() element = Element.objects.create(display_index=0, page=page, element_type='ENTRY', answer='', question='What does the fox say?', concept=concept) assert_equals(element.display_index, 0) assert_equals(element.page, page) assert_equals(element.element_type, 'ENTRY') assert_equals(element.answer, '') assert_equals(element.question, 'What does the fox say?') assert_equals(element.concept, concept) assert_equals(element.required, False)
def test_generates_node(self): generator = generators.CriteriaNodeGenerator(self.data, factories.PageFactory()) assert_is_not_none( generator.get_etree_node(ElementTree.Element('test')))
def test_has_correct_name(self): generator = generators.CriteriaNodeGenerator(self.data, factories.PageFactory()) assert_equals(generator.name, 'Criteria')
def test_error_if_invalid_element(self): self.data['criteria_element'] = 99999 generators.CriteriaNodeGenerator(self.data, factories.PageFactory()).generate( ElementTree.Element('test'))
def test_error_if_no_element(self): del self.data['criteria_element'] generators.CriteriaNodeGenerator(self.data, factories.PageFactory()).generate( ElementTree.Element('test'))
def test_error_if_empty_value(self): self.data['value'] = '' generators.CriteriaNodeGenerator(self.data, factories.PageFactory()).generate( ElementTree.Element('test'))
def test_error_if_wrong_type(self): self.data['node_type'] = 'AND' generators.CriteriaNodeGenerator(self.data, factories.PageFactory()).generate( ElementTree.Element('test'))
def test_display_index_uniqueness(self): factories.PageFactory(display_index=0) factories.PageFactory(display_index=0)
def setUp(self): self.page = factories.PageFactory()