//
//  Copyright (c) 2015 Mobify Research & Development Inc. All rights reserved.
//

import XCTest
@testable import Astro

class ModalViewPluginTests: AstroTestCase {
    var messageBus: MessageBus!
    var pluginResolver: StubPluginResolver!
    var modalViewPlugin: ModalViewPlugin!

    override func setUp() {
        messageBus = MessageBus()
        pluginResolver = StubPluginResolver()
        modalViewPlugin = ModalViewPlugin(address: "ModalViewPlugin:0", messageBus: messageBus, pluginResolver: pluginResolver, options: nil)
    }

    func testSetContentView() {
        let imageViewPlugin = ImageViewPlugin(address: "ImageViewPlugin:0", messageBus: messageBus, pluginResolver: pluginResolver, options: nil)
        pluginResolver.addPlugin(imageViewPlugin)

        modalViewPlugin.setContentView(imageViewPlugin.address) { _ in }

        XCTAssertEqual(imageViewPlugin.viewController.parent!, modalViewPlugin.viewController)
        XCTAssertTrue(containsChildView(modalViewPlugin.viewController.view!, childView: imageViewPlugin.viewController.view!))

        let imageViewPlugin2 = ImageViewPlugin(address: "ImageViewPlugin:2", messageBus: messageBus, pluginResolver: pluginResolver, options: nil)

        pluginResolver.addPlugin(imageViewPlugin2)

        modalViewPlugin.setContentView(imageViewPlugin2.address) { _ in }

        XCTAssertNil(imageViewPlugin.viewController.parent)
        XCTAssertEqual(imageViewPlugin2.viewController.parent!, modalViewPlugin.viewController)

        XCTAssertFalse(containsChildView(modalViewPlugin.viewController.view!, childView: imageViewPlugin.viewController.view!))
        XCTAssertTrue(containsChildView(modalViewPlugin.viewController.view!, childView: imageViewPlugin2.viewController.view!))
    }

    func testSetBackgroundColor() {
        modalViewPlugin.setBackgroundColor("#0000FF") { _ in }

        XCTAssertEqual(modalViewPlugin.viewController.view.backgroundColor!, UIColor.blue)
    }
}
