def test_cascade_deletions(tag_factory): sug1 = tag_factory(names=['sug1']) sug2 = tag_factory(names=['sug2']) imp1 = tag_factory(names=['imp1']) imp2 = tag_factory(names=['imp2']) tag = db.Tag() tag.names = [db.TagName('alias1'), db.TagName('alias2')] tag.suggestions = [] tag.implications = [] tag.category = db.TagCategory('category') tag.creation_time = datetime(1997, 1, 1) tag.last_edit_time = datetime(1998, 1, 1) tag.post_count = 1 db.session.add_all([tag, sug1, sug2, imp1, imp2]) db.session.commit() assert tag.tag_id is not None assert sug1.tag_id is not None assert sug2.tag_id is not None assert imp1.tag_id is not None assert imp2.tag_id is not None tag.suggestions.append(sug1) tag.suggestions.append(sug2) tag.implications.append(imp1) tag.implications.append(imp2) db.session.commit() db.session.delete(tag) db.session.commit() assert db.session.query(db.Tag).count() == 4 assert db.session.query(db.TagName).count() == 4 assert db.session.query(db.TagImplication).count() == 0 assert db.session.query(db.TagSuggestion).count() == 0
def factory(names=None, category=None, category_name='dummy'): if not category: category = db.TagCategory(category_name) db.session.add(category) tag = db.Tag() tag.names = [db.TagName(name) for name in (names or [get_unique_name()])] tag.category = category tag.creation_time = datetime.datetime(1996, 1, 1) return tag
def test_ctx(tmpdir, config_injector, context_factory, user_factory, tag_factory): config_injector({ 'data_dir': str(tmpdir), 'tag_name_regex': '^[^!]*$', 'tag_category_name_regex': '^[^!]*$', 'privileges': { 'tags:create': db.User.RANK_REGULAR }, }) db.session.add_all( [db.TagCategory(name) for name in ['meta', 'character', 'copyright']]) db.session.flush() ret = util.dotdict() ret.context_factory = context_factory ret.user_factory = user_factory ret.tag_factory = tag_factory ret.api = api.TagListApi() return ret
def test_saving_tag(tag_factory): sug1 = tag_factory(names=['sug1']) sug2 = tag_factory(names=['sug2']) imp1 = tag_factory(names=['imp1']) imp2 = tag_factory(names=['imp2']) tag = db.Tag() tag.names = [db.TagName('alias1'), db.TagName('alias2')] tag.suggestions = [] tag.implications = [] tag.category = db.TagCategory('category') tag.creation_time = datetime(1997, 1, 1) tag.last_edit_time = datetime(1998, 1, 1) db.session.add_all([tag, sug1, sug2, imp1, imp2]) db.session.commit() assert tag.tag_id is not None assert sug1.tag_id is not None assert sug2.tag_id is not None assert imp1.tag_id is not None assert imp2.tag_id is not None tag.suggestions.append(sug1) tag.suggestions.append(sug2) tag.implications.append(imp1) tag.implications.append(imp2) db.session.commit() tag = db.session \ .query(db.Tag) \ .join(db.TagName) \ .filter(db.TagName.name=='alias1') \ .one() assert [tag_name.name for tag_name in tag.names] == ['alias1', 'alias2'] assert tag.category.name == 'category' assert tag.creation_time == datetime(1997, 1, 1) assert tag.last_edit_time == datetime(1998, 1, 1) assert [relation.names[0].name for relation in tag.suggestions] \ == ['sug1', 'sug2'] assert [relation.names[0].name for relation in tag.implications] \ == ['imp1', 'imp2']
def factory(name='dummy', color='dummy'): category = db.TagCategory() category.name = name category.color = color return category
def create_category(name, color): category = db.TagCategory() update_category_name(category, name) update_category_color(category, color) return category