git.iko.soy/typeable/pandoc
on fa12d4e help sign in
typeable/pandoc/test/lua/module/pandoc-mediabag.lua
72 lines 2.1 kB history raw
1local tasty = require 'tasty'
3local test = tasty.test_case
4local group = tasty.test_group
5local assert = tasty.assert
7local mediabag = require 'pandoc.mediabag'
9return {
10 group 'insert' {
11 test('insert adds an item to the mediabag', function ()
12 local fp = "media/hello.txt"
13 local mt = "text/plain"
14 local contents = "Hello, World!"
15 assert.are_same(mediabag.list(), {})
16 mediabag.insert(fp, mt, contents)
17 assert.are_same(
18 mediabag.list(),
19 {{['path'] = fp, ['type'] = mt, ['length'] = 13}}
20 )
21 mediabag.empty() -- clean up
22 end),
23 test('is idempotent', function ()
24 local fp = "media/hello.txt"
25 local mt = "text/plain"
26 local contents = "Hello, World!"
27 mediabag.insert(fp, mt, contents)
28 mediabag.insert(fp, mt, contents)
29 assert.are_same(
30 mediabag.list(),
31 {{['path'] = fp, ['type'] = mt, ['length'] = 13}}
32 )
33 mediabag.empty() -- clean up
34 end),
35 },
37 group 'delete' {
38 test('removes an item', function ()
39 assert.are_same(mediabag.list(), {})
40 mediabag.insert('test.html', 'text/html', '<aside>Who cares?</aside>')
41 mediabag.insert('test.css', 'text/plain', 'aside { color: red; }')
42 assert.are_equal(#mediabag.list(), 2)
43 mediabag.delete('test.html')
44 assert.are_same(
45 mediabag.list(),
46 {{['path'] = 'test.css', ['type'] = 'text/plain', ['length'] = 21}}
47 )
48 mediabag.empty() -- clean up
49 end),
50 },
52 group 'items' {
53 test('iterates over all items', function ()
54 local input_items = {
55 ['test.html'] = {'text/html', '<aside>Really?</aside>'},
56 ['test.css'] = {'text/plain', 'aside { color: red; }'},
57 ['test.js'] = {'application/javascript', 'alert("HI MOM!")'}
58 }
59 -- fill mediabag
60 for name, v in pairs(input_items) do
61 mediabag.insert(name, v[1], v[2])
62 end
64 local seen_items = {}
65 for fp, mt, c in mediabag.items() do
66 seen_items[fp] = {mt, c}
67 end
68 assert.are_same(seen_items, input_items)
69 mediabag.empty() -- clean up
70 end)
71 }