furter 0.0.3.2 → 0.0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +9 -9
- data/.gitignore +4 -0
- data/Changelog +4 -0
- data/app/FurterApp/FurterApp/en.lproj/MainStoryboard_iPad.storyboard +58 -57
- data/app/FurterApp/FurterApp/en.lproj/MainStoryboard_iPhone.storyboard +23 -36
- data/features/support/hooks.rb +1 -1
- data/lib/furter.rb +6 -0
- data/lib/furter/accessors/alert_button.rb +1 -1
- data/lib/furter/accessors/button.rb +1 -1
- data/lib/furter/accessors/map_pin.rb +1 -1
- data/lib/furter/accessors/slider.rb +2 -2
- data/lib/furter/accessors/switch.rb +2 -2
- data/lib/furter/accessors/table.rb +1 -1
- data/lib/furter/accessors/table_item.rb +1 -1
- data/lib/furter/accessors/text.rb +3 -3
- data/lib/furter/accessors/view.rb +8 -5
- data/lib/furter/version.rb +1 -1
- data/spec/lib/furter/accessors/button_spec.rb +4 -4
- data/spec/lib/furter/accessors/label_spec.rb +2 -2
- data/spec/lib/furter/accessors/slider_spec.rb +2 -2
- data/spec/lib/furter/accessors/switch_spec.rb +4 -4
- data/spec/lib/furter/accessors/table_spec.rb +2 -2
- data/spec/lib/furter/accessors/text_spec.rb +3 -3
- data/spec/lib/furter/accessors/view_spec.rb +11 -5
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
!binary "U0hBMQ==":
|
|
3
3
|
metadata.gz: !binary |-
|
|
4
|
-
|
|
4
|
+
MmEyYjkzYjFiZDM2N2ZmZGE1NzI0MGM4NDlhMzc4MGEwYTRiOGMyOQ==
|
|
5
5
|
data.tar.gz: !binary |-
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
MGNlNGMwNzA2NTQyZWVkYzE4NjQwNDk5NGY0ZDM0ODVlYjRlMWM4ZA==
|
|
7
|
+
SHA512:
|
|
8
8
|
metadata.gz: !binary |-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
ZWMyMjIwMzk3M2M5NWM2YTQ1MGZjYTc0NDUyN2RlZWUwZjk2NjQyMDM3MzJi
|
|
10
|
+
MDlhZGQxNDRjYzc2Zjc5YmFiMGUzYTY4OGJmYzk2NGE5MDI0MTBkZWZjYzk0
|
|
11
|
+
ZWFiMjg3YWM1ZTU5ZTkxYWQ5MGQxZDExNGMxYjliMjBjOTc4MWQ=
|
|
12
12
|
data.tar.gz: !binary |-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
NTUwZjU1ZGI5OGMzZjU3NzM3YjI2NzVhNzdiZmQ4NGU1M2FmODg2MGE3ZTQ1
|
|
14
|
+
ZGMyOWVmMGQ0Nzk4NDE3OTk2ODY3ODI4OGRhMWFkY2JiMTliMTIxNzVmYzFj
|
|
15
|
+
NGM2MDhjODhjNTIzZWE3ZjAxNmVmMGE5NmIxYWQ0ZjExM2VjN2Y=
|
data/.gitignore
CHANGED
data/Changelog
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
-
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="
|
|
2
|
+
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="5053" systemVersion="13C64" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" useAutolayout="YES" initialViewController="5">
|
|
3
3
|
<dependencies>
|
|
4
|
-
<
|
|
4
|
+
<deployment defaultVersion="1552" identifier="iOS"/>
|
|
5
|
+
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
|
|
5
6
|
</dependencies>
|
|
6
7
|
<scenes>
|
|
7
8
|
<!--Navigation Controller-->
|
|
@@ -22,12 +23,17 @@
|
|
|
22
23
|
<!--Detail View Controller - Detail-->
|
|
23
24
|
<scene sceneID="16">
|
|
24
25
|
<objects>
|
|
25
|
-
<viewController
|
|
26
|
+
<viewController title="Detail" id="4" customClass="DetailViewController" sceneMemberID="viewController">
|
|
27
|
+
<layoutGuides>
|
|
28
|
+
<viewControllerLayoutGuide type="top" id="oPg-wo-YCs"/>
|
|
29
|
+
<viewControllerLayoutGuide type="bottom" id="XIX-eX-Khi"/>
|
|
30
|
+
</layoutGuides>
|
|
26
31
|
<view key="view" contentMode="scaleToFill" id="26">
|
|
27
32
|
<rect key="frame" x="0.0" y="64" width="703" height="704"/>
|
|
28
33
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
29
34
|
<subviews>
|
|
30
35
|
<label clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" text="Detail view content goes here" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="27">
|
|
36
|
+
<rect key="frame" x="20" y="344" width="663" height="17"/>
|
|
31
37
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
32
38
|
<accessibility key="accessibilityConfiguration" label="labelByAccessibilityLabel"/>
|
|
33
39
|
<fontDescription key="fontDescription" type="system" size="system"/>
|
|
@@ -35,6 +41,7 @@
|
|
|
35
41
|
<nil key="highlightedColor"/>
|
|
36
42
|
</label>
|
|
37
43
|
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="First Field" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="mEd-bW-xG3">
|
|
44
|
+
<rect key="frame" x="163" y="19" width="201" height="30"/>
|
|
38
45
|
<accessibility key="accessibilityConfiguration" hint="First Field">
|
|
39
46
|
<accessibilityTraits key="traits" none="YES"/>
|
|
40
47
|
</accessibility>
|
|
@@ -46,6 +53,7 @@
|
|
|
46
53
|
<textInputTraits key="textInputTraits"/>
|
|
47
54
|
</textField>
|
|
48
55
|
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="HNa-e4-2od">
|
|
56
|
+
<rect key="frame" x="163" y="57" width="201" height="30"/>
|
|
49
57
|
<accessibility key="accessibilityConfiguration" hint="" label="textByLabel">
|
|
50
58
|
<accessibilityTraits key="traits" none="YES"/>
|
|
51
59
|
</accessibility>
|
|
@@ -53,75 +61,63 @@
|
|
|
53
61
|
<textInputTraits key="textInputTraits"/>
|
|
54
62
|
</textField>
|
|
55
63
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Placeholder" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="79f-eU-bDt">
|
|
64
|
+
<rect key="frame" x="20" y="23" width="91" height="20"/>
|
|
56
65
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
|
57
66
|
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
|
58
67
|
<nil key="highlightedColor"/>
|
|
59
68
|
</label>
|
|
60
69
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nbu-fr-Znd">
|
|
70
|
+
<rect key="frame" x="20" y="60" width="42" height="21"/>
|
|
61
71
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
|
62
72
|
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
|
63
73
|
<nil key="highlightedColor"/>
|
|
64
74
|
</label>
|
|
65
75
|
<switch opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Nyi-ck-8hR">
|
|
76
|
+
<rect key="frame" x="427" y="60" width="51" height="31"/>
|
|
66
77
|
<accessibility key="accessibilityConfiguration" label="switchToggle"/>
|
|
67
78
|
</switch>
|
|
68
79
|
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="MgB-Y1-P3J">
|
|
80
|
+
<rect key="frame" x="163" y="120" width="155" height="30"/>
|
|
69
81
|
<constraints>
|
|
70
82
|
<constraint firstAttribute="width" constant="155" id="1Nz-03-QXb"/>
|
|
71
83
|
</constraints>
|
|
72
|
-
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
|
73
84
|
<state key="normal" title="Some Button">
|
|
74
|
-
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
|
75
85
|
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
|
76
86
|
</state>
|
|
77
|
-
<state key="highlighted">
|
|
78
|
-
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
79
|
-
</state>
|
|
80
87
|
<connections>
|
|
81
88
|
<action selector="someButtonClick:" destination="4" eventType="touchDown" id="LKw-by-anH"/>
|
|
82
89
|
</connections>
|
|
83
90
|
</button>
|
|
84
91
|
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="6Hu-uu-EUY">
|
|
85
|
-
<
|
|
92
|
+
<rect key="frame" x="163" y="158" width="155" height="30"/>
|
|
86
93
|
<state key="normal" title="Labeled Button">
|
|
87
|
-
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
|
88
94
|
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
|
89
95
|
</state>
|
|
90
|
-
<state key="highlighted">
|
|
91
|
-
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
92
|
-
</state>
|
|
93
96
|
<connections>
|
|
94
97
|
<action selector="onLabeledButtonClicked:" destination="4" eventType="touchDown" id="SRl-Pb-TKU"/>
|
|
95
98
|
</connections>
|
|
96
99
|
</button>
|
|
97
100
|
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="n4M-Kb-ePv">
|
|
98
|
-
<
|
|
101
|
+
<rect key="frame" x="163" y="196" width="155" height="30"/>
|
|
99
102
|
<state key="normal" title="Go Elsewhere">
|
|
100
|
-
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
|
101
103
|
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
|
102
104
|
</state>
|
|
103
|
-
<state key="highlighted">
|
|
104
|
-
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
105
|
-
</state>
|
|
106
105
|
<connections>
|
|
107
106
|
<segue destination="2m6-NE-oGx" kind="push" id="g3T-p0-Sec"/>
|
|
108
107
|
</connections>
|
|
109
108
|
</button>
|
|
110
109
|
<slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="wB4-9F-vl7">
|
|
110
|
+
<rect key="frame" x="204" y="424" width="292" height="31"/>
|
|
111
111
|
<accessibility key="accessibilityConfiguration" label="sliderByLabel"/>
|
|
112
112
|
<constraints>
|
|
113
113
|
<constraint firstAttribute="width" constant="288" id="dCS-tQ-uoe"/>
|
|
114
114
|
</constraints>
|
|
115
115
|
</slider>
|
|
116
116
|
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yGC-o4-z18">
|
|
117
|
-
<
|
|
117
|
+
<rect key="frame" x="163" y="234" width="155" height="30"/>
|
|
118
118
|
<state key="normal" title="Tables">
|
|
119
|
-
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
|
120
119
|
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
|
121
120
|
</state>
|
|
122
|
-
<state key="highlighted">
|
|
123
|
-
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
124
|
-
</state>
|
|
125
121
|
<connections>
|
|
126
122
|
<action selector="showTables:" destination="4" eventType="touchUpInside" id="sVv-C0-lie"/>
|
|
127
123
|
</connections>
|
|
@@ -129,37 +125,38 @@
|
|
|
129
125
|
</subviews>
|
|
130
126
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
|
131
127
|
<constraints>
|
|
132
|
-
<constraint firstItem="HNa-e4-2od" firstAttribute="leading" secondItem="mEd-bW-xG3" secondAttribute="leading"
|
|
133
|
-
<constraint firstItem="yGC-o4-z18" firstAttribute="leading" secondItem="n4M-Kb-ePv" secondAttribute="leading"
|
|
134
|
-
<constraint firstItem="79f-eU-bDt" firstAttribute="leading" secondItem="26" secondAttribute="leading" constant="20" symbolic="YES"
|
|
135
|
-
<constraint firstItem="n4M-Kb-ePv" firstAttribute="top" secondItem="6Hu-uu-EUY" secondAttribute="bottom" constant="8" symbolic="YES"
|
|
136
|
-
<constraint firstAttribute="trailing" secondItem="27" secondAttribute="trailing" constant="20" symbolic="YES"
|
|
128
|
+
<constraint firstItem="HNa-e4-2od" firstAttribute="leading" secondItem="mEd-bW-xG3" secondAttribute="leading" id="078-hV-XP8"/>
|
|
129
|
+
<constraint firstItem="yGC-o4-z18" firstAttribute="leading" secondItem="n4M-Kb-ePv" secondAttribute="leading" id="0P7-h0-m30"/>
|
|
130
|
+
<constraint firstItem="79f-eU-bDt" firstAttribute="leading" secondItem="26" secondAttribute="leading" constant="20" symbolic="YES" id="1JC-Aj-NzB"/>
|
|
131
|
+
<constraint firstItem="n4M-Kb-ePv" firstAttribute="top" secondItem="6Hu-uu-EUY" secondAttribute="bottom" constant="8" symbolic="YES" id="9II-fH-f7K"/>
|
|
132
|
+
<constraint firstAttribute="trailing" secondItem="27" secondAttribute="trailing" constant="20" symbolic="YES" id="CON-Cb-dBe"/>
|
|
137
133
|
<constraint firstAttribute="trailing" secondItem="Nyi-ck-8hR" secondAttribute="trailing" constant="227" id="G0P-fu-R9M"/>
|
|
138
|
-
<constraint firstItem="6Hu-uu-EUY" firstAttribute="leading" secondItem="MgB-Y1-P3J" secondAttribute="leading"
|
|
139
|
-
<constraint firstItem="HNa-e4-2od" firstAttribute="top" secondItem="mEd-bW-xG3" secondAttribute="bottom" constant="8" symbolic="YES"
|
|
134
|
+
<constraint firstItem="6Hu-uu-EUY" firstAttribute="leading" secondItem="MgB-Y1-P3J" secondAttribute="leading" id="GwV-n1-zD7"/>
|
|
135
|
+
<constraint firstItem="HNa-e4-2od" firstAttribute="top" secondItem="mEd-bW-xG3" secondAttribute="bottom" constant="8" symbolic="YES" id="IGG-em-f1e"/>
|
|
140
136
|
<constraint firstItem="mEd-bW-xG3" firstAttribute="top" secondItem="26" secondAttribute="top" constant="19" id="KGI-gf-TAe"/>
|
|
141
|
-
<constraint firstItem="27" firstAttribute="leading" secondItem="26" secondAttribute="leading" constant="20" symbolic="YES"
|
|
142
|
-
<constraint firstItem="nbu-fr-Znd" firstAttribute="baseline" secondItem="HNa-e4-2od" secondAttribute="baseline"
|
|
143
|
-
<constraint firstItem="6Hu-uu-EUY" firstAttribute="top" secondItem="MgB-Y1-P3J" secondAttribute="bottom" constant="8" symbolic="YES"
|
|
144
|
-
<constraint firstItem="yGC-o4-z18" firstAttribute="top" secondItem="n4M-Kb-ePv" secondAttribute="bottom" constant="8" symbolic="YES"
|
|
145
|
-
<constraint firstItem="nbu-fr-Znd" firstAttribute="leading" secondItem="26" secondAttribute="leading" constant="20" symbolic="YES"
|
|
146
|
-
<constraint firstItem="MgB-Y1-P3J" firstAttribute="leading" secondItem="HNa-e4-2od" secondAttribute="leading"
|
|
147
|
-
<constraint firstItem="6Hu-uu-EUY" firstAttribute="trailing" secondItem="MgB-Y1-P3J" secondAttribute="trailing"
|
|
137
|
+
<constraint firstItem="27" firstAttribute="leading" secondItem="26" secondAttribute="leading" constant="20" symbolic="YES" id="LAk-gc-aCl"/>
|
|
138
|
+
<constraint firstItem="nbu-fr-Znd" firstAttribute="baseline" secondItem="HNa-e4-2od" secondAttribute="baseline" id="M5i-yy-h0N"/>
|
|
139
|
+
<constraint firstItem="6Hu-uu-EUY" firstAttribute="top" secondItem="MgB-Y1-P3J" secondAttribute="bottom" constant="8" symbolic="YES" id="MWf-xM-HxM"/>
|
|
140
|
+
<constraint firstItem="yGC-o4-z18" firstAttribute="top" secondItem="n4M-Kb-ePv" secondAttribute="bottom" constant="8" symbolic="YES" id="Obt-JM-krp"/>
|
|
141
|
+
<constraint firstItem="nbu-fr-Znd" firstAttribute="leading" secondItem="26" secondAttribute="leading" constant="20" symbolic="YES" id="RZE-cI-a2V"/>
|
|
142
|
+
<constraint firstItem="MgB-Y1-P3J" firstAttribute="leading" secondItem="HNa-e4-2od" secondAttribute="leading" id="TI6-aB-T6l"/>
|
|
143
|
+
<constraint firstItem="6Hu-uu-EUY" firstAttribute="trailing" secondItem="MgB-Y1-P3J" secondAttribute="trailing" id="Tkv-gE-Bb0"/>
|
|
148
144
|
<constraint firstItem="79f-eU-bDt" firstAttribute="top" secondItem="26" secondAttribute="top" constant="23" id="WAb-82-oiE"/>
|
|
149
145
|
<constraint firstAttribute="bottom" secondItem="wB4-9F-vl7" secondAttribute="bottom" constant="250" id="bJ6-kP-IlL"/>
|
|
150
|
-
<constraint firstItem="HNa-e4-2od" firstAttribute="trailing" secondItem="mEd-bW-xG3" secondAttribute="trailing"
|
|
151
|
-
<constraint firstItem="27" firstAttribute="centerY" secondItem="26" secondAttribute="centerY"
|
|
146
|
+
<constraint firstItem="HNa-e4-2od" firstAttribute="trailing" secondItem="mEd-bW-xG3" secondAttribute="trailing" id="e4T-wS-zIa"/>
|
|
147
|
+
<constraint firstItem="27" firstAttribute="centerY" secondItem="26" secondAttribute="centerY" id="fbb-bQ-YI1"/>
|
|
152
148
|
<constraint firstItem="MgB-Y1-P3J" firstAttribute="top" secondItem="26" secondAttribute="top" constant="120" id="fxO-Da-wfr"/>
|
|
153
|
-
<constraint firstItem="n4M-Kb-ePv" firstAttribute="leading" secondItem="6Hu-uu-EUY" secondAttribute="leading"
|
|
149
|
+
<constraint firstItem="n4M-Kb-ePv" firstAttribute="leading" secondItem="6Hu-uu-EUY" secondAttribute="leading" id="gQf-GL-AtC"/>
|
|
154
150
|
<constraint firstItem="wB4-9F-vl7" firstAttribute="leading" secondItem="26" secondAttribute="leading" constant="206" id="iFj-Np-Sq6"/>
|
|
155
|
-
<constraint firstItem="yGC-o4-z18" firstAttribute="trailing" secondItem="n4M-Kb-ePv" secondAttribute="trailing"
|
|
151
|
+
<constraint firstItem="yGC-o4-z18" firstAttribute="trailing" secondItem="n4M-Kb-ePv" secondAttribute="trailing" id="k2k-ql-gbD"/>
|
|
156
152
|
<constraint firstItem="mEd-bW-xG3" firstAttribute="leading" secondItem="26" secondAttribute="leading" constant="163" id="kHo-k9-xfB"/>
|
|
157
|
-
<constraint firstItem="n4M-Kb-ePv" firstAttribute="trailing" secondItem="6Hu-uu-EUY" secondAttribute="trailing"
|
|
158
|
-
<constraint firstItem="79f-eU-bDt" firstAttribute="baseline" secondItem="mEd-bW-xG3" secondAttribute="baseline"
|
|
159
|
-
<constraint firstItem="Nyi-ck-8hR" firstAttribute="top" secondItem="nbu-fr-Znd" secondAttribute="top"
|
|
153
|
+
<constraint firstItem="n4M-Kb-ePv" firstAttribute="trailing" secondItem="6Hu-uu-EUY" secondAttribute="trailing" id="kXJ-R6-5W3"/>
|
|
154
|
+
<constraint firstItem="79f-eU-bDt" firstAttribute="baseline" secondItem="mEd-bW-xG3" secondAttribute="baseline" id="piK-8v-q9x"/>
|
|
155
|
+
<constraint firstItem="Nyi-ck-8hR" firstAttribute="top" secondItem="nbu-fr-Znd" secondAttribute="top" id="wtS-Ul-nbp"/>
|
|
160
156
|
</constraints>
|
|
161
157
|
<simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
|
|
162
158
|
</view>
|
|
159
|
+
<extendedEdge key="edgesForExtendedLayout" bottom="YES"/>
|
|
163
160
|
<toolbarItems/>
|
|
164
161
|
<navigationItem key="navigationItem" title="Detail" id="53"/>
|
|
165
162
|
<connections>
|
|
@@ -181,11 +178,16 @@
|
|
|
181
178
|
<scene sceneID="c75-js-XhF">
|
|
182
179
|
<objects>
|
|
183
180
|
<viewController title="Elsewhere" id="2m6-NE-oGx" sceneMemberID="viewController">
|
|
181
|
+
<layoutGuides>
|
|
182
|
+
<viewControllerLayoutGuide type="top" id="Oj7-mS-nqj"/>
|
|
183
|
+
<viewControllerLayoutGuide type="bottom" id="O2t-xW-YIE"/>
|
|
184
|
+
</layoutGuides>
|
|
184
185
|
<view key="view" contentMode="scaleToFill" id="L6v-eP-0Ap">
|
|
185
|
-
<rect key="frame" x="0.0" y="
|
|
186
|
+
<rect key="frame" x="0.0" y="0.0" width="703" height="768"/>
|
|
186
187
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
|
187
188
|
<subviews>
|
|
188
189
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="You are now elsewhere." lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2Sw-kC-LPj">
|
|
190
|
+
<rect key="frame" x="261" y="341" width="181" height="21"/>
|
|
189
191
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
|
190
192
|
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
|
191
193
|
<nil key="highlightedColor"/>
|
|
@@ -194,7 +196,7 @@
|
|
|
194
196
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
|
195
197
|
<constraints>
|
|
196
198
|
<constraint firstItem="2Sw-kC-LPj" firstAttribute="top" secondItem="L6v-eP-0Ap" secondAttribute="top" constant="341" id="fPL-qj-geg"/>
|
|
197
|
-
<constraint firstItem="2Sw-kC-LPj" firstAttribute="centerX" secondItem="L6v-eP-0Ap" secondAttribute="centerX"
|
|
199
|
+
<constraint firstItem="2Sw-kC-LPj" firstAttribute="centerX" secondItem="L6v-eP-0Ap" secondAttribute="centerX" id="iV6-oV-7kk"/>
|
|
198
200
|
</constraints>
|
|
199
201
|
<simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
|
|
200
202
|
</view>
|
|
@@ -209,7 +211,7 @@
|
|
|
209
211
|
<objects>
|
|
210
212
|
<splitViewController id="5" sceneMemberID="viewController">
|
|
211
213
|
<toolbarItems/>
|
|
212
|
-
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="
|
|
214
|
+
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="blackOpaque"/>
|
|
213
215
|
<simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
|
|
214
216
|
<connections>
|
|
215
217
|
<segue destination="3" kind="relationship" relationship="masterViewController" id="9"/>
|
|
@@ -223,30 +225,29 @@
|
|
|
223
225
|
<!--Master View Controller - Master-->
|
|
224
226
|
<scene sceneID="24">
|
|
225
227
|
<objects>
|
|
226
|
-
<tableViewController
|
|
227
|
-
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="20">
|
|
228
|
-
<rect key="frame" x="0.0" y="
|
|
228
|
+
<tableViewController title="Master" clearsSelectionOnViewWillAppear="NO" id="19" customClass="MasterViewController" sceneMemberID="viewController">
|
|
229
|
+
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="20">
|
|
230
|
+
<rect key="frame" x="0.0" y="0.0" width="320" height="768"/>
|
|
229
231
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
230
232
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
231
233
|
<simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
|
|
232
234
|
<prototypes>
|
|
233
235
|
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="Cell" textLabel="tIi-5l-S0i" style="IBUITableViewCellStyleDefault" id="ZSw-0O-9Pw">
|
|
234
|
-
<rect key="frame" x="0.0" y="
|
|
236
|
+
<rect key="frame" x="0.0" y="86" width="320" height="44"/>
|
|
235
237
|
<autoresizingMask key="autoresizingMask"/>
|
|
236
|
-
<
|
|
238
|
+
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ZSw-0O-9Pw" id="6bz-Nk-434">
|
|
237
239
|
<rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
|
|
238
240
|
<autoresizingMask key="autoresizingMask"/>
|
|
239
241
|
<subviews>
|
|
240
242
|
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="tIi-5l-S0i">
|
|
241
|
-
<rect key="frame" x="
|
|
243
|
+
<rect key="frame" x="15" y="0.0" width="290" height="43"/>
|
|
242
244
|
<autoresizingMask key="autoresizingMask"/>
|
|
243
245
|
<fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
|
|
244
246
|
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
|
245
247
|
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
|
246
248
|
</label>
|
|
247
249
|
</subviews>
|
|
248
|
-
|
|
249
|
-
</view>
|
|
250
|
+
</tableViewCellContentView>
|
|
250
251
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
251
252
|
</tableViewCell>
|
|
252
253
|
</prototypes>
|
|
@@ -279,8 +280,8 @@
|
|
|
279
280
|
</scene>
|
|
280
281
|
</scenes>
|
|
281
282
|
<simulatedMetricsContainer key="defaultSimulatedMetrics">
|
|
282
|
-
<simulatedStatusBarMetrics key="statusBar"
|
|
283
|
+
<simulatedStatusBarMetrics key="statusBar"/>
|
|
283
284
|
<simulatedOrientationMetrics key="orientation"/>
|
|
284
285
|
<simulatedScreenMetrics key="destination"/>
|
|
285
286
|
</simulatedMetricsContainer>
|
|
286
|
-
</document>
|
|
287
|
+
</document>
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
-
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="
|
|
2
|
+
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="5053" systemVersion="13C64" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="3">
|
|
3
3
|
<dependencies>
|
|
4
|
-
<
|
|
4
|
+
<deployment defaultVersion="1552" identifier="iOS"/>
|
|
5
|
+
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
|
|
5
6
|
</dependencies>
|
|
6
7
|
<scenes>
|
|
7
8
|
<!--Navigation Controller-->
|
|
@@ -22,29 +23,28 @@
|
|
|
22
23
|
<!--Master View Controller - Master-->
|
|
23
24
|
<scene sceneID="18">
|
|
24
25
|
<objects>
|
|
25
|
-
<tableViewController
|
|
26
|
-
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="13">
|
|
27
|
-
<rect key="frame" x="0.0" y="
|
|
26
|
+
<tableViewController title="Master" id="12" customClass="MasterViewController" sceneMemberID="viewController">
|
|
27
|
+
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="13">
|
|
28
|
+
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
|
28
29
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
29
30
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
30
31
|
<prototypes>
|
|
31
32
|
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="Cell" textLabel="phq-AM-6qj" style="IBUITableViewCellStyleDefault" id="lJ0-d7-vTF">
|
|
32
|
-
<rect key="frame" x="0.0" y="
|
|
33
|
+
<rect key="frame" x="0.0" y="86" width="320" height="44"/>
|
|
33
34
|
<autoresizingMask key="autoresizingMask"/>
|
|
34
|
-
<
|
|
35
|
-
<rect key="frame" x="0.0" y="0.0" width="
|
|
35
|
+
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="lJ0-d7-vTF" id="XfA-LH-DZO">
|
|
36
|
+
<rect key="frame" x="0.0" y="0.0" width="287" height="43"/>
|
|
36
37
|
<autoresizingMask key="autoresizingMask"/>
|
|
37
38
|
<subviews>
|
|
38
39
|
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="phq-AM-6qj">
|
|
39
|
-
<rect key="frame" x="
|
|
40
|
+
<rect key="frame" x="15" y="0.0" width="270" height="43"/>
|
|
40
41
|
<autoresizingMask key="autoresizingMask"/>
|
|
41
42
|
<fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
|
|
42
43
|
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
|
43
44
|
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
|
44
45
|
</label>
|
|
45
46
|
</subviews>
|
|
46
|
-
|
|
47
|
-
</view>
|
|
47
|
+
</tableViewCellContentView>
|
|
48
48
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
49
49
|
<connections>
|
|
50
50
|
<segue destination="21" kind="push" identifier="showDetail" id="jZb-fq-zAk"/>
|
|
@@ -66,35 +66,36 @@
|
|
|
66
66
|
<!--Detail View Controller - Detail-->
|
|
67
67
|
<scene sceneID="24">
|
|
68
68
|
<objects>
|
|
69
|
-
<viewController
|
|
69
|
+
<viewController title="Detail" id="21" customClass="DetailViewController" sceneMemberID="viewController">
|
|
70
|
+
<layoutGuides>
|
|
71
|
+
<viewControllerLayoutGuide type="top" id="jXf-FB-Fgb"/>
|
|
72
|
+
<viewControllerLayoutGuide type="bottom" id="krh-jV-bGI"/>
|
|
73
|
+
</layoutGuides>
|
|
70
74
|
<view key="view" contentMode="scaleToFill" id="22">
|
|
71
|
-
<rect key="frame" x="0.0" y="
|
|
75
|
+
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
|
72
76
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
|
73
77
|
<subviews>
|
|
74
78
|
<label clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" text="Detail view content goes here" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="27">
|
|
79
|
+
<rect key="frame" x="20" y="9" width="280" height="17"/>
|
|
75
80
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
76
81
|
<fontDescription key="fontDescription" type="system" size="system"/>
|
|
77
82
|
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
|
78
83
|
<nil key="highlightedColor"/>
|
|
79
84
|
</label>
|
|
80
85
|
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="BGA-y0-odx">
|
|
81
|
-
<
|
|
86
|
+
<rect key="frame" x="20" y="431" width="46" height="30"/>
|
|
82
87
|
<state key="normal" title="Button">
|
|
83
|
-
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
|
84
88
|
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
|
85
89
|
</state>
|
|
86
|
-
<state key="highlighted">
|
|
87
|
-
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
88
|
-
</state>
|
|
89
90
|
</button>
|
|
90
91
|
</subviews>
|
|
91
92
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
|
92
93
|
<constraints>
|
|
93
94
|
<constraint firstAttribute="bottom" secondItem="BGA-y0-odx" secondAttribute="bottom" constant="107" id="Oz5-UI-e4N"/>
|
|
94
|
-
<constraint firstItem="27" firstAttribute="leading" secondItem="22" secondAttribute="leading" constant="20" symbolic="YES"
|
|
95
|
-
<constraint firstItem="BGA-y0-odx" firstAttribute="leading" secondItem="22" secondAttribute="leading" constant="20" symbolic="YES"
|
|
95
|
+
<constraint firstItem="27" firstAttribute="leading" secondItem="22" secondAttribute="leading" constant="20" symbolic="YES" id="R0m-z7-TWk"/>
|
|
96
|
+
<constraint firstItem="BGA-y0-odx" firstAttribute="leading" secondItem="22" secondAttribute="leading" constant="20" symbolic="YES" id="a4V-WS-rvQ"/>
|
|
96
97
|
<constraint firstItem="27" firstAttribute="top" secondItem="22" secondAttribute="top" constant="9" id="fqs-Iu-ZEi"/>
|
|
97
|
-
<constraint firstAttribute="trailing" secondItem="27" secondAttribute="trailing" constant="20" symbolic="YES"
|
|
98
|
+
<constraint firstAttribute="trailing" secondItem="27" secondAttribute="trailing" constant="20" symbolic="YES" id="pRe-qY-58T"/>
|
|
98
99
|
</constraints>
|
|
99
100
|
</view>
|
|
100
101
|
<navigationItem key="navigationItem" title="Detail" id="26"/>
|
|
@@ -107,23 +108,9 @@
|
|
|
107
108
|
<point key="canvasLocation" x="902" y="64"/>
|
|
108
109
|
</scene>
|
|
109
110
|
</scenes>
|
|
110
|
-
<classes>
|
|
111
|
-
<class className="DetailViewController" superclassName="UIViewController">
|
|
112
|
-
<source key="sourceIdentifier" type="project" relativePath="./Classes/DetailViewController.h"/>
|
|
113
|
-
<relationships>
|
|
114
|
-
<relationship kind="outlet" name="detailDescriptionLabel" candidateClass="UILabel"/>
|
|
115
|
-
</relationships>
|
|
116
|
-
</class>
|
|
117
|
-
<class className="MasterViewController" superclassName="UITableViewController">
|
|
118
|
-
<source key="sourceIdentifier" type="project" relativePath="./Classes/MasterViewController.h"/>
|
|
119
|
-
</class>
|
|
120
|
-
<class className="NSLayoutConstraint" superclassName="NSObject">
|
|
121
|
-
<source key="sourceIdentifier" type="project" relativePath="./Classes/NSLayoutConstraint.h"/>
|
|
122
|
-
</class>
|
|
123
|
-
</classes>
|
|
124
111
|
<simulatedMetricsContainer key="defaultSimulatedMetrics">
|
|
125
112
|
<simulatedStatusBarMetrics key="statusBar"/>
|
|
126
113
|
<simulatedOrientationMetrics key="orientation"/>
|
|
127
114
|
<simulatedScreenMetrics key="destination" type="retina4"/>
|
|
128
115
|
</simulatedMetricsContainer>
|
|
129
|
-
</document>
|
|
116
|
+
</document>
|
data/features/support/hooks.rb
CHANGED
data/lib/furter.rb
CHANGED
|
@@ -14,13 +14,13 @@ module Furter
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def has_text?(text)
|
|
17
|
-
element_exists "view marked
|
|
17
|
+
element_exists "view marked:\"#{text}\""
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
private
|
|
21
21
|
def selector
|
|
22
|
-
return "textField placeholder
|
|
23
|
-
return "textField marked
|
|
22
|
+
return "textField placeholder:\"#{@locator[:placeholder]}\"" if @locator[:placeholder]
|
|
23
|
+
return "textField marked:\"#{@locator[:label]}\"" if @locator[:label]
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
end
|
|
@@ -8,10 +8,13 @@ module Furter
|
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
def click
|
|
11
|
-
|
|
12
11
|
wait_for_and_touch selector
|
|
13
12
|
end
|
|
14
13
|
|
|
14
|
+
def tap_and_hold_for(duration)
|
|
15
|
+
wait_for_and_tap(selector, duration)
|
|
16
|
+
end
|
|
17
|
+
|
|
15
18
|
def visible?
|
|
16
19
|
element_is_not_hidden selector
|
|
17
20
|
end
|
|
@@ -21,7 +24,7 @@ module Furter
|
|
|
21
24
|
end
|
|
22
25
|
|
|
23
26
|
def next_responders
|
|
24
|
-
frankly_map("view
|
|
27
|
+
frankly_map("view:\"UIView\"", 'nextResponder').map do |r|
|
|
25
28
|
r.gsub(/[<>]/,'')
|
|
26
29
|
end
|
|
27
30
|
end
|
|
@@ -34,9 +37,9 @@ module Furter
|
|
|
34
37
|
def selector_how
|
|
35
38
|
case
|
|
36
39
|
when @locator[:label]
|
|
37
|
-
"marked
|
|
40
|
+
"marked:\"#{@locator[:label]}\""
|
|
38
41
|
when @locator[:text]
|
|
39
|
-
"text
|
|
42
|
+
"text:\"#{@locator[:text]}\""
|
|
40
43
|
end
|
|
41
44
|
end
|
|
42
45
|
|
|
@@ -45,7 +48,7 @@ module Furter
|
|
|
45
48
|
end
|
|
46
49
|
|
|
47
50
|
def view_class
|
|
48
|
-
return "view
|
|
51
|
+
return "view:\"#{@locator[:type]}\"" if @locator[:type]
|
|
49
52
|
"view"
|
|
50
53
|
end
|
|
51
54
|
end
|
data/lib/furter/version.rb
CHANGED
|
@@ -7,17 +7,17 @@ describe Furter::Accessors::Button do
|
|
|
7
7
|
context 'locating buttons' do
|
|
8
8
|
it 'can be found by text' do
|
|
9
9
|
text_button = Furter::Accessors::Button.new(:text => 'Some Text')
|
|
10
|
-
text_button.send(:selector).should eq("button label text
|
|
10
|
+
text_button.send(:selector).should eq("button label text:\"Some Text\"")
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
it ':text is the same as :label' do
|
|
14
14
|
label_button = Furter::Accessors::Button.new(:label => 'Some Text')
|
|
15
|
-
label_button.send(:selector).should eq("button marked
|
|
15
|
+
label_button.send(:selector).should eq("button marked:\"Some Text\"")
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
it 'can be a custom button type as well' do
|
|
19
19
|
custom_button = Furter::Accessors::Button.new(:label => 'Some Label', :type => 'MyButtonType')
|
|
20
|
-
custom_button.send(:selector).should eq("view
|
|
20
|
+
custom_button.send(:selector).should eq("view:\"MyButtonType\" marked:\"Some Label\"")
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
|
-
end
|
|
23
|
+
end
|
|
@@ -7,12 +7,12 @@ describe Furter::Accessors::Label do
|
|
|
7
7
|
context 'locating labels' do
|
|
8
8
|
it 'can be found by accessibility label' do
|
|
9
9
|
label_control = Furter::Accessors::Label.new(:label => 'someAccessibilityLabel')
|
|
10
|
-
label_control.send(:selector).should eq("label marked
|
|
10
|
+
label_control.send(:selector).should eq("label marked:\"someAccessibilityLabel\"")
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
it 'can be found by text' do
|
|
14
14
|
label_control = Furter::Accessors::Label.new(:text => 'Text Value')
|
|
15
|
-
label_control.send(:selector).should eq("label text
|
|
15
|
+
label_control.send(:selector).should eq("label text:\"Text Value\"")
|
|
16
16
|
end
|
|
17
17
|
end
|
|
18
18
|
|
|
@@ -7,7 +7,7 @@ describe Furter::Accessors::Slider do
|
|
|
7
7
|
context 'locating slider' do
|
|
8
8
|
it 'can be found by id' do
|
|
9
9
|
id_slider = Furter::Accessors::Slider.new(:label => 'someSliderLabel')
|
|
10
|
-
id_slider.send(:selector).should eq("view
|
|
10
|
+
id_slider.send(:selector).should eq("view:\"UISlider\" marked:\"someSliderLabel\"")
|
|
11
11
|
end
|
|
12
12
|
end
|
|
13
13
|
|
|
@@ -21,4 +21,4 @@ describe Furter::Accessors::Slider do
|
|
|
21
21
|
slider.progress.should eq(0.20)
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
|
-
end
|
|
24
|
+
end
|
|
@@ -5,7 +5,7 @@ describe Furter::Accessors::Switch do
|
|
|
5
5
|
|
|
6
6
|
context 'locating switches' do
|
|
7
7
|
it 'can be found by label' do
|
|
8
|
-
switch.send(:selector).should eq("view
|
|
8
|
+
switch.send(:selector).should eq("view:\"UISwitch\" marked:\"accessibilityLabel\"")
|
|
9
9
|
end
|
|
10
10
|
end
|
|
11
11
|
|
|
@@ -16,13 +16,13 @@ describe Furter::Accessors::Switch do
|
|
|
16
16
|
|
|
17
17
|
it 'can turn it off or on' do
|
|
18
18
|
switch.should_receive(:on?).and_return(true, false)
|
|
19
|
-
switch.should_receive(:
|
|
19
|
+
switch.should_receive(:tap_and_hold_for).twice
|
|
20
20
|
[false, true].each { |on_or_off| switch.set on_or_off }
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
it 'will only toggle if in the expected state' do
|
|
24
24
|
switch.should_receive(:frankly_map).with(anything, 'isOn').and_return([false])
|
|
25
|
-
switch.should_not_receive(:
|
|
25
|
+
switch.should_not_receive(:tap_and_hold_for)
|
|
26
26
|
switch.set false
|
|
27
27
|
end
|
|
28
|
-
end
|
|
28
|
+
end
|
|
@@ -7,13 +7,13 @@ describe Furter::Accessors::Table do
|
|
|
7
7
|
|
|
8
8
|
context 'locating table' do
|
|
9
9
|
it 'can be found by id' do
|
|
10
|
-
table.send(:selector).should eq("view
|
|
10
|
+
table.send(:selector).should eq("view:\"UITableView\" marked:\"tableView\"")
|
|
11
11
|
end
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
context 'selecting table items' do
|
|
15
15
|
it 'can select an item by index' do
|
|
16
|
-
table.should_receive(:touch).with("view
|
|
16
|
+
table.should_receive(:touch).with("view:\"UITableView\" marked:\"tableView\" tableViewCell index:0")
|
|
17
17
|
table.touch_index(0)
|
|
18
18
|
end
|
|
19
19
|
end
|
|
@@ -6,11 +6,11 @@ describe Furter::Accessors::Text do
|
|
|
6
6
|
|
|
7
7
|
context 'locating text fields' do
|
|
8
8
|
it 'should work by placeholder' do
|
|
9
|
-
placeholder.send(:selector).should eq("textField placeholder
|
|
9
|
+
placeholder.send(:selector).should eq("textField placeholder:\"Placeholder Text\"")
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
it 'should work by accessibility label' do
|
|
13
|
-
label.send(:selector).should eq("textField marked
|
|
13
|
+
label.send(:selector).should eq("textField marked:\"accessibilityLabel\"")
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
16
|
|
|
@@ -28,7 +28,7 @@ describe Furter::Accessors::Text do
|
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
it 'knows if text exists anywhere' do
|
|
31
|
-
placeholder.should_receive(:element_exists).with("view marked
|
|
31
|
+
placeholder.should_receive(:element_exists).with("view marked:\"to find anywhere\"")
|
|
32
32
|
placeholder.has_text? 'to find anywhere'
|
|
33
33
|
end
|
|
34
34
|
|
|
@@ -7,22 +7,22 @@ describe Furter::Accessors::View do
|
|
|
7
7
|
context 'locating views' do
|
|
8
8
|
it 'can be found by accessibility label' do
|
|
9
9
|
by_label = Furter::Accessors::View.new(:label => 'id')
|
|
10
|
-
by_label.send(:selector).should eq("view marked
|
|
10
|
+
by_label.send(:selector).should eq("view marked:\"id\"")
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
it 'can use a custom type' do
|
|
14
14
|
by_type = Furter::Accessors::View.new(:type => 'UICustomType', :label => 'id')
|
|
15
|
-
by_type.send(:selector).should eq("view
|
|
15
|
+
by_type.send(:selector).should eq("view:\"UICustomType\" marked:\"id\"")
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
it 'can pass extra information as well' do
|
|
19
19
|
with_extras = Furter::Accessors::View.new(:label => 'id', :extra => 'label')
|
|
20
|
-
with_extras.send(:selector).should eq("view marked
|
|
20
|
+
with_extras.send(:selector).should eq("view marked:\"id\" label")
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
it 'can be found by text' do
|
|
24
24
|
by_text = Furter::Accessors::View.new(:text => "Some Text")
|
|
25
|
-
by_text.send(:selector).should eq("view text
|
|
25
|
+
by_text.send(:selector).should eq("view text:\"Some Text\"")
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
28
|
|
|
@@ -31,6 +31,12 @@ describe Furter::Accessors::View do
|
|
|
31
31
|
view.click
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
+
it 'can be tapped' do
|
|
35
|
+
expected_duration = 0.1
|
|
36
|
+
view.should_receive(:wait_for_and_tap).with(selector, expected_duration)
|
|
37
|
+
view.tap_and_hold_for(expected_duration)
|
|
38
|
+
end
|
|
39
|
+
|
|
34
40
|
it 'knows if it is visible' do
|
|
35
41
|
view.should_receive(:element_is_not_hidden).with(selector).and_return(true)
|
|
36
42
|
view.should be_visible
|
|
@@ -42,7 +48,7 @@ describe Furter::Accessors::View do
|
|
|
42
48
|
end
|
|
43
49
|
|
|
44
50
|
it 'should know about next responders' do
|
|
45
|
-
view.should_receive(:frankly_map).with("view
|
|
51
|
+
view.should_receive(:frankly_map).with("view:\"UIView\"", 'nextResponder').and_return(['<First>', '<Second>', '<Third>'])
|
|
46
52
|
view.next_responders.should eq ['First', 'Second', 'Third']
|
|
47
53
|
end
|
|
48
54
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: furter
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.3.
|
|
4
|
+
version: 0.0.3.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Levi Wilson
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2014-05-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: frank-cucumber
|
|
@@ -214,7 +214,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
214
214
|
version: '0'
|
|
215
215
|
requirements: []
|
|
216
216
|
rubyforge_project:
|
|
217
|
-
rubygems_version: 2.
|
|
217
|
+
rubygems_version: 2.2.2
|
|
218
218
|
signing_key:
|
|
219
219
|
specification_version: 4
|
|
220
220
|
summary: Higher-level abstraction around iOS drivers
|