mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-09 09:18:42 +09:00
Dactyloidae iOS initial commit
This commit is contained in:
parent
daa6179d22
commit
7154a0497e
2123 changed files with 197052 additions and 0 deletions
195
mobile/ios/ReadingListTests/ReadingListStorageTestCase.swift
Normal file
195
mobile/ios/ReadingListTests/ReadingListStorageTestCase.swift
Normal file
|
|
@ -0,0 +1,195 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
@testable import ReadingList
|
||||
import Foundation
|
||||
import Shared
|
||||
|
||||
import XCTest
|
||||
|
||||
class ReadingListStorageTestCase: XCTestCase {
|
||||
var storage: ReadingListStorage!
|
||||
|
||||
override func setUp() {
|
||||
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
|
||||
if FileManager.default.fileExists(atPath: "\(path)/ReadingList.db") {
|
||||
do {
|
||||
try FileManager.default.removeItem(atPath: "\(path)/ReadingList.db")
|
||||
} catch _ {
|
||||
XCTFail("Cannot remove old \(path)/ReadingList.db")
|
||||
}
|
||||
}
|
||||
storage = ReadingListSQLStorage(path: "\(path)/ReadingList.db")
|
||||
}
|
||||
|
||||
func testCreateRecord() {
|
||||
let result = storage.createRecordWithURL("http://www.anandtech.com/show/9117/analyzing-intel-core-m-performance", title: "Analyzing Intel Core M Performance: How 5Y10 can beat 5Y71 & the OEMs' Dilemma", addedBy: "Stefan's iPhone")
|
||||
switch result {
|
||||
case .failure(let error):
|
||||
XCTFail(error.description)
|
||||
case .success(let result):
|
||||
XCTAssertEqual(result.value.url, "http://www.anandtech.com/show/9117/analyzing-intel-core-m-performance")
|
||||
XCTAssertEqual(result.value.title, "Analyzing Intel Core M Performance: How 5Y10 can beat 5Y71 & the OEMs' Dilemma")
|
||||
XCTAssertEqual(result.value.addedBy, "Stefan's iPhone")
|
||||
XCTAssertEqual(result.value.unread, true)
|
||||
XCTAssertEqual(result.value.archived, false)
|
||||
XCTAssertEqual(result.value.favorite, false)
|
||||
}
|
||||
}
|
||||
|
||||
func testGetRecordWithURL() {
|
||||
let result1 = storage.createRecordWithURL("http://www.anandtech.com/show/9117/analyzing-intel-core-m-performance", title: "Analyzing Intel Core M Performance: How 5Y10 can beat 5Y71 & the OEMs' Dilemma", addedBy: "Stefan's iPhone")
|
||||
switch result1 {
|
||||
case .failure(let error):
|
||||
XCTFail(error.description)
|
||||
case .success( _):
|
||||
break
|
||||
}
|
||||
|
||||
let result2 = storage.getRecordWithURL("http://www.anandtech.com/show/9117/analyzing-intel-core-m-performance")
|
||||
switch result2 {
|
||||
case .failure(let error):
|
||||
XCTFail(error.description)
|
||||
case .success( _):
|
||||
XCTAssert(result1.successValue == result2.successValue!)
|
||||
}
|
||||
}
|
||||
|
||||
func testGetUnreadRecords() {
|
||||
// Create 3 records, mark the 2nd as read.
|
||||
let _ = createRecordWithURL("http://localhost/article1", title: "Test 1", addedBy: "Stefan's iPhone")
|
||||
let createResult2 = createRecordWithURL("http://localhost/article2", title: "Test 2", addedBy: "Stefan's iPhone")
|
||||
let _ = createRecordWithURL("http://localhost/article3", title: "Test 3", addedBy: "Stefan's iPhone")
|
||||
if let record = createResult2.successValue {
|
||||
let _ = updateRecord(record, unread: false)
|
||||
}
|
||||
|
||||
// Get all unread records, make sure we only get the first and last
|
||||
let getUnreadResult = storage.getUnreadRecords()
|
||||
if let records = getUnreadResult.successValue {
|
||||
XCTAssertEqual(2, records.count)
|
||||
for record in records {
|
||||
XCTAssert(record.title == "Test 1" || record.title == "Test 3")
|
||||
XCTAssertEqual(record.unread, true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func testGetAllRecords() {
|
||||
let _ = createRecordWithURL("http://localhost/article1", title: "Test 1", addedBy: "Stefan's iPhone")
|
||||
let createResult2 = createRecordWithURL("http://localhost/article2", title: "Test 2", addedBy: "Stefan's iPhone")
|
||||
let _ = createRecordWithURL("http://localhost/article3", title: "Test 3", addedBy: "Stefan's iPhone")
|
||||
if let record = createResult2.successValue {
|
||||
let _ = updateRecord(record, unread: false)
|
||||
}
|
||||
|
||||
let getAllResult = storage.getAllRecords()
|
||||
if let records = getAllResult.successValue {
|
||||
XCTAssertEqual(3, records.count)
|
||||
}
|
||||
}
|
||||
|
||||
func testGetNewRecords() {
|
||||
let _ = createRecordWithURL("http://localhost/article1", title: "Test 1", addedBy: "Stefan's iPhone")
|
||||
let _ = createRecordWithURL("http://localhost/article2", title: "Test 2", addedBy: "Stefan's iPhone")
|
||||
let _ = createRecordWithURL("http://localhost/article3", title: "Test 3", addedBy: "Stefan's iPhone")
|
||||
let getAllResult = getAllRecords()
|
||||
if let records = getAllResult.successValue {
|
||||
XCTAssertEqual(3, records.count)
|
||||
}
|
||||
// TODO When we are able to create records coming from the server, we can extend this test to see if we query correctly
|
||||
}
|
||||
|
||||
func testDeleteRecord() {
|
||||
let result1 = storage.createRecordWithURL("http://www.anandtech.com/show/9117/analyzing-intel-core-m-performance", title: "Analyzing Intel Core M Performance: How 5Y10 can beat 5Y71 & the OEMs' Dilemma", addedBy: "Stefan's iPhone")
|
||||
switch result1 {
|
||||
case .failure(let error):
|
||||
XCTFail(error.description)
|
||||
case .success(_):
|
||||
break
|
||||
}
|
||||
|
||||
let result2 = storage.deleteRecord(result1.successValue!)
|
||||
switch result2 {
|
||||
case .failure(let error):
|
||||
XCTFail(error.description)
|
||||
case .success:
|
||||
break
|
||||
}
|
||||
|
||||
let result3 = storage.getRecordWithURL("http://www.anandtech.com/show/9117/analyzing-intel-core-m-performance")
|
||||
switch result3 {
|
||||
case .failure(let error):
|
||||
XCTFail(error.description)
|
||||
case .success(let result):
|
||||
XCTAssert(result.value == nil)
|
||||
}
|
||||
}
|
||||
|
||||
func testDeleteAllRecords() {
|
||||
let _ = createRecordWithURL("http://localhost/article1", title: "Test 1", addedBy: "Stefan's iPhone")
|
||||
let _ = createRecordWithURL("http://localhost/article2", title: "Test 2", addedBy: "Stefan's iPhone")
|
||||
let _ = createRecordWithURL("http://localhost/article3", title: "Test 3", addedBy: "Stefan's iPhone")
|
||||
|
||||
let getAllResult1 = storage.getAllRecords()
|
||||
if let records = getAllResult1.successValue {
|
||||
XCTAssertEqual(3, records.count)
|
||||
}
|
||||
|
||||
let _ = deleteAllRecords()
|
||||
|
||||
let getAllResult2 = getAllRecords()
|
||||
if let records = getAllResult2.successValue {
|
||||
XCTAssertEqual(0, records.count)
|
||||
}
|
||||
}
|
||||
|
||||
func testUpdateRecord() {
|
||||
let result = createRecordWithURL("http://www.anandtech.com/show/9117/analyzing-intel-core-m-performance", title: "Analyzing Intel Core M Performance: How 5Y10 can beat 5Y71 & the OEMs' Dilemma", addedBy: "Stefan's iPhone")
|
||||
if let record = result.successValue {
|
||||
XCTAssertEqual(record.url, "http://www.anandtech.com/show/9117/analyzing-intel-core-m-performance")
|
||||
XCTAssertEqual(record.title, "Analyzing Intel Core M Performance: How 5Y10 can beat 5Y71 & the OEMs' Dilemma")
|
||||
XCTAssertEqual(record.addedBy, "Stefan's iPhone")
|
||||
XCTAssertEqual(record.unread, true)
|
||||
XCTAssertEqual(record.archived, false)
|
||||
XCTAssertEqual(record.favorite, false)
|
||||
|
||||
let result = updateRecord(record, unread: false)
|
||||
if let record = result.successValue! {
|
||||
XCTAssertEqual(record.url, "http://www.anandtech.com/show/9117/analyzing-intel-core-m-performance")
|
||||
XCTAssertEqual(record.title, "Analyzing Intel Core M Performance: How 5Y10 can beat 5Y71 & the OEMs' Dilemma")
|
||||
XCTAssertEqual(record.addedBy, "Stefan's iPhone")
|
||||
XCTAssertEqual(record.unread, false)
|
||||
XCTAssertEqual(record.archived, false)
|
||||
XCTAssertEqual(record.favorite, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Helpers that croak if the storage call was not successful
|
||||
|
||||
func createRecordWithURL(_ url: String, title: String, addedBy: String) -> Maybe<ReadingListClientRecord> {
|
||||
let result = storage.createRecordWithURL(url, title: title, addedBy: addedBy)
|
||||
XCTAssertTrue(result.isSuccess)
|
||||
return result
|
||||
}
|
||||
|
||||
func deleteAllRecords() -> Maybe<Void> {
|
||||
let result = storage.deleteAllRecords()
|
||||
XCTAssertTrue(result.isSuccess)
|
||||
return result
|
||||
}
|
||||
|
||||
func getAllRecords() -> Maybe<[ReadingListClientRecord]> {
|
||||
let result = storage.getAllRecords()
|
||||
XCTAssertTrue(result.isSuccess)
|
||||
return result
|
||||
}
|
||||
|
||||
func updateRecord(_ record: ReadingListClientRecord, unread: Bool) -> Maybe<ReadingListClientRecord?> {
|
||||
let result = storage.updateRecord(record, unread: unread)
|
||||
XCTAssertTrue(result.isSuccess)
|
||||
return result
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue