Skip to content

Commit c7961f9

Browse files
authored
Merge pull request #152 from woocommerce/feature/97-order-storage
Adds Order storage + tests
2 parents 8ed3a61 + 705f431 commit c7961f9

20 files changed

+684
-8
lines changed

Networking/Networking/Model/Address.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,22 @@ public struct Address: Decodable {
1515
public let country: String
1616
public let phone: String?
1717
public let email: String?
18+
19+
/// Designated Initializer.
20+
///
21+
public init(firstName: String, lastName: String, company: String?, address1: String, address2: String?, city: String, state: String, postcode: String, country: String, phone: String?, email: String?) {
22+
self.firstName = firstName
23+
self.lastName = lastName
24+
self.company = company
25+
self.address1 = address1
26+
self.address2 = address2
27+
self.city = city
28+
self.state = state
29+
self.postcode = postcode
30+
self.country = country
31+
self.phone = phone
32+
self.email = email
33+
}
1834
}
1935

2036

Networking/Networking/Model/Order.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public struct Order: Decodable {
3232

3333
/// Order struct initializer.
3434
///
35-
init(orderID: Int, parentID: Int, customerID: Int, number: String, status: OrderStatus, currency: String, customerNote: String?, dateCreated: Date, dateModified: Date, datePaid: Date?, discountTotal: String, discountTax: String, shippingTotal: String, shippingTax: String, total: String, totalTax: String, paymentMethodTitle: String, items: [OrderItem], billingAddress: Address, shippingAddress: Address, coupons: [OrderCouponLine]) {
35+
public init(orderID: Int, parentID: Int, customerID: Int, number: String, status: OrderStatus, currency: String, customerNote: String?, dateCreated: Date, dateModified: Date, datePaid: Date?, discountTotal: String, discountTax: String, shippingTotal: String, shippingTax: String, total: String, totalTax: String, paymentMethodTitle: String, items: [OrderItem], billingAddress: Address, shippingAddress: Address, coupons: [OrderCouponLine]) {
3636

3737
self.orderID = orderID
3838
self.parentID = parentID

Networking/Networking/Model/OrderCouponLine.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@ public struct OrderCouponLine: Decodable {
88
public let code: String
99
public let discount: String
1010
public let discountTax: String
11+
12+
/// OrderCouponLine struct initializer.
13+
///
14+
public init(couponID: Int, code: String, discount: String, discountTax: String) {
15+
self.couponID = couponID
16+
self.code = code
17+
self.discount = discount
18+
self.discountTax = discountTax
19+
}
1120
}
1221

1322

Networking/Networking/Model/OrderItem.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,22 @@ public struct OrderItem: Decodable {
1515
public let total: String
1616
public let totalTax: String
1717
public let variationID: Int
18+
19+
/// OrderItem struct initializer.
20+
///
21+
public init(itemID: Int, name: String, productID: Int, quantity: Int, sku: String, subtotal: String, subtotalTax: String, taxClass: String, total: String, totalTax: String, variationID: Int) {
22+
self.itemID = itemID
23+
self.name = name
24+
self.productID = productID
25+
self.quantity = quantity
26+
self.sku = sku
27+
self.subtotal = subtotal
28+
self.subtotalTax = subtotalTax
29+
self.taxClass = taxClass
30+
self.total = total
31+
self.totalTax = totalTax
32+
self.variationID = variationID
33+
}
1834
}
1935

2036

Networking/Networking/Model/OrderNote.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public struct OrderNote: Decodable {
99
public let note: String
1010
public let isCustomerNote: Bool
1111

12-
/// Order struct initializer.
12+
/// OrderNote struct initializer.
1313
///
1414
init(noteId: Int, dateCreated: Date, note: String, isCustomerNote: Bool) {
1515
self.noteId = noteId

Storage/Storage.xcodeproj/project.pbxproj

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@
99
/* Begin PBXBuildFile section */
1010
68BC97FB41770051C287D1A8 /* Pods_StorageTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47556EE256120BEE49FF5FD3 /* Pods_StorageTests.framework */; };
1111
7028A41485A08AC748206184 /* Pods_Storage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DF3D3B298350F68191CD1DAD /* Pods_Storage.framework */; };
12+
7426A04720F68F27002A4E07 /* Order+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7426A04320F68F27002A4E07 /* Order+CoreDataClass.swift */; };
13+
7426A04820F68F27002A4E07 /* Order+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7426A04420F68F27002A4E07 /* Order+CoreDataProperties.swift */; };
14+
7426A05020F69D00002A4E07 /* OrderCoupon+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7426A04E20F69D00002A4E07 /* OrderCoupon+CoreDataClass.swift */; };
15+
7426A05120F69D00002A4E07 /* OrderCoupon+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7426A04F20F69D00002A4E07 /* OrderCoupon+CoreDataProperties.swift */; };
16+
7426A05420F69DA4002A4E07 /* OrderItem+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7426A05220F69DA4002A4E07 /* OrderItem+CoreDataClass.swift */; };
17+
7426A05520F69DA4002A4E07 /* OrderItem+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7426A05320F69DA4002A4E07 /* OrderItem+CoreDataProperties.swift */; };
1218
B505255420EE6914008090F5 /* StorageType+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B505255320EE6914008090F5 /* StorageType+Extensions.swift */; };
1319
B505F6DA20BEEA3200BB1B69 /* Account+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = B505F6D820BEEA3100BB1B69 /* Account+CoreDataProperties.swift */; };
1420
B505F6DB20BEEA3200BB1B69 /* Account+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = B505F6D920BEEA3200BB1B69 /* Account+CoreDataClass.swift */; };
@@ -46,6 +52,12 @@
4652
/* Begin PBXFileReference section */
4753
47556EE256120BEE49FF5FD3 /* Pods_StorageTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_StorageTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
4854
5D12CAE2D0EA6AB66F162FF9 /* Pods-StorageTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-StorageTests.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-StorageTests/Pods-StorageTests.debug.xcconfig"; sourceTree = "<group>"; };
55+
7426A04320F68F27002A4E07 /* Order+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Order+CoreDataClass.swift"; sourceTree = "<group>"; };
56+
7426A04420F68F27002A4E07 /* Order+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Order+CoreDataProperties.swift"; sourceTree = "<group>"; };
57+
7426A04E20F69D00002A4E07 /* OrderCoupon+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OrderCoupon+CoreDataClass.swift"; sourceTree = "<group>"; };
58+
7426A04F20F69D00002A4E07 /* OrderCoupon+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OrderCoupon+CoreDataProperties.swift"; sourceTree = "<group>"; };
59+
7426A05220F69DA4002A4E07 /* OrderItem+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OrderItem+CoreDataClass.swift"; sourceTree = "<group>"; };
60+
7426A05320F69DA4002A4E07 /* OrderItem+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OrderItem+CoreDataProperties.swift"; sourceTree = "<group>"; };
4961
7C81935EDD982072BBDCC837 /* Pods-Storage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Storage.release.xcconfig"; path = "../Pods/Target Support Files/Pods-Storage/Pods-Storage.release.xcconfig"; sourceTree = "<group>"; };
5062
A3821B262583F14863740A37 /* Pods-Storage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Storage.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-Storage/Pods-Storage.debug.xcconfig"; sourceTree = "<group>"; };
5163
B505255320EE6914008090F5 /* StorageType+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "StorageType+Extensions.swift"; sourceTree = "<group>"; };
@@ -226,6 +238,12 @@
226238
B505F6D820BEEA3100BB1B69 /* Account+CoreDataProperties.swift */,
227239
B5B914C320EFF03500F2F832 /* Site+CoreDataClass.swift */,
228240
B5B914C420EFF03500F2F832 /* Site+CoreDataProperties.swift */,
241+
7426A04320F68F27002A4E07 /* Order+CoreDataClass.swift */,
242+
7426A04420F68F27002A4E07 /* Order+CoreDataProperties.swift */,
243+
7426A04E20F69D00002A4E07 /* OrderCoupon+CoreDataClass.swift */,
244+
7426A04F20F69D00002A4E07 /* OrderCoupon+CoreDataProperties.swift */,
245+
7426A05220F69DA4002A4E07 /* OrderItem+CoreDataClass.swift */,
246+
7426A05320F69DA4002A4E07 /* OrderItem+CoreDataProperties.swift */,
229247
);
230248
path = Model;
231249
sourceTree = "<group>";
@@ -411,16 +429,22 @@
411429
files = (
412430
B5B914C520EFF03500F2F832 /* Site+CoreDataClass.swift in Sources */,
413431
B54CA5BB20A4BD2800F38CD1 /* NSManagedObject+Object.swift in Sources */,
432+
7426A05120F69D00002A4E07 /* OrderCoupon+CoreDataProperties.swift in Sources */,
414433
B5B914C620EFF03500F2F832 /* Site+CoreDataProperties.swift in Sources */,
434+
7426A04820F68F27002A4E07 /* Order+CoreDataProperties.swift in Sources */,
415435
B505F6DB20BEEA3200BB1B69 /* Account+CoreDataClass.swift in Sources */,
436+
7426A05520F69DA4002A4E07 /* OrderItem+CoreDataProperties.swift in Sources */,
437+
7426A04720F68F27002A4E07 /* Order+CoreDataClass.swift in Sources */,
416438
B54CA5BD20A4BD3B00F38CD1 /* NSManagedObjectContext+Storage.swift in Sources */,
417439
B59E11DA20A9D00C004121A4 /* WooCommerce.xcdatamodeld in Sources */,
418440
B52B0F7920AA287C00477698 /* StorageManagerType.swift in Sources */,
441+
7426A05420F69DA4002A4E07 /* OrderItem+CoreDataClass.swift in Sources */,
419442
B505F6E020BEEA8100BB1B69 /* StorageType.swift in Sources */,
420443
B54CA5C920A4C17800F38CD1 /* NSObject+Storage.swift in Sources */,
421444
B505F6DA20BEEA3200BB1B69 /* Account+CoreDataProperties.swift in Sources */,
422445
B505255420EE6914008090F5 /* StorageType+Extensions.swift in Sources */,
423446
B52B0F7B20AA28A800477698 /* Object.swift in Sources */,
447+
7426A05020F69D00002A4E07 /* OrderCoupon+CoreDataClass.swift in Sources */,
424448
B505F6DE20BEEA4F00BB1B69 /* CoreDataManager.swift in Sources */,
425449
);
426450
runOnlyForDeploymentPostprocessing = 0;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import Foundation
2+
import CoreData
3+
4+
5+
@objc(Order)
6+
public class Order: NSManagedObject {
7+
8+
}
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import Foundation
2+
import CoreData
3+
4+
5+
extension Order {
6+
7+
@nonobjc public class func fetchRequest() -> NSFetchRequest<Order> {
8+
return NSFetchRequest<Order>(entityName: "Order")
9+
}
10+
11+
@NSManaged public var currency: String?
12+
@NSManaged public var customerID: Int64
13+
@NSManaged public var customerNote: String?
14+
@NSManaged public var dateCreated: Date?
15+
@NSManaged public var dateModified: Date?
16+
@NSManaged public var datePaid: Date?
17+
@NSManaged public var discountTax: String?
18+
@NSManaged public var discountTotal: String?
19+
@NSManaged public var number: String?
20+
@NSManaged public var orderID: Int64
21+
@NSManaged public var parentID: Int64
22+
@NSManaged public var paymentMethodTitle: String?
23+
@NSManaged public var shippingTax: String?
24+
@NSManaged public var shippingTotal: String?
25+
@NSManaged public var status: String
26+
@NSManaged public var total: String?
27+
@NSManaged public var totalTax: String?
28+
@NSManaged public var billingFirstName: String?
29+
@NSManaged public var billingLastName: String?
30+
@NSManaged public var billingCountry: String?
31+
@NSManaged public var billingPostcode: String?
32+
@NSManaged public var billingState: String?
33+
@NSManaged public var billingCity: String?
34+
@NSManaged public var billingAddress2: String?
35+
@NSManaged public var billingAddress1: String?
36+
@NSManaged public var billingCompany: String?
37+
@NSManaged public var billingPhone: String?
38+
@NSManaged public var billingEmail: String?
39+
@NSManaged public var shippingFirstName: String?
40+
@NSManaged public var shippingLastName: String?
41+
@NSManaged public var shippingCompany: String?
42+
@NSManaged public var shippingAddress1: String?
43+
@NSManaged public var shippingAddress2: String?
44+
@NSManaged public var shippingCity: String?
45+
@NSManaged public var shippingPostcode: String?
46+
@NSManaged public var shippingCountry: String?
47+
@NSManaged public var shippingPhone: String?
48+
@NSManaged public var shippingEmail: String?
49+
@NSManaged public var shippingState: String?
50+
@NSManaged public var coupons: Set<OrderCoupon>?
51+
@NSManaged public var items: Set<OrderItem>?
52+
}
53+
54+
// MARK: Generated accessors for coupons
55+
extension Order {
56+
57+
@objc(addCouponsObject:)
58+
@NSManaged public func addToCoupons(_ value: OrderCoupon)
59+
60+
@objc(removeCouponsObject:)
61+
@NSManaged public func removeFromCoupons(_ value: OrderCoupon)
62+
63+
@objc(addCoupons:)
64+
@NSManaged public func addToCoupons(_ values: NSSet)
65+
66+
@objc(removeCoupons:)
67+
@NSManaged public func removeFromCoupons(_ values: NSSet)
68+
69+
}
70+
71+
// MARK: Generated accessors for items
72+
extension Order {
73+
74+
@objc(addItemsObject:)
75+
@NSManaged public func addToItems(_ value: OrderItem)
76+
77+
@objc(removeItemsObject:)
78+
@NSManaged public func removeFromItems(_ value: OrderItem)
79+
80+
@objc(addItems:)
81+
@NSManaged public func addToItems(_ values: NSSet)
82+
83+
@objc(removeItems:)
84+
@NSManaged public func removeFromItems(_ values: NSSet)
85+
86+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import Foundation
2+
import CoreData
3+
4+
5+
@objc(OrderCoupon)
6+
public class OrderCoupon: NSManagedObject {
7+
8+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import Foundation
2+
import CoreData
3+
4+
5+
extension OrderCoupon {
6+
7+
@nonobjc public class func fetchRequest() -> NSFetchRequest<OrderCoupon> {
8+
return NSFetchRequest<OrderCoupon>(entityName: "OrderCoupon")
9+
}
10+
11+
@NSManaged public var couponID: Int64
12+
@NSManaged public var code: String?
13+
@NSManaged public var discount: String?
14+
@NSManaged public var discountTax: String?
15+
@NSManaged public var order: Order
16+
}

0 commit comments

Comments
 (0)