-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathQueryResultTest.m
More file actions
208 lines (163 loc) · 6.54 KB
/
QueryResultTest.m
File metadata and controls
208 lines (163 loc) · 6.54 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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
//
// QueryResultTest.m
// ContentstackTest
//
// Created by Test Suite on 05/11/25.
// Copyright © 2025 Contentstack. All rights reserved.
//
#import <XCTest/XCTest.h>
#import <Contentstack/Contentstack.h>
#import "CSIOInternalHeaders.h"
#import "ContentstackDefinitions.h"
static NSInteger kRequestTimeOutInSeconds = 30;
@interface QueryResultTest : XCTestCase {
Stack *csStack;
Config *config;
}
@property (nonatomic, strong) Stack *stack;
@end
@implementation QueryResultTest
- (void)setUp {
[super setUp];
NSString *path = [[NSBundle bundleForClass:self.class] pathForResource:@"config" ofType:@"json"];
NSData *data = [NSData dataWithContentsOfFile:path];
NSDictionary *configdict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
config = [[Config alloc] init];
config.host = configdict[@"host"];
self.stack = [Contentstack stackWithAPIKey:configdict[@"api_key"]
accessToken:configdict[@"delivery_token"]
environmentName:configdict[@"environment"]
config:config];
}
- (void)waitForRequest {
[self waitForExpectationsWithTimeout:kRequestTimeOutInSeconds handler:^(NSError *error) {
if (error) {
XCTFail(@"Could not perform operation (Timed out) ~ ERR: %@", error.userInfo);
}
}];
}
- (void)tearDown {
self.stack = nil;
[super tearDown];
}
#pragma mark - QueryResult Tests
- (void)testQueryResultGetResult {
XCTestExpectation *expectation = [self expectationWithDescription:@"QueryResult Get Result"];
ContentType *contentType = [self.stack contentTypeWithName:@"source"];
Query *query = [contentType query];
[query find:^(ResponseType type, QueryResult * _Nullable result, NSError * _Nullable error) {
if (error) {
XCTFail(@"Error: %@", error);
} else {
XCTAssertNotNil(result, @"Result should not be nil");
// Test getResult method
NSArray *entries = [result getResult];
XCTAssertNotNil(entries, @"Entries should not be nil");
XCTAssertTrue([entries isKindOfClass:[NSArray class]], @"Should be an array");
}
[expectation fulfill];
}];
[self waitForRequest];
}
- (void)testQueryResultTotalCount {
XCTestExpectation *expectation = [self expectationWithDescription:@"QueryResult Total Count"];
ContentType *contentType = [self.stack contentTypeWithName:@"source"];
Query *query = [contentType query];
[query includeCount];
[query find:^(ResponseType type, QueryResult * _Nullable result, NSError * _Nullable error) {
if (error) {
XCTFail(@"Error: %@", error);
} else {
XCTAssertNotNil(result);
// Test totalCount method
NSInteger count = [result totalCount];
XCTAssertGreaterThanOrEqual(count, 0, @"Count should be non-negative");
}
[expectation fulfill];
}];
[self waitForRequest];
}
- (void)testQueryResultSchema {
XCTestExpectation *expectation = [self expectationWithDescription:@"QueryResult Schema"];
ContentType *contentType = [self.stack contentTypeWithName:@"source"];
Query *query = [contentType query];
[query find:^(ResponseType type, QueryResult * _Nullable result, NSError * _Nullable error) {
if (error) {
XCTFail(@"Error: %@", error);
} else {
XCTAssertNotNil(result);
// Test schema method (may be nil if not included)
NSArray *schema = [result schema];
if (schema) {
XCTAssertTrue([schema isKindOfClass:[NSArray class]], @"Schema should be an array");
}
}
[expectation fulfill];
}];
[self waitForRequest];
}
- (void)testQueryResultContentType {
XCTestExpectation *expectation = [self expectationWithDescription:@"QueryResult Content Type"];
ContentType *contentType = [self.stack contentTypeWithName:@"source"];
Query *query = [contentType query];
[query includeContentType];
[query find:^(ResponseType type, QueryResult * _Nullable result, NSError * _Nullable error) {
if (error) {
XCTFail(@"Error: %@", error);
} else {
XCTAssertNotNil(result);
// Test content_type method
NSDictionary *ct = [result content_type];
if (ct) {
XCTAssertTrue([ct isKindOfClass:[NSDictionary class]], @"Content type should be a dictionary");
}
}
[expectation fulfill];
}];
[self waitForRequest];
}
- (void)testQueryResultWithAllIncludes {
XCTestExpectation *expectation = [self expectationWithDescription:@"QueryResult with All Includes"];
ContentType *contentType = [self.stack contentTypeWithName:@"source"];
Query *query = [contentType query];
[query includeContentType];
[query includeCount];
[query find:^(ResponseType type, QueryResult * _Nullable result, NSError * _Nullable error) {
if (error) {
XCTFail(@"Error: %@", error);
} else {
XCTAssertNotNil(result);
// Test all methods
NSArray *entries = [result getResult];
XCTAssertNotNil(entries);
NSInteger count = [result totalCount];
XCTAssertGreaterThanOrEqual(count, 0);
NSArray *schema = [result schema];
// Schema may be nil if not returned
NSDictionary *ct = [result content_type];
// Content type may be nil if not returned
}
[expectation fulfill];
}];
[self waitForRequest];
}
- (void)testQueryResultWithLimit {
XCTestExpectation *expectation = [self expectationWithDescription:@"QueryResult with Limit"];
ContentType *contentType = [self.stack contentTypeWithName:@"source"];
Query *query = [contentType query];
[query limitObjects:@3];
[query includeCount];
[query find:^(ResponseType type, QueryResult * _Nullable result, NSError * _Nullable error) {
if (error) {
XCTFail(@"Error: %@", error);
} else {
XCTAssertNotNil(result);
NSArray *entries = [result getResult];
XCTAssertNotNil(entries);
XCTAssertLessThanOrEqual(entries.count, 3, @"Should respect limit");
}
[expectation fulfill];
}];
[self waitForRequest];
}
@end