def test_update_case(self): case_id = uuid.uuid4().hex opened_on = datetime.utcnow() _submit_case_block( True, case_id, user_id='user1', owner_id='owner1', case_type='demo', case_name='create_case', date_modified=opened_on, update={ 'dynamic': '123' } ) modified_on = datetime.utcnow() _submit_case_block( False, case_id, user_id='user2', owner_id='owner2', case_name='update_case', date_modified=modified_on, date_opened=opened_on, update={ 'dynamic': '1234' } ) case = self.casedb.get_case(case_id) self.assertEqual(case.owner_id, 'owner2') self.assertEqual(case.name, 'update_case') self.assertEqual(coerce_to_datetime(case.opened_on), coerce_to_datetime(opened_on)) self.assertEqual(case.opened_by, 'user1') self.assertEqual(case.modified_on, modified_on) self.assertEqual(case.modified_by, 'user2') self.assertTrue(case.server_modified_on > modified_on) self.assertFalse(case.closed) self.assertIsNone(case.closed_on) self.assertEqual(case.dynamic_case_properties()['dynamic'], '1234')
def test_update_case(self): case_id = uuid.uuid4().hex opened_on = datetime.utcnow() _submit_case_block(True, case_id, user_id='user1', owner_id='owner1', case_type='demo', case_name='create_case', date_modified=opened_on, update={'dynamic': '123'}) modified_on = datetime.utcnow() _submit_case_block(False, case_id, user_id='user2', owner_id='owner2', case_name='update_case', date_modified=modified_on, date_opened=opened_on, update={'dynamic': '1234'}) case = self.casedb.get_case(case_id) self.assertEqual(case.owner_id, 'owner2') self.assertEqual(case.name, 'update_case') self.assertEqual(coerce_to_datetime(case.opened_on), coerce_to_datetime(opened_on)) self.assertEqual(case.opened_by, 'user1') self.assertEqual(case.modified_on, modified_on) self.assertEqual(case.modified_by, 'user2') self.assertTrue(case.server_modified_on > modified_on) self.assertFalse(case.closed) self.assertIsNone(case.closed_on) self.assertEqual(case.dynamic_case_properties()['dynamic'], '1234')
def testCreateThenUpdateInSeparateForms(self): # recycle our previous test's form xform1, original_case = bootstrap_case_from_xml(self, "create_update.xml") self.assertEqual(original_case.type, "test_case_type") self.assertEqual(original_case.name, "test case name") # we don't need to bother checking all the properties because this is # the exact same workflow as above. xform2, case = bootstrap_case_from_xml(self, "update.xml", original_case.case_id) # fetch the case from the DB to ensure it is property wrapped case = CaseAccessors().get_case(case.case_id) self.assertEqual(False, case.closed) if getattr(settings, 'TESTS_SHOULD_USE_SQL_BACKEND', False): self._check_transactions(case, [xform1, xform2]) self.assertTrue(case.transactions[0].is_case_create) else: self.assertEqual(3, len(case.actions)) new_update_action = case.actions[2] self.assertEqual(const.CASE_ACTION_UPDATE, new_update_action.action_type) self.assertEqual("http://openrosa.org/case/test/update", new_update_action.xform_xmlns) self.assertEqual("", new_update_action.xform_name) # updated prop self.assertEqual("abcd", new_update_action.updated_unknown_properties["someprop"]) # new prop self.assertEqual("efgh", new_update_action.updated_unknown_properties["somenewprop"]) # update original case fields self.assertEqual("a_new_type", new_update_action.updated_known_properties["type"]) self.assertEqual("a new name", new_update_action.updated_known_properties["name"]) self.assertEqual(UPDATE_DATE, new_update_action.updated_known_properties["opened_on"]) # some properties didn't change self.assertEqual("123", str(case.dynamic_case_properties()['someotherprop'])) # but some should have self.assertEqual("abcd", case.dynamic_case_properties()["someprop"]) # and there are new ones self.assertEqual("efgh", case.dynamic_case_properties()["somenewprop"]) # we also changed everything originally in the case self.assertEqual("a_new_type", case.type) self.assertEqual("a new name", case.name) self.assertEqual(coerce_to_datetime(UPDATE_DATE), coerce_to_datetime(case.opened_on)) # case should have a new modified date self.assertEqual(MODIFY_DATE, case.modified_on)