def test_add_items_categories_adds_term_to_items(terms, items):
    url = reverse('data-view-process')
    request = ReqFactory.post(url, {'a': 'b'})
    request = fix_messages(request)

    expected = {
        items[0]['id']: terms[0],
        items[1]['id']: terms[1]
    }

    category_map = [
        (item_id, term.taxonomy.slug, term.name)
        for item_id, term in expected.items()
    ]
    _add_items_categories(request, category_map)

    fetched_items = transport.items.list()
    found = 0
    for item in fetched_items:
        if item['id'] in expected:
            found += 1
            assert len(item['terms']) == 1
            [term_data] = item['terms']
            assert term_data['name'] == expected[item['id']].name
            assert term_data['taxonomy'] == expected[item['id']].taxonomy.slug

    assert found == 2
def test_add_items_categories_removes_term_from_item(term, item):
    transport.items.add_terms(item['id'], term.taxonomy.slug, term.name)

    category_list = [(item['id'], term.taxonomy.slug, ''), ]

    url = reverse('data-view-process')
    request = ReqFactory.post(url, {'a': 'b'})
    request = fix_messages(request)
    _add_items_categories(request, category_list)

    [item_data] = transport.items.list()
    assert len(item_data['terms']) == 0
def test_add_categories_adds_term_to_item(term, item):
    category_list = [(item['id'], term.taxonomy.slug, term.name), ]

    url = reverse('data-view-process')
    request = ReqFactory.post(url, {'a': 'b'})
    request = fix_messages(request)
    _add_items_categories(request, category_list)

    [item_data] = transport.items.list()
    [term_data] = item_data['terms']
    assert term_data['name'] == term.name
    assert term_data['taxonomy'] == term.taxonomy.slug