import Quick import Nimble @testable import EXDevMenuInterface class DevMenuItemsContainerTest: QuickSpec { override func spec() { it("should respect importance") { let container = DevMenuItemsContainer() let seeder = [("action-1", ItemImportance.lowest), ("action-2", ItemImportance.medium), ("action-3", ItemImportance.highest)] seeder.forEach { actionDate in let action = DevMenuAction(withId: actionDate.0) action.label = { actionDate.0 } action.importance = actionDate.1.rawValue container.addItem(action) } let items = container.getRootItems() expect(items.count).to(equal(3)) expect((items[0] as! DevMenuAction).label()).to(equal("action-3")) expect((items[1] as! DevMenuAction).label()).to(equal("action-2")) expect((items[2] as! DevMenuAction).label()).to(equal("action-1")) } it("should unwrap other containers") { let container = DevMenuItemsContainer() container.addItem(DevMenuAction(withId: "action-1")) let innerContainer = DevMenuGroup() innerContainer.addItem(DevMenuAction(withId: "action-2")) container.addItem(innerContainer) let items = container.getAllItems() expect(items.count).to(equal(3)) expect(items[0] as? DevMenuAction).toNot(beNil()) expect(items[1] as? DevMenuGroup).toNot(beNil()) expect(items[2] as? DevMenuAction).toNot(beNil()) } it("should serilize items") { let container = DevMenuItemsContainer() container.addItem(DevMenuAction(withId: "action-1")) let innerContainer = DevMenuGroup() innerContainer.addItem(DevMenuAction(withId: "action-2")) container.addItem(innerContainer) let items = container.serializeItems() expect(items.count).to(equal(2)) expect(items[0]["type"] as? Int).to(equal(ItemType.action.rawValue)) expect(items[0]["actionId"] as? String).to(equal("action-1")) expect(items[1]["type"] as? Int).to(equal(ItemType.group.rawValue)) let innerItem = (items[1]["items"] as! [[String: Any]])[0] expect(innerItem["type"] as? Int).to(equal(ItemType.action.rawValue)) expect(innerItem["actionId"] as? String).to(equal("action-2")) } } }