def test_complex_hash_generation():
    config['hashmaker.attributes'] = ['text', 'karma']

    tiddler1 = Tiddler('hi')
    tiddler1.text = 'hello'
    tiddler1.fields['karma'] = 'bad'
    hash_tiddler_hook(store.storage, tiddler1)

    tiddler2 = Tiddler('bye')
    tiddler2.text = 'hello'
    tiddler2.fields['karma'] = 'bad'
    hash_tiddler_hook(store.storage, tiddler2)

    assert tiddler1.fields['_hash'] == tiddler2.fields['_hash']

    tiddler2.fields['karma'] = 'good'
    del tiddler2.fields['_hash']
    hash_tiddler_hook(store.storage, tiddler2)

    assert tiddler1.fields['_hash'] != tiddler2.fields['_hash']

    config['hashmaker.attributes'] = ['text']
    del tiddler1.fields['_hash']
    del tiddler2.fields['_hash']
    hash_tiddler_hook(store.storage, tiddler1)
    hash_tiddler_hook(store.storage, tiddler2)
    assert tiddler1.fields['_hash'] == tiddler2.fields['_hash']
def test_store_hook():
    bag = Bag('nancy')
    store.put(bag)
    tiddler1 = Tiddler('hi', 'nancy')
    tiddler1.text = 'hello'
    store.put(tiddler1)

    tiddler2 = Tiddler('hi', 'nancy')
    tiddler2 = store.get(tiddler2)

    assert '_hash' in tiddler2.fields

    hash_tiddler_hook(store.storage, tiddler1)
    assert tiddler1.fields['_hash'] == tiddler2.fields['_hash']
def test_default_hash_generation():
    tiddler1 = Tiddler('hi')
    tiddler1.text = 'hello'

    assert '_hash' not in tiddler1.fields
    hash_tiddler_hook(store.storage, tiddler1)
    assert '_hash' in tiddler1.fields

    tiddler2 = Tiddler('bye')
    tiddler2.text = 'hello'
    hash_tiddler_hook(store.storage, tiddler2)
    assert tiddler1.fields['_hash'] == tiddler2.fields['_hash']

    tiddler2.text = 'goodbye'
    del tiddler2.fields['_hash']
    hash_tiddler_hook(store.storage, tiddler2)
    assert tiddler1.fields['_hash'] != tiddler2.fields['_hash']