def similar_get(id, body): """Returns the set of items ordered by similarity, compared to the given query item :param id: :type id: str :param body: :type body: dict | bytes :rtype: ResultItemSet """ try: vectorizer = TfidfVectorizer(tokenizer=normalize, stop_words='english') if connexion.request.is_json: data = {} input_item = Item(id=id, name='', similarity=0) results = [] item_set = ItemSet.from_dict(connexion.request.get_json()) for i in item_set.data: if i.id != id: data[i.id] = i.name else: input_item.name = i.name for item in data: results.append( (Item(id=item, name=data[item], similarity=cosine_sim(input_item.name, data[item], vectorizer)))) item_set.data = sorted(results, key=lambda it: (it.similarity), reverse=True) except Exception as e: logger.warning(e, connexion.request) return item_set
def test_dict(mock_session): item = Item() item.name = 'x' item.catagory_id = 2 item.description = 'z' assert item.dict == { 'id': None, 'catagory_id': 2, 'name': 'x', 'description': 'z' }
def test_update_item_with_name_updates_name(mock_session): item = Item() item.name = 'a' item.update(name='b') assert item.name == 'b'