KIF Tests/CompositionTests_ViewTestActor.m
//
// NewCompositionTests.m
// KIF
//
// Created by Alex Odawa on 1/27/15.
//
//
#import <KIF/KIF.h>
#import "UIApplication-KIFAdditions.h"
#import "UIAccessibilityElement-KIFAdditions.h"
@interface KIFUIViewTestActor (Composition)
- (void)tapViewIfNotSelected:(NSString *)label;
- (void)tapViewWithAccessibilityHint:(NSString *)hint;
@end
@implementation KIFUIViewTestActor (Composition)
- (void)tapViewIfNotSelected:(NSString *)label
{
UIAccessibilityElement *element = [viewTester usingLabel:label].element;
if ((element.accessibilityTraits & UIAccessibilityTraitSelected) == UIAccessibilityTraitNone) {
[[[viewTester usingLabel:label] usingPredicate:[NSPredicate predicateWithBlock:^BOOL(id _Nullable evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
return ([evaluatedObject accessibilityTraits] & UIAccessibilityTraitSelected) == UIAccessibilityTraitNone;
}]] tap];
}
}
- (void)tapViewWithAccessibilityHint:(NSString *)hint
{
[[viewTester usingPredicate:[NSPredicate predicateWithBlock:^BOOL(id _Nullable evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
return [[evaluatedObject accessibilityHint] containsString:hint];
}]] tap];
}
@end
@interface CompositionTests_ViewTestActor : KIFTestCase
@end
@implementation CompositionTests_ViewTestActor
- (void)beforeEach
{
[[viewTester usingLabel:@"Show/Hide"] tap];
}
- (void)afterEach
{
[[[viewTester usingLabel:@"Test Suite"] usingTraits:UIAccessibilityTraitButton] tap];
}
- (void)testTappingViewWithHint
{
[viewTester tapViewWithAccessibilityHint:@"A button for A"];
[[[viewTester usingLabel:@"A"] usingTraits:UIAccessibilityTraitSelected] waitForView];
}
- (void)testTappingOnlyIfNotSelected
{
[viewTester tapViewIfNotSelected:@"A"];
[[[viewTester usingLabel:@"A"] usingTraits:UIAccessibilityTraitSelected] waitForView];
// This should not deselect the element.
[viewTester tapViewIfNotSelected:@"A"];
[[[viewTester usingLabel:@"A"] usingTraits:UIAccessibilityTraitSelected] waitForView];
}
@end