Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
refactored view model data
- Loading branch information
1 parent
181c373
commit 03273ba
Showing
22 changed files
with
981 additions
and
195 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
// | ||
// SessionTests.swift | ||
// TrySwiftData | ||
// | ||
// Created by Natasha Murashev on 3/18/17. | ||
// Copyright © 2017 CocoaPods. All rights reserved. | ||
// | ||
|
||
import XCTest | ||
import TrySwiftData | ||
|
||
/** | ||
class SessionTests: XCTestCase { | ||
fileprivate let workshop = nyc2016Sessions["freeswiftworkshop"]! | ||
fileprivate let workshopNoEvent = tko2017Sessions["day3APIWorkshop"]! | ||
fileprivate let meetup = nyc2016Sessions["preconfmeetup"]! | ||
fileprivate let talk = nyc2016Sessions["day2Lambda"]! | ||
fileprivate let lightningTalk = tko2017Sessions["day1LightningTalk1"]! | ||
fileprivate let officeHours = tko2017Sessions["day1FelixOfficeHours"]! | ||
fileprivate let announcement = tko2017Sessions["day1Opening"]! | ||
fileprivate let sponsoredDemo = nyc2016Sessions["day3SponsoredDemo"]! | ||
fileprivate let breakfast = nyc2016Sessions["day2Breakfast"]! | ||
fileprivate let coffeeBreakSponsored = nyc2016Sessions["day2FirstCoffee"]! | ||
fileprivate let coffeeBreak = tko2017Sessions["day1FirstCoffee"]! | ||
fileprivate let lunch = tko2017Sessions["day1Lunch"]! | ||
fileprivate let party = nyc2016Sessions["day2Party"]! | ||
} | ||
// MARK: Session Formatted Title Tests | ||
extension SessionTests { | ||
func testFormattedTitle_Workshop() { | ||
XCTAssertEqual(workshop.formattedTitle, "FREE Swift Workshop") | ||
} | ||
func testFormattedTitle_WorkshopNoEvent() { | ||
XCTAssertEqual(workshopNoEvent.formattedTitle, "API Workshops") | ||
} | ||
func testFormattedTitle_Meetup() { | ||
XCTAssertEqual(meetup.formattedTitle, "Pre-conference Meetup") | ||
} | ||
func testFormattedTitle_Breakfast() { | ||
XCTAssertEqual(breakfast.formattedTitle, "Breakfast & Registration") | ||
} | ||
func testFormattedTitle_Announcement() { | ||
XCTAssertEqual(announcement.formattedTitle, "Opening Remarks") | ||
} | ||
func testFormattedTitle_Talk() { | ||
XCTAssertEqual(talk.formattedTitle, "Lambda: There and Back Again") | ||
} | ||
func testFormattedTitle_LightningTalk() { | ||
XCTAssertEqual(lightningTalk.formattedTitle, "The Safety of Unsafe Swift") | ||
} | ||
func testFormattedTitle_SponsoredDemo() { | ||
XCTAssertEqual(sponsoredDemo.formattedTitle, "Sponsored Demo") | ||
} | ||
func testFormattedTitle_CoffeeBreak() { | ||
XCTAssertEqual(coffeeBreakSponsored.formattedTitle, "Coffee Break, by Domo") | ||
XCTAssertEqual(coffeeBreak.formattedTitle, "Coffee Break") | ||
} | ||
func testFormattedTitle_Lunch() { | ||
XCTAssertEqual(lunch.formattedTitle, "Lunch") | ||
} | ||
func testFormattedTitle_OfficeHours() { | ||
XCTAssertEqual(officeHours.formattedTitle, "Office Hours with Felix Krause") | ||
} | ||
func testFormattedTitle_OfficeHoursNoSpeaker() { | ||
let officeHoursNoSpeaker = officeHours | ||
officeHoursNoSpeaker.presentation?.speaker = nil | ||
XCTAssertEqual(officeHoursNoSpeaker.formattedTitle, "Office Hours") | ||
} | ||
func testFormattedTitle_Party() { | ||
XCTAssertEqual(party.formattedTitle, "🍕 & 🎸 Party with Airplane Mode") | ||
} | ||
} | ||
// MARK: Session Formatted Subtitle Tests | ||
private extension SessionTests { | ||
func testFormattedSubtitle_Workshop() { | ||
} | ||
func testFormattedSubtitle_Meetup() { | ||
} | ||
func testFormattedSubtitle_Breakfast() { | ||
} | ||
func testFormattedSubtitle_Announcement() { | ||
} | ||
func testFormattedSubtitle_Talk() { | ||
} | ||
func testFormattedSubtitle_LightningTalk() { | ||
} | ||
func testFormattedSubtitle_SponsoredDemo() { | ||
} | ||
func testFormattedSubtitle_CoffeeBreak() { | ||
} | ||
func testFormattedSubtitle_Lunch() { | ||
} | ||
func testFormattedSubtitle_OfficeHours() { | ||
} | ||
func testFormattedSubtitle_Party() { | ||
} | ||
} | ||
*/ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
// | ||
// AnnouncementSessionViewModel.swift | ||
// Pods | ||
// | ||
// Created by Natasha Murashev on 3/23/17. | ||
// | ||
// | ||
|
||
struct AnnouncementSessionViewModel: SessionDisplayable { | ||
|
||
private let session: Session | ||
private let defaults: SessionDefaults | ||
|
||
init?(session: Session) { | ||
if session.type == .announcement { | ||
self.session = session | ||
self.defaults = SessionDefaults(session: session) | ||
} else { | ||
return nil | ||
} | ||
} | ||
|
||
var title: String { | ||
return defaults.title | ||
} | ||
|
||
var subtitle: String { | ||
return defaults.subtitle | ||
} | ||
|
||
var logoURL: URL { | ||
return defaults.imageURL ?? defaults.logoImageURL | ||
} | ||
|
||
var location: String { | ||
return defaults.location | ||
} | ||
|
||
var sessionDescription: String { | ||
return "📣".localized() | ||
} | ||
|
||
var presentationSummary: String { | ||
return defaults.summary | ||
} | ||
|
||
var selectable: Bool { | ||
return false | ||
} | ||
|
||
var twitter: String { | ||
return "@\(defaults.twitter)" | ||
} | ||
} |
Binary file not shown.
Empty file.
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
// | ||
// BreakfastSession.swift | ||
// Pods | ||
// | ||
// Created by Natasha Murashev on 3/23/17. | ||
// | ||
// | ||
|
||
struct BreakfastSessionViewModel: SessionDisplayable { | ||
|
||
private let session: Session | ||
private let defaults: SessionDefaults | ||
|
||
init?(session: Session) { | ||
if session.type == .breakfast { | ||
self.session = session | ||
self.defaults = SessionDefaults(session: session) | ||
} else { | ||
return nil | ||
} | ||
} | ||
|
||
var title: String { | ||
return defaults.title | ||
} | ||
|
||
var subtitle: String { | ||
return defaults.subtitle | ||
} | ||
|
||
var logoURL: URL { | ||
return defaults.imageURL ?? defaults.logoImageURL | ||
} | ||
|
||
var location: String { | ||
return defaults.location | ||
} | ||
|
||
var sessionDescription: String { | ||
return "❤️".localized() | ||
} | ||
|
||
var presentationSummary: String { | ||
return defaults.summary | ||
} | ||
|
||
var selectable: Bool { | ||
return false | ||
} | ||
|
||
var twitter: String { | ||
return "@\(defaults.twitter)" | ||
} | ||
} | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
// | ||
// CoffeeBreakSessionViewModel.swift | ||
// Pods | ||
// | ||
// Created by Natasha Murashev on 3/23/17. | ||
// | ||
// | ||
|
||
struct CoffeeBreakSessionViewModel: SessionDisplayable { | ||
|
||
private let session: Session | ||
private let defaults: SessionDefaults | ||
|
||
init?(session: Session) { | ||
if session.type == .coffeeBreak { | ||
self.session = session | ||
self.defaults = SessionDefaults(session: session) | ||
} else { | ||
return nil | ||
} | ||
} | ||
|
||
var title: String { | ||
if let sponsor = session.sponsor { | ||
return String(format: "Coffee Break, by %@".localized(), sponsor.name) | ||
} | ||
return "Coffee Break".localized() | ||
} | ||
|
||
var subtitle: String { | ||
if let sponsor = session.sponsor { | ||
return sponsor.localizedName | ||
} | ||
return defaults.subtitle | ||
} | ||
|
||
var logoURL: URL { | ||
if let imageURL = defaults.imageURL { | ||
return imageURL | ||
} | ||
|
||
if let sponsor = session.sponsor { | ||
return sponsor.logoURL | ||
} | ||
|
||
return defaults.logoImageURL | ||
} | ||
|
||
var location: String { | ||
return defaults.location | ||
} | ||
|
||
var sessionDescription: String { | ||
return "❤️".localized() | ||
} | ||
|
||
var presentationSummary: String { | ||
return defaults.summary | ||
} | ||
|
||
var selectable: Bool { | ||
return session.sponsor != nil | ||
} | ||
|
||
var twitter: String { | ||
let twitter = session.sponsor?.twitter ?? defaults.twitter | ||
return "@\(twitter)" | ||
} | ||
} |
Oops, something went wrong.