medic 0.0.1 → 0.0.2
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 +4 -4
- data/README.md +210 -10
- data/lib/medic.rb +1 -3
- data/lib/medic/anchor.rb +32 -0
- data/lib/medic/anchored_object_query.rb +18 -0
- data/lib/medic/correlation_query.rb +22 -0
- data/lib/medic/finders.rb +122 -0
- data/lib/medic/hk_constants.rb +76 -0
- data/lib/medic/interval.rb +29 -0
- data/lib/medic/medic.rb +68 -1
- data/lib/medic/observer_query.rb +15 -0
- data/lib/medic/predicate.rb +39 -0
- data/lib/medic/query_options.rb +23 -0
- data/lib/medic/sample_query.rb +22 -0
- data/lib/medic/sort.rb +24 -0
- data/lib/medic/source_query.rb +15 -0
- data/lib/medic/statistics_collection_query.rb +39 -0
- data/lib/medic/statistics_options.rb +31 -0
- data/lib/medic/statistics_query.rb +17 -0
- data/lib/medic/store.rb +117 -0
- data/lib/medic/types.rb +100 -0
- data/lib/medic/version.rb +1 -1
- data/spec/medic/anchor.rb +16 -0
- data/spec/medic/anchored_object_query_spec.rb +12 -0
- data/spec/medic/correlation_query_spec.rb +16 -0
- data/spec/medic/hk_constants_spec.rb +67 -0
- data/spec/medic/interval_spec.rb +16 -0
- data/spec/medic/medic_spec.rb +153 -0
- data/spec/medic/observer_query_spec.rb +12 -0
- data/spec/medic/predicate_spec.rb +27 -0
- data/spec/medic/query_options_spec.rb +24 -0
- data/spec/medic/sample_query_spec.rb +12 -0
- data/spec/medic/sort_spec.rb +26 -0
- data/spec/medic/source_query_spec.rb +12 -0
- data/spec/medic/statistics_collection_query_spec.rb +27 -0
- data/spec/medic/statistics_options_spec.rb +32 -0
- data/spec/medic/statistics_query_spec.rb +12 -0
- data/spec/medic/store_spec.rb +159 -0
- data/spec/medic/types_spec.rb +95 -0
- metadata +72 -9
- data/spec/main_spec.rb +0 -9
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
describe "Medic::SampleQuery" do
|
|
2
|
+
|
|
3
|
+
before do
|
|
4
|
+
@subject = Medic::SampleQuery.new type: :dietary_protein, limit: 7 do |query, results, error|
|
|
5
|
+
end
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it "is a subclass of HKSampleQuery" do
|
|
9
|
+
@subject.should.be.kind_of? HKSampleQuery
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
describe "Medic::Sort" do
|
|
2
|
+
|
|
3
|
+
before do
|
|
4
|
+
@subject = Object.new
|
|
5
|
+
@subject.extend(Medic::Sort)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
describe "#sort_descriptors" do
|
|
9
|
+
it "returns an array of NSSortDescriptor objects" do
|
|
10
|
+
@subject.sort_descriptors(:start_date).should.all? { |sd| sd.kind_of? NSSortDescriptor }
|
|
11
|
+
@subject.sort_descriptors([:start_date, :end_date]).should.all? { |sd| sd.kind_of? NSSortDescriptor }
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe "#sort_identifier" do
|
|
16
|
+
it "returns the correct sort_identifier for symbol" do
|
|
17
|
+
@subject.sort_identifier(:start_date).should == HKSampleSortIdentifierStartDate
|
|
18
|
+
@subject.sort_identifier(:end_date).should == HKSampleSortIdentifierEndDate
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "passes through the argument if not a symbol" do
|
|
22
|
+
@subject.sort_identifier(NSSortDescriptor).should == NSSortDescriptor
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
describe "Medic::StatisticsCollectionQuery" do
|
|
2
|
+
|
|
3
|
+
before do
|
|
4
|
+
@interval = NSDateComponents.new
|
|
5
|
+
@interval.day = 1
|
|
6
|
+
@subject = Medic::StatisticsCollectionQuery.new(type: :step_count, options: :sum, interval: @interval)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "is a subclass of HKStatisticsCollectionQuery" do
|
|
10
|
+
@subject.should.be.kind_of? HKStatisticsCollectionQuery
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe "#initial_results_handler=" do
|
|
14
|
+
it "sets initialResultsHandler with callback" do
|
|
15
|
+
@subject.initial_results_handler = ->(){}
|
|
16
|
+
@subject.initialResultsHandler.should.respond_to? :call
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe "#statistics_update_handler=" do
|
|
21
|
+
it "sets statisticsUpdateHandler with callback" do
|
|
22
|
+
@subject.statistics_update_handler = ->(){}
|
|
23
|
+
@subject.statisticsUpdateHandler.should.respond_to? :call
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
describe "Medic::StatisticsOptions" do
|
|
2
|
+
|
|
3
|
+
before do
|
|
4
|
+
@subject = Object.new
|
|
5
|
+
@subject.extend(Medic::StatisticsOptions)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
describe "#options_for_stat_query" do
|
|
9
|
+
it "correctly calculates the value for options" do
|
|
10
|
+
@subject.options_for_stat_query(:none).should == 0
|
|
11
|
+
@subject.options_for_stat_query([:by_source, :sum]).should == 17
|
|
12
|
+
@subject.options_for_stat_query([:average, :min, :max]).should == 14
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe "#statistics_option" do
|
|
17
|
+
it "returns the correct type identifier for symbol" do
|
|
18
|
+
@subject.statistics_option(:none).should == HKStatisticsOptionNone
|
|
19
|
+
@subject.statistics_option(:by_source).should == HKStatisticsOptionSeparateBySource
|
|
20
|
+
@subject.statistics_option(:separate_by_source).should == HKStatisticsOptionSeparateBySource
|
|
21
|
+
@subject.statistics_option(:average).should == HKStatisticsOptionDiscreteAverage
|
|
22
|
+
@subject.statistics_option(:discrete_average).should == HKStatisticsOptionDiscreteAverage
|
|
23
|
+
@subject.statistics_option(:min).should == HKStatisticsOptionDiscreteMin
|
|
24
|
+
@subject.statistics_option(:discrete_min).should == HKStatisticsOptionDiscreteMin
|
|
25
|
+
@subject.statistics_option(:max).should == HKStatisticsOptionDiscreteMax
|
|
26
|
+
@subject.statistics_option(:discrete_max).should == HKStatisticsOptionDiscreteMax
|
|
27
|
+
@subject.statistics_option(:sum).should == HKStatisticsOptionCumulativeSum
|
|
28
|
+
@subject.statistics_option(:cumulative_sum).should == HKStatisticsOptionCumulativeSum
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
describe "Medic::StatisticsQuery" do
|
|
2
|
+
|
|
3
|
+
before do
|
|
4
|
+
@subject = Medic::StatisticsQuery.new type: :step_count, options: :sum do |query, results, error|
|
|
5
|
+
end
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it "is a subclass of HKStatisticsQuery" do
|
|
9
|
+
@subject.should.be.kind_of? HKStatisticsQuery
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
end
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
describe "Medic::Store" do
|
|
2
|
+
|
|
3
|
+
before do
|
|
4
|
+
@subject = Medic::Store.new
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
describe "#authorize" do
|
|
8
|
+
it "calls #requestAuthorizationToShareTypes:readTypes:completion with correct args" do
|
|
9
|
+
@subject.mock! 'requestAuthorizationToShareTypes:readTypes:completion' do |share, read, comp|
|
|
10
|
+
share.should.be.kind_of? NSSet
|
|
11
|
+
read.should.be.kind_of? NSSet
|
|
12
|
+
comp.should.respond_to? :call
|
|
13
|
+
true
|
|
14
|
+
end
|
|
15
|
+
@subject.authorize(read: :step_count){|success, error|}.should == true
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe "#authorized?" do
|
|
20
|
+
it "calls #authorizationStatusForType with correct args" do
|
|
21
|
+
@subject.mock! 'authorizationStatusForType' do |type|
|
|
22
|
+
type.should.be.kind_of? HKObjectType
|
|
23
|
+
false
|
|
24
|
+
end
|
|
25
|
+
@subject.authorized?(:step_count).should == false
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "has an #is_authorized? alias" do
|
|
29
|
+
@subject.method(:is_authorized?).should == @subject.method(:authorized?)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "has an #authorized_for? alias" do
|
|
33
|
+
@subject.method(:authorized_for?).should == @subject.method(:authorized?)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "has an #is_authorized_for? alias" do
|
|
37
|
+
@subject.method(:is_authorized_for?).should == @subject.method(:authorized?)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe "#biological_sex" do
|
|
42
|
+
it "calls #biologicalSexWithError with correct args" do
|
|
43
|
+
@subject.mock! 'biologicalSexWithError' do |error|
|
|
44
|
+
error.should.be.kind_of? Pointer
|
|
45
|
+
mock(:biologicalSex, return: HKBiologicalSexFemale)
|
|
46
|
+
end
|
|
47
|
+
@subject.biological_sex.should == :female
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
describe "#blood_type" do
|
|
52
|
+
it "calls #bloodTypeWithError with correct args" do
|
|
53
|
+
@subject.mock! 'bloodTypeWithError' do |error|
|
|
54
|
+
error.should.be.kind_of? Pointer
|
|
55
|
+
mock(:bloodType, return: HKBloodTypeONegative)
|
|
56
|
+
end
|
|
57
|
+
@subject.blood_type.should == :o_negative
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
describe "#date_of_birth" do
|
|
62
|
+
it "calls #dateOfBirthWithError with correct args" do
|
|
63
|
+
@subject.mock! 'dateOfBirthWithError' do |error|
|
|
64
|
+
error.should.be.kind_of? Pointer
|
|
65
|
+
true
|
|
66
|
+
end
|
|
67
|
+
@subject.date_of_birth.should == true
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
describe "#save" do
|
|
72
|
+
it "calls #saveObject:withCompletion with correct args" do
|
|
73
|
+
@subject.mock! 'saveObjects:withCompletion' do |object, comp|
|
|
74
|
+
object.first.should.be.kind_of? HKObjectType
|
|
75
|
+
comp.should.respond_to? :call
|
|
76
|
+
end
|
|
77
|
+
steps = @subject.object_type(:step_count)
|
|
78
|
+
@subject.save(steps){|success, error|}
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
describe "#delete" do
|
|
83
|
+
it "calls #deleteObject:withCompletion with correct args" do
|
|
84
|
+
@subject.mock! 'deleteObject:withCompletion' do |object, comp|
|
|
85
|
+
object.should.be.kind_of? HKObjectType
|
|
86
|
+
comp.should.respond_to? :call
|
|
87
|
+
end
|
|
88
|
+
steps = @subject.object_type(:step_count)
|
|
89
|
+
@subject.delete(steps){|success, error|}
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
describe "#execute" do
|
|
94
|
+
it "calls #executeQuery with correct args" do
|
|
95
|
+
@subject.mock! 'executeQuery' do |query|
|
|
96
|
+
query.should.be.kind_of? HKQuery
|
|
97
|
+
end
|
|
98
|
+
query = HKSampleQuery.alloc.initWithSampleType(@subject.object_type(:step_count), predicate:nil, limit:HKObjectQueryNoLimit, sortDescriptors:nil, resultsHandler:->(q,r,e){})
|
|
99
|
+
@subject.execute(query)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it "has an #execute_query alias" do
|
|
103
|
+
@subject.method(:execute_query).should == @subject.method(:execute)
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
describe "#stop" do
|
|
108
|
+
it "calls #stopQuery with correct args" do
|
|
109
|
+
@subject.mock! 'stopQuery' do |query|
|
|
110
|
+
query.should.be.kind_of? HKQuery
|
|
111
|
+
end
|
|
112
|
+
query = HKSampleQuery.alloc.initWithSampleType(@subject.object_type(:step_count), predicate:nil, limit:HKObjectQueryNoLimit, sortDescriptors:nil, resultsHandler:->(q,r,e){})
|
|
113
|
+
@subject.stop(query)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it "has an #stop_query alias" do
|
|
117
|
+
@subject.method(:stop_query).should == @subject.method(:stop)
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
describe "#enable_background_delivery" do
|
|
122
|
+
it "calls #enableBackgroundDeliveryForType with correct args" do
|
|
123
|
+
@subject.mock! 'enableBackgroundDeliveryForType:frequency:withCompletion' do |type, freq, comp|
|
|
124
|
+
type.should.be.kind_of? HKObjectType
|
|
125
|
+
freq.should == HKUpdateFrequencyWeekly
|
|
126
|
+
comp.should.respond_to? :call
|
|
127
|
+
end
|
|
128
|
+
@subject.enable_background_delivery(:step_count, :weekly){|success, error|}
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
it "has an #enable_background_delivery_for alias" do
|
|
132
|
+
@subject.method(:enable_background_delivery_for).should == @subject.method(:enable_background_delivery)
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
describe "#disable_background_delivery" do
|
|
137
|
+
it "calls #disableBackgroundDeliveryForType:withCompletion with correct args" do
|
|
138
|
+
@subject.mock! 'disableBackgroundDeliveryForType:withCompletion' do |type, comp|
|
|
139
|
+
type.should.be.kind_of? HKObjectType
|
|
140
|
+
comp.should.respond_to? :call
|
|
141
|
+
end
|
|
142
|
+
@subject.disable_background_delivery(:step_count){|success, error|}
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
it "has a #disable_background_delivery_for alias" do
|
|
146
|
+
@subject.method(:disable_background_delivery_for).should == @subject.method(:disable_background_delivery)
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
describe "#disable_all_background_delivery" do
|
|
151
|
+
it "calls #disableAllBackgroundDeliveryWithCompletion with correct args" do
|
|
152
|
+
@subject.mock! 'disableAllBackgroundDeliveryWithCompletion' do |comp|
|
|
153
|
+
comp.should.respond_to? :call
|
|
154
|
+
end
|
|
155
|
+
@subject.disable_all_background_delivery{|success, error|}
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
end
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
describe "Medic::Types" do
|
|
2
|
+
|
|
3
|
+
before do
|
|
4
|
+
@subject = Object.new
|
|
5
|
+
@subject.extend(Medic::Types)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
describe "#object_type" do
|
|
9
|
+
it "returns the correct object type for symbol" do
|
|
10
|
+
@subject.object_type(:step_count).should.be.kind_of? HKQuantityType
|
|
11
|
+
@subject.object_type(:food).should.be.kind_of? HKCorrelationType
|
|
12
|
+
@subject.object_type(:blood_type).should.be.kind_of? HKCharacteristicType
|
|
13
|
+
@subject.object_type(:sleep_analysis).should.be.kind_of? HKCategoryType
|
|
14
|
+
@subject.object_type(:workout).should.be.kind_of? HKWorkoutType
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe "#type_identifier" do
|
|
19
|
+
it "returns the correct type identifier for symbol" do
|
|
20
|
+
@subject.type_identifier(:body_mass_index).should == HKQuantityTypeIdentifierBodyMassIndex
|
|
21
|
+
@subject.type_identifier(:body_fat_percentage).should == HKQuantityTypeIdentifierBodyFatPercentage
|
|
22
|
+
@subject.type_identifier(:height).should == HKQuantityTypeIdentifierHeight
|
|
23
|
+
@subject.type_identifier(:body_mass).should == HKQuantityTypeIdentifierBodyMass
|
|
24
|
+
@subject.type_identifier(:lean_body_mass).should == HKQuantityTypeIdentifierLeanBodyMass
|
|
25
|
+
@subject.type_identifier(:step_count).should == HKQuantityTypeIdentifierStepCount
|
|
26
|
+
@subject.type_identifier(:distance_walking_running).should == HKQuantityTypeIdentifierDistanceWalkingRunning
|
|
27
|
+
@subject.type_identifier(:distance_cycling).should == HKQuantityTypeIdentifierDistanceCycling
|
|
28
|
+
@subject.type_identifier(:basal_energy_burned).should == HKQuantityTypeIdentifierBasalEnergyBurned
|
|
29
|
+
@subject.type_identifier(:active_energy_burned).should == HKQuantityTypeIdentifierActiveEnergyBurned
|
|
30
|
+
@subject.type_identifier(:flights_climbed).should == HKQuantityTypeIdentifierFlightsClimbed
|
|
31
|
+
@subject.type_identifier(:nike_fuel).should == HKQuantityTypeIdentifierNikeFuel
|
|
32
|
+
@subject.type_identifier(:heart_rate).should == HKQuantityTypeIdentifierHeartRate
|
|
33
|
+
@subject.type_identifier(:body_temperature).should == HKQuantityTypeIdentifierBodyTemperature
|
|
34
|
+
@subject.type_identifier(:blood_pressure_systolic).should == HKQuantityTypeIdentifierBloodPressureSystolic
|
|
35
|
+
@subject.type_identifier(:blood_pressure_diastolic).should == HKQuantityTypeIdentifierBloodPressureDiastolic
|
|
36
|
+
@subject.type_identifier(:respiratory_rate).should == HKQuantityTypeIdentifierRespiratoryRate
|
|
37
|
+
@subject.type_identifier(:oxygen_saturation).should == HKQuantityTypeIdentifierOxygenSaturation
|
|
38
|
+
@subject.type_identifier(:peripheral_perfusion_index).should == HKQuantityTypeIdentifierPeripheralPerfusionIndex
|
|
39
|
+
@subject.type_identifier(:blood_glucose).should == HKQuantityTypeIdentifierBloodGlucose
|
|
40
|
+
@subject.type_identifier(:number_of_times_fallen).should == HKQuantityTypeIdentifierNumberOfTimesFallen
|
|
41
|
+
@subject.type_identifier(:electrodermal_activity).should == HKQuantityTypeIdentifierElectrodermalActivity
|
|
42
|
+
@subject.type_identifier(:inhaler_usage).should == HKQuantityTypeIdentifierInhalerUsage
|
|
43
|
+
@subject.type_identifier(:blood_alcohol_content).should == HKQuantityTypeIdentifierBloodAlcoholContent
|
|
44
|
+
@subject.type_identifier(:forced_vital_capacity).should == HKQuantityTypeIdentifierForcedVitalCapacity
|
|
45
|
+
@subject.type_identifier(:forced_expiratory_volume1).should == HKQuantityTypeIdentifierForcedExpiratoryVolume1
|
|
46
|
+
@subject.type_identifier(:peak_expiratory_flow_rate).should == HKQuantityTypeIdentifierPeakExpiratoryFlowRate
|
|
47
|
+
@subject.type_identifier(:dietary_biotin).should == HKQuantityTypeIdentifierDietaryBiotin
|
|
48
|
+
@subject.type_identifier(:dietary_caffeine).should == HKQuantityTypeIdentifierDietaryCaffeine
|
|
49
|
+
@subject.type_identifier(:dietary_calcium).should == HKQuantityTypeIdentifierDietaryCalcium
|
|
50
|
+
@subject.type_identifier(:dietary_carbohydrates).should == HKQuantityTypeIdentifierDietaryCarbohydrates
|
|
51
|
+
@subject.type_identifier(:dietary_chloride).should == HKQuantityTypeIdentifierDietaryChloride
|
|
52
|
+
@subject.type_identifier(:dietary_cholesterol).should == HKQuantityTypeIdentifierDietaryCholesterol
|
|
53
|
+
@subject.type_identifier(:dietary_chromium).should == HKQuantityTypeIdentifierDietaryChromium
|
|
54
|
+
@subject.type_identifier(:dietary_copper).should == HKQuantityTypeIdentifierDietaryCopper
|
|
55
|
+
@subject.type_identifier(:dietary_energy_consumed).should == HKQuantityTypeIdentifierDietaryEnergyConsumed
|
|
56
|
+
@subject.type_identifier(:dietary_fat_monounsaturated).should == HKQuantityTypeIdentifierDietaryFatMonounsaturated
|
|
57
|
+
@subject.type_identifier(:dietary_fat_polyunsaturated).should == HKQuantityTypeIdentifierDietaryFatPolyunsaturated
|
|
58
|
+
@subject.type_identifier(:dietary_fat_saturated).should == HKQuantityTypeIdentifierDietaryFatSaturated
|
|
59
|
+
@subject.type_identifier(:dietary_fat_total).should == HKQuantityTypeIdentifierDietaryFatTotal
|
|
60
|
+
@subject.type_identifier(:dietary_fiber).should == HKQuantityTypeIdentifierDietaryFiber
|
|
61
|
+
@subject.type_identifier(:dietary_folate).should == HKQuantityTypeIdentifierDietaryFolate
|
|
62
|
+
@subject.type_identifier(:dietary_iodine).should == HKQuantityTypeIdentifierDietaryIodine
|
|
63
|
+
@subject.type_identifier(:dietary_iron).should == HKQuantityTypeIdentifierDietaryIron
|
|
64
|
+
@subject.type_identifier(:dietary_magnesium).should == HKQuantityTypeIdentifierDietaryMagnesium
|
|
65
|
+
@subject.type_identifier(:dietary_manganese).should == HKQuantityTypeIdentifierDietaryManganese
|
|
66
|
+
@subject.type_identifier(:dietary_molybdenum).should == HKQuantityTypeIdentifierDietaryMolybdenum
|
|
67
|
+
@subject.type_identifier(:dietary_niacin).should == HKQuantityTypeIdentifierDietaryNiacin
|
|
68
|
+
@subject.type_identifier(:dietary_pantothenic_acid).should == HKQuantityTypeIdentifierDietaryPantothenicAcid
|
|
69
|
+
@subject.type_identifier(:dietary_phosphorus).should == HKQuantityTypeIdentifierDietaryPhosphorus
|
|
70
|
+
@subject.type_identifier(:dietary_potassium).should == HKQuantityTypeIdentifierDietaryPotassium
|
|
71
|
+
@subject.type_identifier(:dietary_protein).should == HKQuantityTypeIdentifierDietaryProtein
|
|
72
|
+
@subject.type_identifier(:dietary_riboflavin).should == HKQuantityTypeIdentifierDietaryRiboflavin
|
|
73
|
+
@subject.type_identifier(:dietary_selenium).should == HKQuantityTypeIdentifierDietarySelenium
|
|
74
|
+
@subject.type_identifier(:dietary_sodium).should == HKQuantityTypeIdentifierDietarySodium
|
|
75
|
+
@subject.type_identifier(:dietary_sugar).should == HKQuantityTypeIdentifierDietarySugar
|
|
76
|
+
@subject.type_identifier(:dietary_thiamin).should == HKQuantityTypeIdentifierDietaryThiamin
|
|
77
|
+
@subject.type_identifier(:dietary_vitamin_a).should == HKQuantityTypeIdentifierDietaryVitaminA
|
|
78
|
+
@subject.type_identifier(:dietary_vitamin_b12).should == HKQuantityTypeIdentifierDietaryVitaminB12
|
|
79
|
+
@subject.type_identifier(:dietary_vitamin_b6).should == HKQuantityTypeIdentifierDietaryVitaminB6
|
|
80
|
+
@subject.type_identifier(:dietary_vitamin_c).should == HKQuantityTypeIdentifierDietaryVitaminC
|
|
81
|
+
@subject.type_identifier(:dietary_vitamin_d).should == HKQuantityTypeIdentifierDietaryVitaminD
|
|
82
|
+
@subject.type_identifier(:dietary_vitamin_e).should == HKQuantityTypeIdentifierDietaryVitaminE
|
|
83
|
+
@subject.type_identifier(:dietary_vitamin_k).should == HKQuantityTypeIdentifierDietaryVitaminK
|
|
84
|
+
@subject.type_identifier(:dietary_zinc).should == HKQuantityTypeIdentifierDietaryZinc
|
|
85
|
+
@subject.type_identifier(:sleep_analysis).should == HKCategoryTypeIdentifierSleepAnalysis
|
|
86
|
+
@subject.type_identifier(:biological_sex).should == HKCharacteristicTypeIdentifierBiologicalSex
|
|
87
|
+
@subject.type_identifier(:blood_type).should == HKCharacteristicTypeIdentifierBloodType
|
|
88
|
+
@subject.type_identifier(:date_of_birth).should == HKCharacteristicTypeIdentifierDateOfBirth
|
|
89
|
+
@subject.type_identifier(:blood_pressure).should == HKCorrelationTypeIdentifierBloodPressure
|
|
90
|
+
@subject.type_identifier(:food).should == HKCorrelationTypeIdentifierFood
|
|
91
|
+
@subject.type_identifier(:workout).should == HKWorkoutTypeIdentifier
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
end
|
metadata
CHANGED
|
@@ -1,29 +1,43 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: medic
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ryan Linton
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-
|
|
11
|
+
date: 2014-12-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
19
|
+
version: '10'
|
|
20
20
|
type: :development
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- - "
|
|
24
|
+
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
26
|
+
version: '10'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: motion-stump
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0.3'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0.3'
|
|
27
41
|
description: RubyMotion Wrapper for HealthKit
|
|
28
42
|
email:
|
|
29
43
|
- ryanl@clearsightstudio.com
|
|
@@ -33,10 +47,43 @@ extra_rdoc_files: []
|
|
|
33
47
|
files:
|
|
34
48
|
- README.md
|
|
35
49
|
- lib/medic.rb
|
|
50
|
+
- lib/medic/anchor.rb
|
|
51
|
+
- lib/medic/anchored_object_query.rb
|
|
52
|
+
- lib/medic/correlation_query.rb
|
|
53
|
+
- lib/medic/finders.rb
|
|
54
|
+
- lib/medic/hk_constants.rb
|
|
55
|
+
- lib/medic/interval.rb
|
|
36
56
|
- lib/medic/medic.rb
|
|
57
|
+
- lib/medic/observer_query.rb
|
|
58
|
+
- lib/medic/predicate.rb
|
|
59
|
+
- lib/medic/query_options.rb
|
|
60
|
+
- lib/medic/sample_query.rb
|
|
61
|
+
- lib/medic/sort.rb
|
|
62
|
+
- lib/medic/source_query.rb
|
|
63
|
+
- lib/medic/statistics_collection_query.rb
|
|
64
|
+
- lib/medic/statistics_options.rb
|
|
65
|
+
- lib/medic/statistics_query.rb
|
|
66
|
+
- lib/medic/store.rb
|
|
67
|
+
- lib/medic/types.rb
|
|
37
68
|
- lib/medic/version.rb
|
|
38
|
-
- spec/
|
|
39
|
-
|
|
69
|
+
- spec/medic/anchor.rb
|
|
70
|
+
- spec/medic/anchored_object_query_spec.rb
|
|
71
|
+
- spec/medic/correlation_query_spec.rb
|
|
72
|
+
- spec/medic/hk_constants_spec.rb
|
|
73
|
+
- spec/medic/interval_spec.rb
|
|
74
|
+
- spec/medic/medic_spec.rb
|
|
75
|
+
- spec/medic/observer_query_spec.rb
|
|
76
|
+
- spec/medic/predicate_spec.rb
|
|
77
|
+
- spec/medic/query_options_spec.rb
|
|
78
|
+
- spec/medic/sample_query_spec.rb
|
|
79
|
+
- spec/medic/sort_spec.rb
|
|
80
|
+
- spec/medic/source_query_spec.rb
|
|
81
|
+
- spec/medic/statistics_collection_query_spec.rb
|
|
82
|
+
- spec/medic/statistics_options_spec.rb
|
|
83
|
+
- spec/medic/statistics_query_spec.rb
|
|
84
|
+
- spec/medic/store_spec.rb
|
|
85
|
+
- spec/medic/types_spec.rb
|
|
86
|
+
homepage: https://github.com/ryanlntn/medic
|
|
40
87
|
licenses:
|
|
41
88
|
- MIT
|
|
42
89
|
metadata: {}
|
|
@@ -61,4 +108,20 @@ signing_key:
|
|
|
61
108
|
specification_version: 4
|
|
62
109
|
summary: A RubyMotion Wrapper for HealthKit
|
|
63
110
|
test_files:
|
|
64
|
-
- spec/
|
|
111
|
+
- spec/medic/anchor.rb
|
|
112
|
+
- spec/medic/anchored_object_query_spec.rb
|
|
113
|
+
- spec/medic/correlation_query_spec.rb
|
|
114
|
+
- spec/medic/hk_constants_spec.rb
|
|
115
|
+
- spec/medic/interval_spec.rb
|
|
116
|
+
- spec/medic/medic_spec.rb
|
|
117
|
+
- spec/medic/observer_query_spec.rb
|
|
118
|
+
- spec/medic/predicate_spec.rb
|
|
119
|
+
- spec/medic/query_options_spec.rb
|
|
120
|
+
- spec/medic/sample_query_spec.rb
|
|
121
|
+
- spec/medic/sort_spec.rb
|
|
122
|
+
- spec/medic/source_query_spec.rb
|
|
123
|
+
- spec/medic/statistics_collection_query_spec.rb
|
|
124
|
+
- spec/medic/statistics_options_spec.rb
|
|
125
|
+
- spec/medic/statistics_query_spec.rb
|
|
126
|
+
- spec/medic/store_spec.rb
|
|
127
|
+
- spec/medic/types_spec.rb
|