Skip to content

Instantly share code, notes, and snippets.

View azamsharp's full-sized avatar

Mohammad Azam azamsharp

View GitHub Profile
@azamsharp
azamsharp / .swift
Created November 27, 2017 20:41
TableViewDataSource in SourcesTableViewController
class SourcesTableViewController : UITableViewController {
private var webservice :Webservice!
private var sourceListViewModel :SourceListViewModel!
private var dataSource :TableViewDataSource<SourceTableViewCell,SourceViewModel>!
override func viewDidLoad() {
super.viewDidLoad()
@azamsharp
azamsharp / .swift
Created November 27, 2017 21:20
PrepareForSegue
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == SegueIdentifier.showSourceDetails {
performSegueForShowSourceDetails(segue: segue)
} else if segue.identifier == SegueIdentifier.addSource {
performSegueForAddSource(segue: segue)
}
}
@azamsharp
azamsharp / .swift
Created November 27, 2017 21:22
Constants
struct Maximum {
static let allowedCharactersForDescription = 70
}
struct Cells {
static let headline = "HeadlineTableViewCell"
static let source = "SourceTableViewCell"
}
struct SegueIdentifier {
@azamsharp
azamsharp / .swift
Created November 27, 2017 21:49
BindingTextView
class BindingTextView : UITextView, UITextViewDelegate {
var numberOfCharactersEntered :(Int,Int) -> () = { _,_ in }
var limit :Int = 0
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.delegate = self
}
@azamsharp
azamsharp / .swift
Created November 27, 2017 21:52
AddSourceViewModel
class AddSourceViewModel {
var title :String!
var description :String!
func remainingNumberOfAllowedCharacters(numberOfCharactersEntered :Int, limit :Int) -> Int {
let count = limit - numberOfCharactersEntered
if count < 0 {
@azamsharp
azamsharp / .swift
Created November 28, 2017 02:17
AddSourceViewModel
override func viewDidLoad() {
super.viewDidLoad()
self.addSourceViewModel = AddSourceViewModel()
self.descriptionTextView.bind { count,limit in
self.remainingCharactersCountLabel.text = "\(self.addSourceViewModel.remainingNumberOfAllowedCharacters(numberOfCharactersEntered: count, limit:limit))"
}.limit(to: Maximum.allowedCharactersForDescription)
}
@azamsharp
azamsharp / .swift
Created December 3, 2017 04:10
Register For a new Account Test
class When_User_Is_Registering_For_A_New_Account: XCTestCase {
private var app :XCUIApplication!
override func setUp() {
super.setUp()
continueAfterFailure = false
self.app = XCUIApplication()
self.app.launch()
@azamsharp
azamsharp / .swift
Created December 3, 2017 04:45
tapAndType Extension Method
extension XCUIElement {
func tapAndType(text :String) {
tap()
typeText(text)
}
func tapAndClear() {
tap()
typeText("")
@azamsharp
azamsharp / .swift
Created December 3, 2017 12:06
button click
@IBAction func saveButtonClicked() {
let user = User(username: self.usernameTextField.text!, password: self.passwordTextField.text!)
let isSaved = self.dataAccess.saveUser(user)
if isSaved {
performSegue(withIdentifier: "LoginTableViewController", sender: self)
} else {
self.messageLabel.text = "User name is already taken"
@azamsharp
azamsharp / .swift
Created December 3, 2017 12:16
User class
public class User {
var username :String!
var password :String!
var userId :String!
init(username :String, password :String) {
self.username = username
self.password = password
}