Skip to main content

aws/test_s3tree.py

1from s3tree import build_s3_tree, S3Folder
4def test_builds_a_tree_of_top_level_objects():
5 keys = ["cat.jpg", "dog.png", "emu.gif"]
7 tree = build_s3_tree(keys)
8 assert tree == S3Folder(objects=["cat.jpg", "dog.png", "emu.gif"], path="")
11def test_builds_a_tree_with_a_single_folder():
12 keys = ["cat.jpg", "colours/blue.txt", "colours/green.txt", "colours/red.txt"]
14 tree = build_s3_tree(keys)
15 assert tree == S3Folder(
16 objects=["cat.jpg"],
17 folders={
18 "colours": S3Folder(
19 objects=["blue.txt", "green.txt", "red.txt"],
20 path="colours",
21 )
22 },
23 path="",
24 )
27def test_builds_a_tree_with_nested_folders():
28 keys = [
29 "cat.jpg",
30 "colours/blue.txt",
31 "colours/green.txt",
32 "colours/red.txt",
33 "shapes/triangle.png",
34 "shapes/circle.txt",
35 "shapes/quadrilaterals/square.txt",
36 "shapes/quadrilaterals/rectangle.txt",
37 ]
39 tree = build_s3_tree(keys)
40 assert tree == S3Folder(
41 objects=["cat.jpg"],
42 folders={
43 "colours": S3Folder(
44 objects=["blue.txt", "green.txt", "red.txt"],
45 path="colours",
46 ),
47 "shapes": S3Folder(
48 objects=["circle.txt", "triangle.png"],
49 folders={
50 "quadrilaterals": S3Folder(
51 objects=["rectangle.txt", "square.txt"],
52 path="shapes/quadrilaterals",
53 )
54 },
55 path="shapes",
56 ),
57 },
58 path="",
59 )