1 import Quick 2 import Nimble 3 4 @testable import EXDevMenuInterface 5 6 class DevMenuItemsContainerTest: QuickSpec { specnull7 override func spec() { 8 it("should respect importance") { 9 let container = DevMenuItemsContainer() 10 11 let seeder = [("action-1", ItemImportance.lowest), ("action-2", ItemImportance.medium), ("action-3", ItemImportance.highest)] 12 13 seeder.forEach { actionDate in 14 let action = DevMenuAction(withId: actionDate.0) 15 action.label = { actionDate.0 } 16 action.importance = actionDate.1.rawValue 17 18 container.addItem(action) 19 } 20 let items = container.getRootItems() 21 22 expect(items.count).to(equal(3)) 23 expect((items[0] as! DevMenuAction).label()).to(equal("action-3")) 24 expect((items[1] as! DevMenuAction).label()).to(equal("action-2")) 25 expect((items[2] as! DevMenuAction).label()).to(equal("action-1")) 26 } 27 28 it("should unwrap other containers") { 29 let container = DevMenuItemsContainer() 30 container.addItem(DevMenuAction(withId: "action-1")) 31 let innerContainer = DevMenuGroup() 32 innerContainer.addItem(DevMenuAction(withId: "action-2")) 33 container.addItem(innerContainer) 34 35 let items = container.getAllItems() 36 37 expect(items.count).to(equal(3)) 38 expect(items[0] as? DevMenuAction).toNot(beNil()) 39 expect(items[1] as? DevMenuGroup).toNot(beNil()) 40 expect(items[2] as? DevMenuAction).toNot(beNil()) 41 } 42 43 it("should serilize items") { 44 let container = DevMenuItemsContainer() 45 container.addItem(DevMenuAction(withId: "action-1")) 46 let innerContainer = DevMenuGroup() 47 innerContainer.addItem(DevMenuAction(withId: "action-2")) 48 container.addItem(innerContainer) 49 50 let items = container.serializeItems() 51 52 expect(items.count).to(equal(2)) 53 expect(items[0]["type"] as? Int).to(equal(ItemType.action.rawValue)) 54 expect(items[0]["actionId"] as? String).to(equal("action-1")) 55 56 expect(items[1]["type"] as? Int).to(equal(ItemType.group.rawValue)) 57 58 let innerItem = (items[1]["items"] as! [[String: Any]])[0] 59 expect(innerItem["type"] as? Int).to(equal(ItemType.action.rawValue)) 60 expect(innerItem["actionId"] as? String).to(equal("action-2")) 61 } 62 } 63 } 64