-
Notifications
You must be signed in to change notification settings - Fork 87
Expand file tree
/
Copy pathQKQuerySetTests.m
More file actions
141 lines (107 loc) · 5.57 KB
/
Copy pathQKQuerySetTests.m
File metadata and controls
141 lines (107 loc) · 5.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
//
// KFObjectManagerTests
// KFDataTests
//
// Created by Kyle Fuller on 14/06/2013.
//
//
#import <XCTest/XCTest.h>
#import <QueryKit/QueryKit.h>
@interface QKQuerySetTests : XCTestCase
@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, strong) NSEntityDescription *entityDescription;
@property (nonatomic, strong) QKQuerySet *queryset;
@end
@implementation QKQuerySetTests
- (void)setUp {
self.managedObjectContext = [[NSManagedObjectContext alloc] init];
self.entityDescription = [[NSEntityDescription alloc] init];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == 'Kyle'"];
NSArray *sortDescriptors = @[
[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES],
[NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO]
];
self.queryset = [[QKQuerySet alloc] initWithManagedObjectContext:self.managedObjectContext entityDescription:self.entityDescription predicate:predicate sortDescriptors:sortDescriptors range:NSMakeRange(1, 3)];
}
- (void)testInitializationWithContextAndEntityDescription {
QKQuerySet *queryset = [[QKQuerySet alloc] initWithManagedObjectContext:self.managedObjectContext entityDescription:self.entityDescription];
XCTAssertEqualObjects(queryset.managedObjectContext, self.managedObjectContext);
XCTAssertEqualObjects(queryset.entityDescription, self.entityDescription);
XCTAssertNil(queryset.predicate);
XCTAssertEqualObjects(queryset.sortDescriptors, @[]);
}
- (void)testInitializationWithPredicateAndSortDescriptors {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == 'Kyle'"];
NSArray *sortDescriptors = @[
[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES],
[NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO]
];
XCTAssertEqualObjects(self.queryset.managedObjectContext, self.managedObjectContext);
XCTAssertEqualObjects(self.queryset.entityDescription, self.entityDescription);
XCTAssertEqualObjects(self.queryset.predicate, predicate);
XCTAssertEqualObjects(self.queryset.sortDescriptors, sortDescriptors);
}
- (void)testCreationFromFetchRequest {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == 'Kyle'"];
NSArray *sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:self.entityDescription];
[fetchRequest setPredicate:predicate];
[fetchRequest setSortDescriptors:sortDescriptors];
QKQuerySet *queryset = [[QKQuerySet alloc] initWithManagedObjectContext:self.managedObjectContext fetchRequest:fetchRequest];
XCTAssertEqualObjects(queryset.managedObjectContext, self.managedObjectContext);
XCTAssertEqualObjects(queryset.entityDescription, self.entityDescription);
XCTAssertEqualObjects(queryset.predicate, predicate);
XCTAssertEqualObjects(queryset.sortDescriptors, sortDescriptors);
}
- (void)testIsEqual {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == 'Kyle'"];
NSArray *sortDescriptors = @[
[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES],
[NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO]
];
QKQuerySet *queryset = [[QKQuerySet alloc] initWithManagedObjectContext:self.managedObjectContext entityDescription:self.entityDescription predicate:predicate sortDescriptors:sortDescriptors range:NSMakeRange(1, 3)];
XCTAssertEqualObjects(self.queryset, queryset);
XCTAssertEqual([self.queryset hash], [queryset hash]);
}
- (void)testCopying {
QKQuerySet *queryset = [self.queryset copy];
XCTAssertEqualObjects(self.queryset, queryset);
}
- (void)testFilterAddsPredicate {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age == 28"];
QKQuerySet *filteredQuerySet = [self.queryset filter:predicate];
XCTAssertEqualObjects(filteredQuerySet.predicate, [NSPredicate predicateWithFormat:@"name == 'Kyle' AND age == 28"]);
}
- (void)testExcludeAddsPredicate {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age == 28"];
QKQuerySet *queryset = [self.queryset exclude:predicate];
XCTAssertEqualObjects(queryset.predicate, [NSPredicate predicateWithFormat:@"name == 'Kyle' AND (NOT age == 28)"]);
}
- (void)testOrderBy {
NSArray *sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]];
QKQuerySet *queryset = [self.queryset orderBy:sortDescriptors];
XCTAssertEqualObjects(queryset.sortDescriptors, sortDescriptors);
}
- (void)testReverse {
QKQuerySet *reversedQueryset = [self.queryset reverse];
NSArray *reversedSortDescriptors = @[
[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:NO],
[NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES]
];
XCTAssertEqualObjects(reversedQueryset.sortDescriptors, reversedSortDescriptors);
}
- (void)testFetchRequest {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == 'Kyle'"];
NSArray *sortDescriptors = @[
[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES],
[NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO]
];
NSFetchRequest *fetchRequest = [self.queryset fetchRequest];
XCTAssertEqualObjects(fetchRequest.entityName, self.entityDescription.name);
XCTAssertEqualObjects(fetchRequest.predicate, predicate);
XCTAssertEqualObjects(fetchRequest.sortDescriptors, sortDescriptors);
XCTAssertEqual(fetchRequest.fetchOffset, 1);
XCTAssertEqual(fetchRequest.fetchLimit, 3);
}
@end