def test_program_fixture(self): user = bootstrap_user(self, phone_number="1234567890") Program( domain=user.domain, name="test1", code="t1" ).save() program_list = Program.by_domain(user.domain) program_xml = '' for program in program_list: program_xml += ''' <program id="{id}"> <name>{name}</name> <code>{code}</code> </program> '''.format( id=program.get_id, name=program.name, code=program.code ) fixture = program_fixture_generator(user, V1, None) self.assertXmlEqual('''<fixture id="commtrack:programs" user_id="{user_id}"> <programs> {programs} </programs> </fixture>'''.format(user_id=user.user_id, programs=program_xml), ElementTree.tostring(fixture[0]))
def test_program_fixture(self): user = bootstrap_user(self, phone_number="1234567890") Program( domain=user.domain, name="test1", code="t1" ).save() program_list = Program.by_domain(user.domain) program_xml = self.generate_program_xml(program_list, user) fixture = program_fixture_generator(user, V1, None, None) self.assertXmlEqual( program_xml, ElementTree.tostring(fixture[0]) )
def test_program_fixture(self): user = bootstrap_user(self, phone_number="1234567890") Program( domain=user.domain, name="test1", code="t1" ).save() program_list = Program.by_domain(user.domain) program_xml = self.generate_program_xml(program_list, user) fixture = program_fixture_generator(user, V1, None) self.assertXmlEqual( program_xml, ElementTree.tostring(fixture[0]) )
def test_program_fixture(self): user = bootstrap_user(self, phone_number="1234567890") Program(domain=user.domain, name="test1", code="t1").save() program_list = Program.by_domain(user.domain) program_xml = '' for program in program_list: program_xml += ''' <program id="{id}"> <name>{name}</name> <code>{code}</code> </program> '''.format(id=program.get_id, name=program.name, code=program.code) fixture = program_fixture_generator(user, V1, None) self.assertXmlEqual( '''<fixture id="commtrack:programs" user_id="{user_id}"> <programs> {programs} </programs> </fixture>'''.format(user_id=user.user_id, programs=program_xml), ElementTree.tostring(fixture[0]))
def test_selective_program_sync(self): user = bootstrap_user(self, phone_number="1234567890") Program( domain=user.domain, name="test1", code="t1" ).save() program_list = Program.by_domain(user.domain) program_xml = self.generate_program_xml(program_list, user) fixture_original = program_fixture_generator(user, V1, None, None) generate_restore_payload(user.to_casexml_user()) self.assertXmlEqual( program_xml, ElementTree.tostring(fixture_original[0]) ) first_sync = sorted(SyncLog.view( "phone/sync_logs_by_user", include_docs=True, reduce=False ).all(), key=lambda x: x.date)[-1] # make sure the time stamp on this first sync is # not on the same second that the programs were created first_sync.date += datetime.timedelta(seconds=1) # second sync is before any changes are made, so there should # be no programs synced fixture_pre_change = program_fixture_generator(user, V1, None, first_sync) generate_restore_payload(user.to_casexml_user()) self.assertEqual( [], fixture_pre_change, "Fixture was not empty on second sync" ) second_sync = sorted(SyncLog.view( "phone/sync_logs_by_user", include_docs=True, reduce=False ).all(), key=lambda x: x.date)[-1] self.assertTrue(first_sync._id != second_sync._id) # save should make the program more recently updated than the # last sync for program in program_list: program.save() # now that we've updated a program, we should get # program data in sync again fixture_post_change = program_fixture_generator(user, V1, None, second_sync) # regenerate the fixture xml to make sure it is still legit self.assertXmlEqual( program_xml, ElementTree.tostring(fixture_post_change[0]) )
def test_selective_program_sync(self): user = bootstrap_user(self, phone_number="1234567890") Program( domain=user.domain, name="test1", code="t1" ).save() program_list = Program.by_domain(user.domain) program_xml = self.generate_program_xml(program_list, user) fixture_original = program_fixture_generator(user, V1, None) generate_restore_payload(user.to_casexml_user()) self.assertXmlEqual( program_xml, ElementTree.tostring(fixture_original[0]) ) first_sync = sorted(SyncLog.view( "phone/sync_logs_by_user", include_docs=True, reduce=False ).all(), key=lambda x: x.date)[-1] # make sure the time stamp on this first sync is # not on the same second that the programs were created first_sync.date += datetime.timedelta(seconds=1) # second sync is before any changes are made, so there should # be no programs synced fixture_pre_change = program_fixture_generator(user, V1, first_sync) generate_restore_payload(user.to_casexml_user()) self.assertEqual( [], fixture_pre_change, "Fixture was not empty on second sync" ) second_sync = sorted(SyncLog.view( "phone/sync_logs_by_user", include_docs=True, reduce=False ).all(), key=lambda x: x.date)[-1] self.assertTrue(first_sync._id != second_sync._id) # save should make the program more recently updated than the # last sync for program in program_list: program.save() # now that we've updated a program, we should get # program data in sync again fixture_post_change = program_fixture_generator(user, V1, second_sync) # regenerate the fixture xml to make sure it is still legit self.assertXmlEqual( program_xml, ElementTree.tostring(fixture_post_change[0]) )