@@ -1550,3 +1550,74 @@ - (void)testThatResponseDescriptorExactMethodMatchFavoredOverRKRequestMethodAny
1550
1550
}
1551
1551
1552
1552
@end
1553
+
1554
+ RKRequestDescriptor *RKRequestDescriptorFromArrayMatchingObjectAndRequestMethod (NSArray *requestDescriptors, id object, RKRequestMethod requestMethod);
1555
+
1556
+ @interface RKRequestDescriptorFromArrayMatchingObjectAndRequestMethodTest : RKTestCase
1557
+
1558
+ @property (nonatomic , strong ) RKRequestDescriptor *exactClassAndExactMethodDescriptor;
1559
+ @property (nonatomic , strong ) RKRequestDescriptor *exactClassAndBitwiseMethodDescriptor;
1560
+ @property (nonatomic , strong ) RKRequestDescriptor *superclassAndExactMethodDescriptor;
1561
+ @property (nonatomic , strong ) RKRequestDescriptor *superclassAndBitwiseMethodDescriptor;
1562
+ @property (nonatomic , strong ) RKRequestDescriptor *nonMatchingClassAndExactMethodDescriptor;
1563
+ @end
1564
+
1565
+ @implementation RKRequestDescriptorFromArrayMatchingObjectAndRequestMethodTest
1566
+
1567
+ - (void )setUp
1568
+ {
1569
+ RKObjectMapping *requestMapping = [RKObjectMapping requestMapping ];
1570
+
1571
+ // Exact
1572
+ _exactClassAndExactMethodDescriptor = [RKRequestDescriptor requestDescriptorWithMapping: requestMapping objectClass: [RKSubclassedTestModel class ] rootKeyPath: nil method: RKRequestMethodPOST];
1573
+ _exactClassAndBitwiseMethodDescriptor = [RKRequestDescriptor requestDescriptorWithMapping: requestMapping objectClass: [RKSubclassedTestModel class ] rootKeyPath: nil method: RKRequestMethodPOST | RKRequestMethodPUT];
1574
+
1575
+ // Superclass
1576
+ _superclassAndExactMethodDescriptor = [RKRequestDescriptor requestDescriptorWithMapping: requestMapping objectClass: [RKObjectMapperTestModel class ] rootKeyPath: @" superclass" method: RKRequestMethodPOST];
1577
+ _superclassAndBitwiseMethodDescriptor = [RKRequestDescriptor requestDescriptorWithMapping: requestMapping objectClass: [RKObjectMapperTestModel class ] rootKeyPath: @" superclass" method: RKRequestMethodPOST | RKRequestMethodPUT];
1578
+
1579
+ // Non-matching
1580
+ _nonMatchingClassAndExactMethodDescriptor = [RKRequestDescriptor requestDescriptorWithMapping: requestMapping objectClass: [RKTestUser class ] rootKeyPath: @" subclassed" method: RKRequestMethodPOST];
1581
+ }
1582
+
1583
+ - (void )testExactClassAndExactMethodMatchHasHighestPrecedence
1584
+ {
1585
+ RKSubclassedTestModel *object = [RKSubclassedTestModel new ];
1586
+ NSArray *descriptors = @[ _exactClassAndExactMethodDescriptor, _exactClassAndBitwiseMethodDescriptor, _superclassAndExactMethodDescriptor, _superclassAndBitwiseMethodDescriptor, _nonMatchingClassAndExactMethodDescriptor ];
1587
+ RKRequestDescriptor *requestDescriptor = RKRequestDescriptorFromArrayMatchingObjectAndRequestMethod (descriptors, object, RKRequestMethodPOST);
1588
+ expect (requestDescriptor).to .equal (_exactClassAndExactMethodDescriptor);
1589
+ }
1590
+
1591
+ - (void )testExactClassAndBitwiseMethodMatchHasSecondHighestPrecedence
1592
+ {
1593
+ RKSubclassedTestModel *object = [RKSubclassedTestModel new ];
1594
+ NSArray *descriptors = @[ _exactClassAndBitwiseMethodDescriptor, _superclassAndExactMethodDescriptor, _superclassAndBitwiseMethodDescriptor, _nonMatchingClassAndExactMethodDescriptor ];
1595
+ RKRequestDescriptor *requestDescriptor = RKRequestDescriptorFromArrayMatchingObjectAndRequestMethod (descriptors, object, RKRequestMethodPOST);
1596
+ expect (requestDescriptor).to .equal (_exactClassAndBitwiseMethodDescriptor);
1597
+ }
1598
+
1599
+ - (void )testSuperclassAndExactMethodMatchHasThirdHighestPrecedence
1600
+ {
1601
+ RKSubclassedTestModel *object = [RKSubclassedTestModel new ];
1602
+ NSArray *descriptors = @[ _superclassAndExactMethodDescriptor, _superclassAndBitwiseMethodDescriptor, _nonMatchingClassAndExactMethodDescriptor ];
1603
+ RKRequestDescriptor *requestDescriptor = RKRequestDescriptorFromArrayMatchingObjectAndRequestMethod (descriptors, object, RKRequestMethodPOST);
1604
+ expect (requestDescriptor).to .equal (_superclassAndExactMethodDescriptor);
1605
+ }
1606
+
1607
+ - (void )testSuperclassAndBitwiseMethodMatchHasThirdHighestPrecedence
1608
+ {
1609
+ RKSubclassedTestModel *object = [RKSubclassedTestModel new ];
1610
+ NSArray *descriptors = @[ _superclassAndBitwiseMethodDescriptor, _nonMatchingClassAndExactMethodDescriptor ];
1611
+ RKRequestDescriptor *requestDescriptor = RKRequestDescriptorFromArrayMatchingObjectAndRequestMethod (descriptors, object, RKRequestMethodPOST);
1612
+ expect (requestDescriptor).to .equal (_superclassAndBitwiseMethodDescriptor);
1613
+ }
1614
+
1615
+ - (void )testThatNonmatchingClassesReturnNil
1616
+ {
1617
+ RKSubclassedTestModel *object = [RKSubclassedTestModel new ];
1618
+ NSArray *descriptors = @[ _nonMatchingClassAndExactMethodDescriptor ];
1619
+ RKRequestDescriptor *requestDescriptor = RKRequestDescriptorFromArrayMatchingObjectAndRequestMethod (descriptors, object, RKRequestMethodPOST);
1620
+ expect (requestDescriptor).to .beNil ();
1621
+ }
1622
+
1623
+ @end
0 commit comments