def test_get_uof_blocks(self): ''' Set and get uof chart blocks. ''' department = Department.create(name="W Police Department", short_name="WPD", load_defaults=False) # create & append chart blocks with the expected slugs uof_intro = ChartBlock(title="INTRO", dataset="intros", slug="uof-introduction") uof_ft = ChartBlock(title="FORCETYPE", dataset="forcetype", slug="uof-force-type") uof_bid = ChartBlock(title="BYASSIGNMENT", dataset="bid", slug="uof-by-inc-district") uof_od = ChartBlock(title="OFFICERDEMOS", dataset="od", slug="officer-demographics") uof_race = ChartBlock(title="RACE", dataset="race", slug="uof-race") department.chart_blocks.append(uof_intro) department.chart_blocks.append(uof_ft) department.chart_blocks.append(uof_bid) department.chart_blocks.append(uof_od) department.chart_blocks.append(uof_race) department.save() # verify that the blocks are returned in the expected structure uof_blocks = department.get_uof_blocks() assert uof_blocks['introduction'] == uof_intro assert uof_blocks['first-block'] == uof_ft assert uof_blocks['blocks'][0] == uof_bid assert uof_blocks['blocks'][1] == uof_od assert uof_blocks['blocks'][2] == uof_race
def test_get_ois_blocks(self): ''' Set and get ois chart blocks. ''' department = DepartmentFactory() department.save() # create & append chart blocks with the expected slugs ois_intro = ChartBlock(title="INTRO", dataset="intros", slug="ois-introduction") ois_bid = ChartBlock(title="BYINCDISTRICT", dataset="bid", slug="ois-by-inc-district") ois_wt = ChartBlock(title="WEAPONTYPE", dataset="weapontype", slug="ois-weapon-type") ois_od = ChartBlock(title="OFFICERDEMOS", dataset="od", slug="officer-demographics") ois_race = ChartBlock(title="RACE", dataset="race", slug="ois-race") department.chart_blocks.append(ois_intro) department.chart_blocks.append(ois_bid) department.chart_blocks.append(ois_wt) department.chart_blocks.append(ois_od) department.chart_blocks.append(ois_race) department.save() # verify that the blocks are returned in the expected structure ois_blocks = department.get_ois_blocks() assert ois_blocks['introduction'] == ois_intro assert ois_blocks['first-block'] == ois_bid assert ois_blocks['blocks'][0] == ois_wt assert ois_blocks['blocks'][1] == ois_od assert ois_blocks['blocks'][2] == ois_race
def test_get_ois_blocks(self): ''' Set and get ois chart blocks. ''' department = Department.create(name="SR Police Department", short_name="SRPD", load_defaults=False) # create & append chart blocks with the expected slugs ois_intro = ChartBlock(title="INTRO", dataset="intros", slug="ois-introduction") ois_bm = ChartBlock(title="BYMONTH", dataset="bm", slug="ois-by-month") ois_by = ChartBlock(title="BYTYPE", dataset="bytype", slug="ois-by-type") ois_bt = ChartBlock(title="BYTEAM", dataset="byteam", slug="ois-by-team") ois_od = ChartBlock(title="OFFICERDEMOS", dataset="od", slug="officer-demographics") department.chart_blocks.append(ois_intro) department.chart_blocks.append(ois_bm) department.chart_blocks.append(ois_by) department.chart_blocks.append(ois_bt) department.chart_blocks.append(ois_od) department.save() # verify that the blocks are returned in the expected structure ois_blocks = department.get_ois_blocks() assert ois_blocks['introduction'] == ois_intro assert ois_blocks['first-block'] == ois_bm assert ois_blocks['blocks'][0] == ois_by assert ois_blocks['blocks'][1] == ois_bt assert ois_blocks['blocks'][2] == ois_od
def test_get_assaults_blocks(self): ''' Set and get ois chart blocks. ''' department = Department.create( name="Inopportune Moment Police Department", short_name="IMPD", load_defaults=False) # create & append chart blocks with the expected slugs assault_intro = ChartBlock(title="INTRO", dataset="intros", slug="assaults-introduction") assault_bst = ChartBlock(title="BYINCDISTRICT", dataset="bst", slug="assaults-by-service-type") assault_bft = ChartBlock(title="WEAPONTYPE", dataset="bft", slug="assaults-by-force-type") assault_bo = ChartBlock(title="OFFICERDEMOS", dataset="bo", slug="assaults-by-officer") department.chart_blocks.append(assault_intro) department.chart_blocks.append(assault_bst) department.chart_blocks.append(assault_bft) department.chart_blocks.append(assault_bo) department.save() # verify that the blocks are returned in the expected structure assault_blocks = department.get_assaults_blocks() assert assault_blocks['introduction'] == assault_intro assert assault_blocks['first-block'] == assault_bst assert assault_blocks['blocks'][0] == assault_bft assert assault_blocks['blocks'][1] == assault_bo
def test_get_ois_blocks(self): ''' Set and get ois chart blocks. ''' department = Department.create(name="Blanket Police Department", short_name="BPD", load_defaults=False) # create & append chart blocks with the expected slugs ois_intro = ChartBlock(title="INTRO", dataset="intros", slug="ois-introduction") ois_bid = ChartBlock(title="BYASSIGNMENT", dataset="bid", slug="ois-by-assignment") ois_wt = ChartBlock(title="WEAPONTYPE", dataset="weapontype", slug="ois-weapon-type") ois_od = ChartBlock(title="OFFICERDEMOS", dataset="od", slug="officer-demographics") ois_race = ChartBlock(title="RACE", dataset="race", slug="ois-race") department.chart_blocks.append(ois_intro) department.chart_blocks.append(ois_bid) department.chart_blocks.append(ois_wt) department.chart_blocks.append(ois_od) department.chart_blocks.append(ois_race) department.save() # verify that the blocks are returned in the expected structure ois_blocks = department.get_ois_blocks() assert ois_blocks['introduction'] == ois_intro assert ois_blocks['first-block'] == ois_bid assert ois_blocks['blocks'][0] == ois_wt assert ois_blocks['blocks'][1] == ois_od assert ois_blocks['blocks'][2] == ois_race
def test_get_complaint_blocks(self): ''' Set and get complaint chart blocks. ''' department = Department.create( name="Innocent Marmot Police Department", short_name="IMPD", load_defaults=False) # create & append chart blocks with the expected slugs complaint_intro = ChartBlock(title="INTRO", dataset="intros", slug="complaints-introduction") complaint_bm = ChartBlock(title="BYMONTH", dataset="bymonth", slug="complaints-by-month") complaint_bya = ChartBlock(title="BYALLEGATION", dataset="bya", slug="complaints-by-allegation") complaint_byat = ChartBlock(title="BYALLEGATIONTYPE", dataset="byat", slug="complaints-by-allegation-type") complaint_bdis = ChartBlock(title="BYDISPOSITION", dataset="bdis", slug="complaints-by-finding") complaint_bpre = ChartBlock(title="BYPRECINCT", dataset="bpre", slug="complaints-by-precinct") complaint_od = ChartBlock(title="OFFICERDEMOS", dataset="od", slug="officer-demographics") complaint_bde = ChartBlock(title="BYDEMO", dataset="bde", slug="complaints-by-demographic") complaint_bof = ChartBlock(title="BYOFFICER", dataset="bof", slug="complaints-by-officer") department.chart_blocks.append(complaint_intro) department.chart_blocks.append(complaint_bm) department.chart_blocks.append(complaint_bya) department.chart_blocks.append(complaint_byat) department.chart_blocks.append(complaint_bdis) department.chart_blocks.append(complaint_bpre) department.chart_blocks.append(complaint_od) department.chart_blocks.append(complaint_bde) department.chart_blocks.append(complaint_bof) department.save() # verify that the blocks are returned in the expected structure complaint_blocks = department.get_complaint_blocks() assert complaint_blocks['introduction'] == complaint_intro assert complaint_blocks['first-block'] == complaint_bm assert complaint_blocks['blocks'][0] == complaint_bya assert complaint_blocks['blocks'][1] == complaint_byat assert complaint_blocks['blocks'][2] == complaint_bdis assert complaint_blocks['blocks'][3] == complaint_bpre assert complaint_blocks['blocks'][4] == complaint_od assert complaint_blocks['blocks'][5] == complaint_bde assert complaint_blocks['blocks'][6] == complaint_bof
def test__multiple_get_uof_blocks(self): department = DepartmentFactory() department.save() uof_block = ChartBlock.create(title="Use of Force", dataset="use-of-force", slug="uof-slug", department_id=department.id) uof_type_of_call_block = ChartBlock.create(title="Use of Force", dataset="use-of-force", slug="uof-type-of-call", department_id=department.id) non_uof_block = ChartBlock.create(dataset="Complaints",title="complaints", slug="complaints-slug", department_id=department.id) uof_blocks = department.get_uof_blocks() assert uof_blocks["uof-slug"] == uof_block assert uof_blocks["uof-type-of-call"] == uof_type_of_call_block assert "non_uof_block" not in uof_blocks.keys()
def test_get_complaint_schema_blocks(self): ''' Set and get complaint schema chart blocks. ''' department = Department.create(name="IM Police Department", short_name="IMPD", load_defaults=False) # create & append chart blocks with the expected slugs complaint_intro = ChartBlock(title="INTRO", dataset="intros", slug="complaints-schema-introduction") complaint_id = ChartBlock(title="FIELDID", dataset="fid", slug="complaints-schema-field-id") complaint_od = ChartBlock(title="OCCURREDDATE", dataset="fod", slug="complaints-schema-field-occurred-date") complaint_div = ChartBlock(title="DIVISION", dataset="div", slug="complaints-schema-field-division") complaint_dis = ChartBlock(title="DISTRICT", dataset="dis", slug="complaints-schema-field-district") complaint_shift = ChartBlock(title="SHIFT", dataset="shift", slug="complaints-schema-field-shift") complaint_footer = ChartBlock(title="FOOTER", dataset="footer", slug="complaints-schema-footer") complaint_disclaimer = ChartBlock(title="DISCLAIMER", dataset="disclaimer", slug="complaints-schema-disclaimer") department.chart_blocks.append(complaint_intro) department.chart_blocks.append(complaint_id) department.chart_blocks.append(complaint_od) department.chart_blocks.append(complaint_div) department.chart_blocks.append(complaint_dis) department.chart_blocks.append(complaint_shift) department.chart_blocks.append(complaint_footer) department.chart_blocks.append(complaint_disclaimer) department.save() # verify that the blocks are returned in the expected structure complaint_blocks = department.get_complaint_schema_blocks() assert complaint_blocks['introduction'] == complaint_intro assert complaint_blocks['footer'] == complaint_footer assert complaint_blocks['disclaimer'] == complaint_disclaimer assert complaint_id in complaint_blocks['blocks'] assert complaint_od in complaint_blocks['blocks'] assert complaint_div in complaint_blocks['blocks'] assert complaint_dis in complaint_blocks['blocks'] assert complaint_shift in complaint_blocks['blocks']
def test_get_assaults_schema_blocks(self): ''' Set and get assaults schema chart blocks. ''' department = Department.create(name="IM Police Department", short_name="IMPD", load_defaults=False) # create & append chart blocks with the expected slugs assaults_intro = ChartBlock(title="INTRO", dataset="intros", slug="assaults-schema-introduction") assaults_fid = ChartBlock(title="FIELDID", dataset="fid", slug="assaults-schema-field-id") assaults_foi = ChartBlock(title="OCCURREDDATE", dataset="fod", slug="assaults-schema-field-officer-identifier") assaults_fst = ChartBlock(title="DIVISION", dataset="div", slug="assaults-schema-field-service-type") assaults_fft = ChartBlock(title="DISTRICT", dataset="dis", slug="assaults-schema-field-force-type") assaults_ffa = ChartBlock(title="SHIFT", dataset="shift", slug="assaults-schema-field-assignment") assaults_footer = ChartBlock(title="FOOTER", dataset="footer", slug="assaults-schema-footer") assaults_disclaimer = ChartBlock(title="DISCLAIMER", dataset="disclaimer", slug="assaults-schema-disclaimer") department.chart_blocks.append(assaults_intro) department.chart_blocks.append(assaults_fid) department.chart_blocks.append(assaults_foi) department.chart_blocks.append(assaults_fst) department.chart_blocks.append(assaults_fft) department.chart_blocks.append(assaults_ffa) department.chart_blocks.append(assaults_footer) department.chart_blocks.append(assaults_disclaimer) department.save() # verify that the blocks are returned in the expected structure assaults_blocks = department.get_assaults_schema_blocks() assert assaults_blocks['introduction'] == assaults_intro assert assaults_blocks['footer'] == assaults_footer assert assaults_blocks['disclaimer'] == assaults_disclaimer assert assaults_fid in assaults_blocks['blocks'] assert assaults_foi in assaults_blocks['blocks'] assert assaults_fst in assaults_blocks['blocks'] assert assaults_fft in assaults_blocks['blocks'] assert assaults_ffa in assaults_blocks['blocks']
def test_add_chart_blocks(self): ''' Can add default chart blocks to multiple departments. ''' department1 = Department.create(name="Spleen Police Department", short_name="SPD", load_defaults=False) department2 = Department.create(name="Random Police Department", short_name="RPD", load_defaults=False) mock_chart_blocks = [ ChartBlock(title="Open Data Introduction", slug="introduction", dataset="introduction"), ChartBlock(title="Complaints By Year", slug="complaints-by-year", dataset="complaints"), ChartBlock(title="Complaints By Month", slug="complaints-by-month", dataset="complaints"), ChartBlock(title="Complaints By Allegation", slug="complaints-by-allegation", dataset="complaints"), ChartBlock(title="Complaints By Allegation Type", slug="complaints-by-allegation-type", dataset="complaints") ] with mock.patch.object(ChartBlockDefaults, 'defaults', mock_chart_blocks): add_new_blocks() assert len(department2.chart_blocks) == len(mock_chart_blocks) assert len(department1.chart_blocks) == len(mock_chart_blocks)
def test_get_pursuits_blocks(self): ''' Set and get pursuit chart blocks. ''' department = Department.create(name="SR Police Department", short_name="SRPD", load_defaults=False) # create & append chart blocks with the expected slugs pursuit_intro = ChartBlock(title="INTRO", dataset="intros", slug="pursuits-introduction") pursuit_bm = ChartBlock(title="BYMONTH", dataset="bymonth", slug="pursuits-by-month") pursuit_bt = ChartBlock(title="BYTEAM", dataset="byteam", slug="pursuits-by-team") pursuit_br = ChartBlock(title="BYREASON", dataset="byreason", slug="pursuits-by-reason") pursuit_bd = ChartBlock(title="BYDISTANCE", dataset="bydistance", slug="pursuits-by-distance") pursuit_bc = ChartBlock(title="BYCONCLUSION", dataset="byconclusion", slug="pursuits-by-conclusion") department.chart_blocks.append(pursuit_intro) department.chart_blocks.append(pursuit_bm) department.chart_blocks.append(pursuit_bt) department.chart_blocks.append(pursuit_br) department.chart_blocks.append(pursuit_bd) department.chart_blocks.append(pursuit_bc) department.save() # verify that the blocks are returned in the expected structure pursuit_blocks = department.get_pursuits_blocks() assert pursuit_blocks['introduction'] == pursuit_intro assert pursuit_blocks['first-block'] == pursuit_bm assert pursuit_blocks['blocks'][0] == pursuit_bt assert pursuit_blocks['blocks'][1] == pursuit_br assert pursuit_blocks['blocks'][2] == pursuit_bd assert pursuit_blocks['blocks'][3] == pursuit_bc
def test_get_complaint_blocks(self): ''' Set and get complaint chart blocks. ''' department = Department.create(name="SR Police Department", short_name="SRPD", load_defaults=False) # create & append chart blocks with the expected slugs complaint_intro = ChartBlock(title="INTRO", dataset="", slug="complaints-introduction") complaint_bm = ChartBlock(title="BYMONTH", dataset="", slug="complaints-by-month") complaint_bal = ChartBlock(title="BYALLEGATION", dataset="", slug="complaints-by-allegation") complaint_bd = ChartBlock(title="BYDISPOSITION", dataset="", slug="complaints-by-disposition") complaint_bt = ChartBlock(title="BYTEAM", dataset="", slug="complaints-by-team") complaint_od = ChartBlock(title="OFFICERDEMOS", dataset="", slug="officer-demographics") department.chart_blocks.append(complaint_intro) department.chart_blocks.append(complaint_bm) department.chart_blocks.append(complaint_bal) department.chart_blocks.append(complaint_bd) department.chart_blocks.append(complaint_bt) department.chart_blocks.append(complaint_od) department.save() # verify that the blocks are returned in the expected structure complaint_blocks = department.get_complaint_blocks() assert complaint_blocks['introduction'] == complaint_intro assert complaint_blocks['first-block'] == complaint_bm assert complaint_blocks['blocks'][0] == complaint_bal assert complaint_blocks['blocks'][1] == complaint_bd assert complaint_blocks['blocks'][2] == complaint_bt assert complaint_blocks['blocks'][3] == complaint_od