def test_incremental_success(self): checkpoint = self.test_initial() checkpoint.status = IncrementalExportStatus.SUCCESS checkpoint.save() case = new_case(domain=self.domain, foo="peach", bar="plumb", server_modified_on=datetime.utcnow()) send_to_elasticsearch('cases', case.to_json()) self.es.indices.refresh(CASE_INDEX_INFO.index) self.addCleanup(self._cleanup_case(case.case_id)) checkpoint = _generate_incremental_export( self.incremental_export, last_doc_date=checkpoint.last_doc_date) data = checkpoint.get_blob().read().decode('utf-8-sig') expected = "Foo column,Bar column\r\npeach,plumb\r\n" self.assertEqual(data, expected) self.assertEqual(checkpoint.doc_count, 1) checkpoint = _generate_incremental_export( self.incremental_export, last_doc_date=self.now - timedelta(hours=2, minutes=1)) data = checkpoint.get_blob().read().decode("utf-8-sig") expected = "Foo column,Bar column\r\norange,pear\r\npeach,plumb\r\n" self.assertEqual(data, expected) self.assertEqual(checkpoint.doc_count, 2) self.assertEqual(self.incremental_export.checkpoints.count(), 3)
def test_initial(self): checkpoint = _generate_incremental_export(self.incremental_export) data = checkpoint.get_blob().read().decode('utf-8-sig') expected = "Foo column,Bar column\r\napple,banana\r\norange,pear\r\n" self.assertEqual(data, expected) self.assertEqual(checkpoint.doc_count, 2) return checkpoint
def test_owner_filter(self): setup_locations_and_types( self.domain, ['state', 'health-department', 'team', 'sub-team'], [], [('State1', [ ('HealthDepartment1', [ ('Team1', [ ('SubTeam1', []), ('SubTeam2', []), ]), ('Team2', []), ]), ])]) team1 = SQLLocation.objects.filter(domain=self.domain, name='Team1').first() health_department = SQLLocation.objects.filter( domain=self.domain, name='HealthDepartment1').first() self.addCleanup(delete_all_locations) user = CommCareUser.create(self.domain, 'm2', 'abc', None, None, location=team1) send_to_elasticsearch('users', user.to_json()) self.es.indices.refresh(USER_INDEX_INFO.index) self.addCleanup(delete_all_users) cases = [ new_case( domain=self.domain, foo="peach", bar="plumb", server_modified_on=datetime.utcnow() + timedelta(hours=-1), owner_id='123', ), new_case( domain=self.domain, foo="orange", bar="melon", server_modified_on=datetime.utcnow(), owner_id=user. user_id, # this user is part of the team1 location. ), new_case( domain=self.domain, foo="grape", bar="pineapple", server_modified_on=datetime.utcnow(), ), ] for case in cases: send_to_elasticsearch("cases", case.to_json()) self.addCleanup(self._cleanup_case(case.case_id)) self.es.indices.refresh(CASE_INDEX_INFO.index) self.export_instance.filters.show_project_data = False self.export_instance.filters.locations = [ health_department.location_id ] self.export_instance.filters.users = ['123'] self.export_instance.save() checkpoint = _generate_incremental_export(self.incremental_export) data = checkpoint.get_blob().read().decode("utf-8-sig") expected = "Foo column,Bar column\r\npeach,plumb\r\norange,melon\r\n" self.assertEqual(data, expected)