describe("뷰가 로드되었을 때") { var interactor: EventKeywordNoticeInteractor! var presenter: EventKeywordNoticePresenterMock! let worker = EventKeywordNoticeWorkerMock() beforeEach { interactor = EventKeywordNoticeInteractor(worker: worker) presenter = EventKeywordNoticePresenterMock() interactor.presenter = presenter } context("선택한 관심 키워드를 가져오는데 성공하면") { beforeEach { let request = EventKeywordNotice.Request.OnLoad() interactor.process(request) } it("선택한 관심 키워드를 전달한다") { expect(presenter.displayInterestKeywordsCalled).to(beTrue()) } } } describe("키워드를 선택했을 때") { var interactor: EventKeywordNoticeInteractor! var presenter: EventKeywordNoticePresenterMock! let worker = EventKeywordNoticeWorkerMock() let selectedKeywords = [ EventKeyword.Keyword(id: 1, kind: "EVENT", keyword: "a.b.c", title: "키워드1"), EventKeyword.Keyword(id: 2, kind: "EVENT", keyword: "d.e.f", title: "키워드2") ] beforeEach { interactor = EventKeywordNoticeInteractor(keywords: selectedKeywords, worker: worker) presenter = EventKeywordNoticePresenterMock() interactor.presenter = presenter } context("키워드 선택이 완료되면") { it("선택한 키워드를 전달한다") { let request = EventKeywordNotice.Request.SelectKeywords( indexPaths: [IndexPath(row: 0, section: 0), IndexPath(row: 1, section: 0)] ) interactor.process(request) expect(presenter.displayInterestKeywordsCalled).to(beTrue()) expect(presenter.displayInterestKeywords.count).to(equal(selectedKeywords.count)) } } }