@@ -0,0 +1,72 @@
1+local tasty = require 'tasty'
2+
3+local test = tasty.test_case
4+local group = tasty.test_group
5+local assert = tasty.assert
6+
7+local mediabag = require 'pandoc.mediabag'
8+
9+return {
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+ },
36+
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+ },
51+
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
63+
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+ }
72+}