def test_queryable_dicts_to_json_bad_args(self): """Raise a TypeError if any objects lack the lookup_dict method.""" with pytest.raises(TypeError): queryable_dicts_to_json((1, 2, 3)) cn1 = CommonName(name='Foxglove') cn1.index = Index(name='Perennial') cn2 = CommonName(name='Coleus') cn2.index = Index(name='Annual') idx = Index(name='Has no lookup_dict') with pytest.raises(TypeError): queryable_dicts_to_json((cn1, cn2, idx))
def test_queryable_dicts_to_json(self): """Generate a JSON string for looking up Grows With cns/cvs. It can take either, as both have the queryable_dict method. """ gwcn1 = CommonName(name='Foxglove') gwcn1.index = Index(name='Perennial') assert queryable_dicts_to_json([gwcn1]) == \ json.dumps((gwcn1.queryable_dict,)) gwcn2 = CommonName(name='Butterfly Weed') gwcn2.index = Index(name='Perennial') assert queryable_dicts_to_json([gwcn1, gwcn2]) == \ json.dumps((gwcn1.queryable_dict, gwcn2.queryable_dict)) gwcv1 = Cultivar(name='Soulmate') gwcv1.common_name = CommonName(name='Butterfly Weed') gwcv1.common_name.index = Index(name='Perennial') assert queryable_dicts_to_json([gwcv1]) == \ json.dumps((gwcv1.queryable_dict,)) gwcv2 = Cultivar(name='Petra') gwcv2.common_name = CommonName(name='Foxglove') gwcv2.common_name.index = Index(name='Perennial') gwcv2.section = Section(name='Polkadot') assert queryable_dicts_to_json([gwcv1, gwcv2]) == \ json.dumps((gwcv1.queryable_dict, gwcv2.queryable_dict))
def test_add_one_no_optionals(self): """Add a BotanicalName object to Botanical Names sheet.""" messages = StringIO() wb = Workbook() ws = wb.active bnws = BotanicalNamesWorksheet(ws) bnws.setup() bn = BotanicalName(name='Innagada davida') cn = CommonName(name='Rock') cn.index = Index(name='Music') bn.common_names = [cn] bnws.add_one(bn, stream=messages) assert bnws.cell( 2, bnws.cols['Common Names (JSON)'] ).value == queryable_dicts_to_json([cn]) assert bnws.cell( 2, bnws.cols['Botanical Name'] ).value == 'Innagada davida' assert bnws.cell(2, bnws.cols['Synonyms']).value is None messages.seek(0) msgs = messages.read() assert ('Adding data from <BotanicalName "Innagada davida"> to row ' '#2 of botanical names worksheet.') in msgs