From 8f58d5666dc603407c0043d6d6b3b0f82df6162b Mon Sep 17 00:00:00 2001 From: David E Nedrow Date: Thu, 12 Jul 2018 07:13:58 -0400 Subject: [PATCH 1/3] Update to correct method calls for new naming style in Swift 3. Minor formatting changes to remove "dead" whitespace. Added project-specific AppCode project files. User-specific Appcode files added for project .gitignore. --- .gitignore | 10 ++- .idea/.name | 1 + .idea/modules.xml | 8 +++ .idea/mvvmc-demo.iml | 2 + .idea/vcs.xml | 6 ++ .idea/xcode.xml | 4 ++ .../MVVMCAuthenticateViewModelTests.swift | 52 +++++++-------- MVVM-CTests/MVVMCListViewModelTests.swift | 64 +++++++++---------- MVVM-CTests/MVVMDetailViewModelTests.swift | 32 +++++----- 9 files changed, 104 insertions(+), 75 deletions(-) create mode 100644 .idea/.name create mode 100644 .idea/modules.xml create mode 100644 .idea/mvvmc-demo.iml create mode 100644 .idea/vcs.xml create mode 100644 .idea/xcode.xml diff --git a/.gitignore b/.gitignore index cab8c69..52d52b5 100644 --- a/.gitignore +++ b/.gitignore @@ -62,4 +62,12 @@ Carthage/Build fastlane/report.xml fastlane/Preview.html fastlane/screenshots -fastlane/test_output \ No newline at end of file +fastlane/test_output + +# JetBrains AppCode user-specific files +/.idea/atlassian-ide-plugin.xml +/.idea/codeStyles/ +/.idea/markdown-navigator.xml +/.idea/markdown-navigator/ +/.idea/misc.xml +/.idea/workspace.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..c769ae9 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +MVVM-C \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..e4716fa --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/mvvmc-demo.iml b/.idea/mvvmc-demo.iml new file mode 100644 index 0000000..74121dc --- /dev/null +++ b/.idea/mvvmc-demo.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/xcode.xml b/.idea/xcode.xml new file mode 100644 index 0000000..6f2ef05 --- /dev/null +++ b/.idea/xcode.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/MVVM-CTests/MVVMCAuthenticateViewModelTests.swift b/MVVM-CTests/MVVMCAuthenticateViewModelTests.swift index 71a3c37..9b8f90b 100644 --- a/MVVM-CTests/MVVMCAuthenticateViewModelTests.swift +++ b/MVVM-CTests/MVVMCAuthenticateViewModelTests.swift @@ -10,12 +10,12 @@ import XCTest class MVVMCAuthenticateViewModelTests: XCTestCase { - + var currentExpectaion: XCTestExpectation? var expectedCanSubmit: Bool = false var expectedErrorMessage: String = "" - - + + func testInitialDefaults() { let vm = MVVMCAuthenticateViewModel() XCTAssertEqual("", vm.email) @@ -26,14 +26,14 @@ class MVVMCAuthenticateViewModelTests: XCTestCase XCTAssertNil(vm.model) XCTAssertNil(vm.coordinatorDelegate) } - + func testEmail() { let vm = MVVMCAuthenticateViewModel() vm.email = "scotty@example.com" XCTAssertEqual("scotty@example.com", vm.email) } - + func testPassword() { let vm = MVVMCAuthenticateViewModel() @@ -44,50 +44,50 @@ class MVVMCAuthenticateViewModelTests: XCTestCase func testCanSubmit() { let vm = MVVMCAuthenticateViewModel() XCTAssertFalse(vm.canSubmit) - + vm.email = "scotty@example.com" vm.password = "" XCTAssertFalse(vm.canSubmit) - + vm.email = "" vm.password = "password" XCTAssertFalse(vm.canSubmit) - + vm.email = "scotty@example.com" vm.password = "password" XCTAssert(vm.canSubmit) } - + func testErrorMessageDidChange() { - + let vm = MVVMCAuthenticateViewModel() vm.viewDelegate = self - - currentExpectaion = expectationWithDescription("estErrorMessageDidChange") + + currentExpectaion = expectation(description: "estErrorMessageDidChange") expectedErrorMessage = "Incomplete or Invalid Data"; - + // Call submit with no model set on the viewModel should produce an error message vm.submit() - - waitForExpectationsWithTimeout(1) { error in + + waitForExpectations(timeout: 1) { error in vm.viewDelegate = nil } } - + func testCoordinatorDelegate() { let vm = MVVMCAuthenticateViewModel() vm.model = MVVMCAuthenticateModel() - + vm.coordinatorDelegate = self - currentExpectaion = expectationWithDescription("testCoordinatorDelegate") - + currentExpectaion = expectation(description: "testCoordinatorDelegate") + vm.email = "scotty@example.com" vm.password = "password" - + vm.submit() - - waitForExpectationsWithTimeout(1) { error in + + waitForExpectations(timeout: 1) { error in vm.coordinatorDelegate = nil } } @@ -95,14 +95,14 @@ class MVVMCAuthenticateViewModelTests: XCTestCase extension MVVMCAuthenticateViewModelTests: AuthenticateViewModelViewDelegate { - func canSubmitStatusDidChange(viewModel: AuthenticateViewModel, status: Bool) + func canSubmitStatusDidChange(_ viewModel: AuthenticateViewModel, status: Bool) { XCTAssertEqual(expectedCanSubmit, status) XCTAssertEqual(expectedCanSubmit, viewModel.canSubmit) currentExpectaion?.fulfill() } - - func errorMessageDidChange(viewModel: AuthenticateViewModel, message: String) + + func errorMessageDidChange(_ viewModel: AuthenticateViewModel, message: String) { XCTAssertEqual(expectedErrorMessage, message) XCTAssertEqual(expectedErrorMessage, viewModel.errorMessage) @@ -112,7 +112,7 @@ extension MVVMCAuthenticateViewModelTests: AuthenticateViewModelViewDelegate extension MVVMCAuthenticateViewModelTests: AuthenticateViewModelCoordinatorDelegate { - func authenticateViewModelDidLogin(viewModel viewModel: AuthenticateViewModel) { + func authenticateViewModelDidLogin(viewModel: AuthenticateViewModel) { currentExpectaion?.fulfill() } } diff --git a/MVVM-CTests/MVVMCListViewModelTests.swift b/MVVM-CTests/MVVMCListViewModelTests.swift index 00eaa53..3927ab0 100644 --- a/MVVM-CTests/MVVMCListViewModelTests.swift +++ b/MVVM-CTests/MVVMCListViewModelTests.swift @@ -10,9 +10,9 @@ import XCTest class MVVMCListViewModelTests: XCTestCase { - + var currentExpectaion: XCTestExpectation? - + func testDefaults() { let vm = MVVMCListViewModel() @@ -22,81 +22,81 @@ class MVVMCListViewModelTests: XCTestCase XCTAssertNil(vm.model) XCTAssertNil(vm.coordinatorDelegate) } - + func testNumberOfItems() { let vm = MVVMCListViewModel() - + // We can test with the actual app model as it produces hard coded data // In normal testing we would create a ListModel implementation with fix test data to use, vm.model = MVVMCListModel() XCTAssertEqual(7,vm.numberOfItems) } - + func testItemAtIndex() { - + let vm = MVVMCListViewModel() - + // We can test with the actual app model as it produces hard coded data // In normal testing we would create a ListModel implementation with fix test data to use, vm.model = MVVMCListModel() - - + + // Test a value from the start , end and middle of list - + var dataItem = vm.itemAtIndex(0) XCTAssertNotNil(dataItem) - + guard let item = dataItem else { return } - + XCTAssertEqual("James T Kirk", item.name) XCTAssertEqual("Captain", item.role) - - + + dataItem = vm.itemAtIndex(6) XCTAssertNotNil(dataItem) - + guard let item2 = dataItem else { return } - + XCTAssertEqual("Pavel Chekov", item2.name) XCTAssertEqual("Ensign", item2.role) - - + + dataItem = vm.itemAtIndex(3) XCTAssertNotNil(dataItem) - + guard let item3 = dataItem else { return } - + XCTAssertEqual("Montgomery Scott", item3.name) XCTAssertEqual("Lieutenant Commander", item3.role) - + } - + func testItemAtIndexWithInvalidIndex() { - + let vm = MVVMCListViewModel() - + // We can test with the actual app model as it produces hard coded data // In normal testing we would create a ListModel implementation with fixed test data to use, vm.model = MVVMCListModel() - + // Test a value from beyond the end of the list let dataItem = vm.itemAtIndex(vm.numberOfItems + 1) XCTAssertNil(dataItem) } - + func testUseItemAtIndex() { - + let vm = MVVMCListViewModel() - + // We can test with the actual app model as it produces hard coded data // In normal testing we would create a ListModel implementation with fixed test data to use, vm.model = MVVMCListModel() vm.coordinatorDelegate = self - currentExpectaion = expectationWithDescription("testUseItemAtIndex") + currentExpectaion = expectation(description: "testUseItemAtIndex") vm.useItemAtIndex(6) - - waitForExpectationsWithTimeout(1) { error in + + waitForExpectations(timeout: 1) { error in vm.coordinatorDelegate = nil } } @@ -105,7 +105,7 @@ class MVVMCListViewModelTests: XCTestCase extension MVVMCListViewModelTests: ListViewModelCoordinatorDelegate { - func listViewModelDidSelectData(viewModel: ListViewModel, data: DataItem) { + func listViewModelDidSelectData(_ viewModel: ListViewModel, data: DataItem) { XCTAssertEqual("Pavel Chekov", data.name) XCTAssertEqual("Ensign", data.role) currentExpectaion?.fulfill() diff --git a/MVVM-CTests/MVVMDetailViewModelTests.swift b/MVVM-CTests/MVVMDetailViewModelTests.swift index 1515df0..9d03f93 100644 --- a/MVVM-CTests/MVVMDetailViewModelTests.swift +++ b/MVVM-CTests/MVVMDetailViewModelTests.swift @@ -13,8 +13,8 @@ class MVVMDetailViewModelTests: XCTestCase var currentExpectaion: XCTestExpectation? var expectedItem: DataItem? - - + + func testInitialDefaults() { let vm = MVVMCDetailViewModel() XCTAssertNil(vm.detail) @@ -22,7 +22,7 @@ class MVVMDetailViewModelTests: XCTestCase XCTAssertNil(vm.model) XCTAssertNil(vm.coordinatorDelegate) } - + func testDetail() { let vm = MVVMCDetailViewModel() @@ -30,35 +30,35 @@ class MVVMDetailViewModelTests: XCTestCase let model = MVVMCDetailModel(detailItem: item) vm.model = model XCTAssertNotNil(vm.detail) - + guard let detail = vm.detail else { return } - + XCTAssertEqual("Test Name", detail.name) XCTAssertEqual("Test Role", detail.role) } - - + + func testDetailDidChange() { - + let vm = MVVMCDetailViewModel() expectedItem = MVVMCDataItem(name: "Test Name", role: "Test Role") let model = MVVMCDetailModel(detailItem: expectedItem!) vm.viewDelegate = self - currentExpectaion = expectationWithDescription("testDetailDidChange") + currentExpectaion = expectation(description: "testDetailDidChange") vm.model = model - - waitForExpectationsWithTimeout(1) { error in + + waitForExpectations(timeout: 1) { error in vm.viewDelegate = nil } } - + func testCoordinatorDelegate() { let vm = MVVMCDetailViewModel() vm.coordinatorDelegate = self - currentExpectaion = expectationWithDescription("testDetailDidChange") + currentExpectaion = expectation(description: "testDetailDidChange") vm.done() - waitForExpectationsWithTimeout(1) { error in + waitForExpectations(timeout: 1) { error in vm.viewDelegate = nil } } @@ -66,7 +66,7 @@ class MVVMDetailViewModelTests: XCTestCase extension MVVMDetailViewModelTests: DetailViewModelViewDelegate { - func detailDidChange(viewModel viewModel: DetailViewModel) { + func detailDidChange(viewModel: DetailViewModel) { XCTAssertNotNil(viewModel.detail) XCTAssertEqual(expectedItem?.name, viewModel.detail?.name) XCTAssertEqual(expectedItem?.role, viewModel.detail?.role) @@ -76,7 +76,7 @@ extension MVVMDetailViewModelTests: DetailViewModelViewDelegate extension MVVMDetailViewModelTests: DetailViewModelCoordinatorDelegate { - func detailViewModelDidEnd(viewModel: DetailViewModel) { + func detailViewModelDidEnd(_ viewModel: DetailViewModel) { currentExpectaion?.fulfill() } } From 1ff7db18c9cf4de8a10b0d7a3b55e1bd52e23ce1 Mon Sep 17 00:00:00 2001 From: David E Nedrow Date: Thu, 12 Jul 2018 09:41:07 -0400 Subject: [PATCH 2/3] Added finishing new line to satisfy GitHub source parser. --- .idea/.name | 3 ++- .idea/modules.xml | 3 ++- .idea/mvvmc-demo.iml | 3 ++- .idea/vcs.xml | 3 ++- .idea/xcode.xml | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.idea/.name b/.idea/.name index c769ae9..3aa0648 100644 --- a/.idea/.name +++ b/.idea/.name @@ -1 +1,2 @@ -MVVM-C \ No newline at end of file +MVVM-C + diff --git a/.idea/modules.xml b/.idea/modules.xml index e4716fa..9952992 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -5,4 +5,5 @@ - \ No newline at end of file + + diff --git a/.idea/mvvmc-demo.iml b/.idea/mvvmc-demo.iml index 74121dc..6a6a582 100644 --- a/.idea/mvvmc-demo.iml +++ b/.idea/mvvmc-demo.iml @@ -1,2 +1,3 @@ - \ No newline at end of file + + diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7..c80f219 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -3,4 +3,5 @@ - \ No newline at end of file + + diff --git a/.idea/xcode.xml b/.idea/xcode.xml index 6f2ef05..0fb43dc 100644 --- a/.idea/xcode.xml +++ b/.idea/xcode.xml @@ -1,4 +1,5 @@ - \ No newline at end of file + + From a8e4879061ed48d1c87fea620818dd88be2761e1 Mon Sep 17 00:00:00 2001 From: David E Nedrow Date: Thu, 12 Jul 2018 09:46:22 -0400 Subject: [PATCH 3/3] Reverted carriage returns. AppCode Is re-writing the files frequently. Needs fixed on the JetBrains side. --- .idea/.name | 3 +-- .idea/modules.xml | 3 +-- .idea/mvvmc-demo.iml | 3 +-- .idea/vcs.xml | 3 +-- .idea/xcode.xml | 3 +-- 5 files changed, 5 insertions(+), 10 deletions(-) diff --git a/.idea/.name b/.idea/.name index 3aa0648..c769ae9 100644 --- a/.idea/.name +++ b/.idea/.name @@ -1,2 +1 @@ -MVVM-C - +MVVM-C \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index 9952992..e4716fa 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -5,5 +5,4 @@ - - + \ No newline at end of file diff --git a/.idea/mvvmc-demo.iml b/.idea/mvvmc-demo.iml index 6a6a582..74121dc 100644 --- a/.idea/mvvmc-demo.iml +++ b/.idea/mvvmc-demo.iml @@ -1,3 +1,2 @@ - - + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml index c80f219..94a25f7 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -3,5 +3,4 @@ - - + \ No newline at end of file diff --git a/.idea/xcode.xml b/.idea/xcode.xml index 0fb43dc..6f2ef05 100644 --- a/.idea/xcode.xml +++ b/.idea/xcode.xml @@ -1,5 +1,4 @@ - - + \ No newline at end of file