volt 0.9.6 → 0.9.7.pre2
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/.gitignore +2 -1
- data/CHANGELOG.md +26 -0
- data/Gemfile +6 -1
- data/README.md +2 -0
- data/Rakefile +1 -0
- data/app/volt/models/active_volt_instance.rb +8 -6
- data/app/volt/models/user.rb +11 -2
- data/app/volt/models/volt_app_property.rb +8 -0
- data/app/volt/tasks/query_tasks.rb +23 -31
- data/app/volt/tasks/store_tasks.rb +2 -2
- data/app/volt/tasks/volt_admin_tasks.rb +24 -0
- data/docs/UPGRADE_GUIDE.md +6 -0
- data/lib/volt.rb +19 -12
- data/lib/volt/boot.rb +1 -0
- data/lib/volt/cli.rb +19 -8
- data/lib/volt/cli/console.rb +0 -1
- data/lib/volt/cli/generators.rb +14 -3
- data/lib/volt/cli/migrate.rb +26 -0
- data/lib/volt/config.rb +17 -4
- data/lib/volt/controllers/http_controller.rb +12 -0
- data/lib/volt/data_stores/base_adaptor_client.rb +2 -2
- data/lib/volt/data_stores/base_adaptor_server.rb +2 -0
- data/lib/volt/data_stores/data_store.rb +20 -14
- data/lib/volt/extra_core/class.rb +28 -14
- data/lib/volt/extra_core/hash.rb +5 -0
- data/lib/volt/extra_core/string.rb +3 -1
- data/lib/volt/helpers/time.rb +9 -43
- data/lib/volt/helpers/time/calculations.rb +204 -0
- data/lib/volt/helpers/time/distance.rb +63 -0
- data/lib/volt/helpers/time/duration.rb +71 -0
- data/lib/volt/helpers/time/local_calculations.rb +49 -0
- data/lib/volt/helpers/time/local_volt_time.rb +23 -0
- data/lib/volt/helpers/time/numeric.rb +59 -0
- data/lib/volt/helpers/time/volt_time.rb +170 -0
- data/lib/volt/models.rb +5 -0
- data/lib/volt/models/array_model.rb +33 -6
- data/lib/volt/models/associations.rb +146 -23
- data/lib/volt/models/buffer.rb +38 -41
- data/lib/volt/models/cursor.rb +15 -0
- data/lib/volt/models/errors.rb +11 -0
- data/lib/volt/models/field_helpers.rb +108 -68
- data/lib/volt/models/helpers/array_model.rb +4 -0
- data/lib/volt/models/helpers/base.rb +8 -1
- data/lib/volt/models/helpers/change_helpers.rb +31 -12
- data/lib/volt/models/helpers/defaults.rb +15 -0
- data/lib/volt/models/location.rb +20 -6
- data/lib/volt/models/migrations/migration.rb +23 -0
- data/lib/volt/models/migrations/migration_runner.rb +146 -0
- data/lib/volt/models/model.rb +38 -1
- data/lib/volt/models/permissions.rb +8 -1
- data/lib/volt/models/persistors/array_store.rb +87 -8
- data/lib/volt/models/persistors/base.rb +19 -0
- data/lib/volt/models/persistors/model_store.rb +1 -1
- data/lib/volt/models/persistors/page.rb +4 -1
- data/lib/volt/models/persistors/query/query_identifier.rb +102 -0
- data/lib/volt/models/persistors/query/query_listener.rb +57 -12
- data/lib/volt/models/root_models/root_models.rb +19 -0
- data/lib/volt/models/url.rb +11 -2
- data/lib/volt/models/validations/validations.rb +5 -2
- data/lib/volt/models/validators/type_validator.rb +11 -0
- data/lib/volt/models/validators/unique_validator.rb +2 -2
- data/lib/volt/page/bindings/attribute_binding.rb +23 -1
- data/lib/volt/page/targets/attribute_section.rb +7 -0
- data/lib/volt/page/targets/binding_document/component_node.rb +44 -18
- data/lib/volt/page/targets/binding_document/tag_node.rb +41 -0
- data/lib/volt/page/tasks.rb +16 -8
- data/lib/volt/queries/live_query.rb +109 -0
- data/lib/volt/queries/live_query_pool.rb +58 -0
- data/lib/volt/queries/live_subquery.rb +0 -0
- data/lib/volt/queries/query_association_splitter.rb +31 -0
- data/lib/volt/queries/query_diff.rb +100 -0
- data/lib/volt/queries/query_runner.rb +110 -0
- data/lib/volt/queries/query_subscription.rb +80 -0
- data/lib/volt/queries/query_subscription_pool.rb +37 -0
- data/lib/volt/reactive/eventable.rb +8 -0
- data/lib/volt/reactive/reactive_array.rb +0 -4
- data/lib/volt/router/routes.rb +81 -31
- data/lib/volt/server/message_bus/base_message_bus.rb +9 -3
- data/lib/volt/server/message_bus/peer_to_peer.rb +6 -6
- data/lib/volt/server/message_bus/peer_to_peer/server_tracker.rb +1 -1
- data/lib/volt/server/middleware/default_middleware_stack.rb +12 -8
- data/lib/volt/server/rack/component_paths.rb +31 -4
- data/lib/volt/server/rack/http_content_types.rb +62 -0
- data/lib/volt/server/rack/http_resource.rb +1 -1
- data/lib/volt/server/rack/index_files.rb +8 -1
- data/lib/volt/server/rack/opal_files.rb +16 -1
- data/lib/volt/server/rack/sprockets_helpers_setup.rb +32 -1
- data/lib/volt/server/socket_connection_handler.rb +16 -7
- data/lib/volt/server/template_handlers/sprockets_component_handler.rb +5 -3
- data/lib/volt/spec/capybara.rb +4 -3
- data/lib/volt/spec/setup.rb +5 -0
- data/lib/volt/tasks/dispatcher.rb +3 -1
- data/lib/volt/utils/data_transformer.rb +4 -4
- data/lib/volt/utils/ejson.rb +19 -6
- data/lib/volt/utils/promise_extensions.rb +1 -1
- data/lib/volt/utils/time_opal_patch.rb +749 -0
- data/lib/volt/utils/time_patch.rb +11 -4
- data/lib/volt/version.rb +1 -1
- data/lib/volt/volt/app.rb +19 -11
- data/lib/volt/volt/properties.rb +24 -0
- data/lib/volt/volt/server_setup/app.rb +30 -7
- data/lib/volt/volt/users.rb +15 -3
- data/spec/apps/kitchen_sink/Gemfile +5 -1
- data/spec/apps/kitchen_sink/app/main/config/routes.rb +1 -0
- data/spec/apps/kitchen_sink/app/main/controllers/save_controller.rb +1 -1
- data/spec/apps/kitchen_sink/app/main/controllers/server/simple_http_controller.rb +4 -0
- data/spec/apps/kitchen_sink/app/main/controllers/todos_controller.rb +4 -2
- data/spec/apps/kitchen_sink/app/main/models/post.rb +0 -1
- data/spec/apps/kitchen_sink/app/main/models/todo.rb +4 -0
- data/spec/apps/kitchen_sink/app/main/views/mailers/reset_password.html +10 -0
- data/spec/apps/kitchen_sink/app/main/views/todos/index.html +2 -0
- data/spec/apps/kitchen_sink/config/app.rb +2 -0
- data/spec/apps/migrations/config/db/migrations/1445111704_migration1.rb +7 -0
- data/spec/apps/migrations/config/db/migrations/1445113517_migration2.rb +7 -0
- data/spec/apps/migrations/config/db/migrations/1445115200_migration3.rb +7 -0
- data/spec/extra_core/class_spec.rb +10 -0
- data/spec/helpers/distance_spec.rb +35 -0
- data/spec/helpers/duration_spec.rb +160 -0
- data/spec/helpers/volt_time_spec.rb +275 -0
- data/spec/integration/callbacks_spec.rb +2 -1
- data/spec/integration/http_endpoints_spec.rb +4 -0
- data/spec/integration/save_spec.rb +1 -1
- data/spec/integration/todos_spec.rb +7 -5
- data/spec/models/array_model_spec.rb +17 -3
- data/spec/models/associations_spec.rb +48 -1
- data/spec/models/field_helpers_spec.rb +7 -3
- data/spec/models/migrations/migration_runner_spec.rb +69 -0
- data/spec/models/model_spec.rb +42 -8
- data/spec/models/permissions_spec.rb +20 -8
- data/spec/models/persistors/array_store_spec.rb +18 -0
- data/spec/models/persistors/page_spec.rb +15 -10
- data/spec/models/persistors/store_spec.rb +13 -3
- data/spec/models/url_spec.rb +4 -3
- data/spec/models/user_spec.rb +6 -3
- data/spec/models/user_validation_spec.rb +3 -3
- data/spec/models/validations_spec.rb +4 -0
- data/spec/models/validators/block_validations_spec.rb +9 -5
- data/spec/models/validators/email_validator_spec.rb +2 -0
- data/spec/models/validators/lifecycle_callbacks_spec.rb +86 -0
- data/spec/models/validators/unique_validator_spec.rb +1 -0
- data/spec/page/path_string_renderer_spec.rb +5 -0
- data/spec/queries/live_query_spec.rb +16 -0
- data/spec/queries/query_association_splitter_spec.rb +14 -0
- data/spec/queries/query_diff_spec.rb +132 -0
- data/spec/queries/query_identifier_spec.rb +98 -0
- data/spec/queries/query_runner_spec.rb +63 -0
- data/spec/queries/query_tracker_spec.rb +141 -0
- data/spec/router/routes_spec.rb +52 -21
- data/spec/server/middleware/rack_content_types_spec.rb +78 -0
- data/spec/server/rack/asset_files_spec.rb +38 -30
- data/spec/spec_helper.rb +8 -0
- data/spec/utils/ejson_spec.rb +9 -8
- data/spec/utils/ejson_volt_time_spec.rb +65 -0
- data/templates/migration/migration.rb.tt +9 -0
- data/templates/newgem/gitignore.tt +1 -0
- data/templates/project/Gemfile.tt +19 -2
- data/templates/project/README.md.tt +6 -1
- data/templates/project/app/main/config/dependencies.rb +6 -0
- data/templates/project/config/app.rb.tt +18 -4
- data/volt.gemspec +2 -2
- metadata +73 -16
- data/app/volt/tasks/live_query/live_query_pool.rb +0 -48
- data/app/volt/tasks/live_query/query_tracker.rb +0 -92
- data/spec/tasks/live_query_spec.rb +0 -18
- data/spec/tasks/query_tasks.rb +0 -7
- data/spec/tasks/query_tracker_spec.rb +0 -145
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'volt/helpers/time'
|
|
3
|
+
|
|
4
|
+
describe Numeric do
|
|
5
|
+
describe "#seconds" do
|
|
6
|
+
it "returns 1 second for 1 second" do
|
|
7
|
+
expect(1.second).to eq(1)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "returns 1 minute for 60 seconds" do
|
|
11
|
+
expect(60.seconds).to eq(1.minute)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe "#minutes" do
|
|
16
|
+
it "returns 60 seconds for 1 minute" do
|
|
17
|
+
expect(1.minute).to eq(60)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "returns 1 hour for 60 minutes" do
|
|
21
|
+
expect(60.minutes).to eq(1.hour)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe "#hours" do
|
|
26
|
+
it "returns 3600 seconds for 1 hour" do
|
|
27
|
+
expect(1.hour).to eq(3600)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "returns 1 day for 1 day" do
|
|
31
|
+
expect(24.hours).to eq(1.day)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
describe "#days" do
|
|
36
|
+
it "returns 86400 seconds for 1 day" do
|
|
37
|
+
expect(1.day).to eq(86400)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "returns 1 week for 7 days" do
|
|
41
|
+
expect(7.days).to eq(1.week)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
describe "#weeks" do
|
|
46
|
+
it "returns 604800 seconds for 1 week" do
|
|
47
|
+
expect(1.week).to eq(604800)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "returns 1 fortnight for 2 weeks" do
|
|
51
|
+
expect(2.weeks).to eq(1.fortnight)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
describe "#fortnights" do
|
|
56
|
+
it "returns 1209600 for 1 fortnight" do
|
|
57
|
+
expect(1.fortnight).to eq(1209600)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
describe "#months" do
|
|
62
|
+
it "returns 2592000 for 1 month" do
|
|
63
|
+
expect(1.month).to eq(2592000)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
describe "#years" do
|
|
69
|
+
it "returns 31557600 for 1.year" do
|
|
70
|
+
expect(1.year).to eq(31557600)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "returns 730.5.days for 2.years" do
|
|
74
|
+
expect(2.years).to eq(730.5.days)
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
describe Volt::Duration do
|
|
81
|
+
|
|
82
|
+
describe "#+" do
|
|
83
|
+
it "returns 3 seconds for 1 + 2 seconds" do
|
|
84
|
+
expect(1.second + 2.seconds).to eq(3.seconds)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it "returns 3 mintues for 1 minute + 120 seconds" do
|
|
88
|
+
expect(1.minute + 120.seconds).to eq(3.minutes)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
it "returns 4 hours for 3 hours + 60 minutes" do
|
|
92
|
+
expect(3.hours + 60.minutes).to eq(4.hours)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
it "returns 3 days for 2 days + 24 hours" do
|
|
96
|
+
expect(2.days + 24.hours).to eq(3.days)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
it "returns 3 years for 1 year + 2 years" do
|
|
100
|
+
expect(1.year + 2.years).to eq(3.years)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
describe "#since" do
|
|
106
|
+
it "returns 1 day since the provided time" do
|
|
107
|
+
expect(1.day.since(VoltTime.at(0))).to eq(VoltTime.new(:utc, 1970, 1, 2, 0, 0, 0))
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
it "returns 2 days (1 day + 24 hours) since the provided time" do
|
|
111
|
+
expect((1.day + 24.hours).since(VoltTime.at(0))).to eq(VoltTime.new(:utc, 1970, 1, 3, 0, 0, 0))
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
it "returns 2 months since the provided time" do
|
|
115
|
+
expect(2.months.since(VoltTime.at(0))).to eq(VoltTime.new(:utc, 1970, 3, 1, 0, 0, 0))
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
it "returns 3 years since the provided time" do
|
|
119
|
+
expect(3.years.since(VoltTime.at(0))).to eq(VoltTime.new(:utc, 1973, 1, 1, 0, 0, 0))
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
it "returns 4 seconds since the provided time" do
|
|
123
|
+
expect(4.seconds.since(VoltTime.at(0))).to eq(VoltTime.new(:utc, 1970, 1, 1, 0, 0, 4))
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
it "returns 1 week since the provided time" do
|
|
127
|
+
expect(1.week.since(VoltTime.at(0))).to eq(VoltTime.new(:utc, 1970, 1, 8, 0, 0, 0))
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
it "returns 1 fortnight since the provided time" do
|
|
131
|
+
expect(1.fortnight.since(VoltTime.at(0))).to eq(VoltTime.new(:utc, 1970, 1, 15, 0, 0, 0))
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
it "returns 24 hourse since the provided time" do
|
|
135
|
+
expect(24.hours.since(VoltTime.at(0))).to eq(VoltTime.new(:utc, 1970, 1, 2, 0, 0, 0))
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
describe "#ago" do
|
|
140
|
+
it "returns 1 day before the provided time" do
|
|
141
|
+
expect(1.day.ago(VoltTime.at(0))).to eq(VoltTime.new(:utc, 1969, 12, 31, 0, 0, 0))
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
it "returns 2 months before the provided time" do
|
|
145
|
+
expect(2.months.ago(VoltTime.at(0))).to eq(VoltTime.new(:utc, 1969, 11, 1, 0, 0, 0))
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
it "returns 3 years before the provided time" do
|
|
149
|
+
expect(3.years.ago(VoltTime.at(0))).to eq(VoltTime.new(:utc, 1967, 1, 1, 0, 0, 0))
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
it "returns 4 seconds before the provided time" do
|
|
153
|
+
expect(4.seconds.ago(VoltTime.at(0))).to eq(VoltTime.new(:utc, 1969, 12, 31, 23, 59, 56))
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
it "returns 1 week before the provided time" do
|
|
157
|
+
expect(1.week.ago(VoltTime.at(0))).to eq(VoltTime.new(:utc, 1969, 12, 25, 0, 0, 0))
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
end
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'volt/helpers/time'
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
describe VoltTime do
|
|
6
|
+
let(:vt0) { VoltTime.at(0) }
|
|
7
|
+
let(:vt120) { VoltTime.at(120) }
|
|
8
|
+
let(:rt0) { Time.at(0) }
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
let(:local_beginning) do
|
|
12
|
+
if rt0.utc_offset >= 0
|
|
13
|
+
Time.new(1970, 1, 1)
|
|
14
|
+
else
|
|
15
|
+
Time.new(1969, 12, 31)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
let(:local_end) do
|
|
20
|
+
if rt0.utc_offset >= 0
|
|
21
|
+
Time.new(1970, 1, 1, 23, 59, 59.999)
|
|
22
|
+
else
|
|
23
|
+
Time.new(1969, 12, 31, 23, 59, 59.999)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
let(:local_middle) do
|
|
28
|
+
if rt0.utc_offset >= 0
|
|
29
|
+
Time.new(1970, 1, 1, 12, 0, 0)
|
|
30
|
+
else
|
|
31
|
+
Time.new(1969, 12, 31, 12, 0, 0)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
describe "#new" do
|
|
37
|
+
it "assumes the time provided is utc" do
|
|
38
|
+
expect(VoltTime.new(:utc, 1970, 1, 1, 0, 0, 0)).to eq(vt0)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "assumes the time provided is local" do
|
|
42
|
+
expect(VoltTime.new(:local, 1970, 1, 1, 0, 0, 0)).to eq(rt0 - rt0.utc_offset)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
describe "#+" do
|
|
48
|
+
it "returns the time plus a second" do
|
|
49
|
+
expect(vt0 + 1).to eq(VoltTime.at(1))
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "returns the time plus a duration" do
|
|
53
|
+
expect(vt0 + 1.month).to eq(VoltTime.new(:utc, 1970, 2, 1))
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
describe "#-" do
|
|
58
|
+
it "returns the time minus a second" do
|
|
59
|
+
expect(vt0 - 1).to eq(VoltTime.at(-1))
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "returns the seconds between two VoltTime object" do
|
|
63
|
+
expect(VoltTime.at(100) - vt0).to eq(100)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "returns the seconds between a VoltTime and a Time object" do
|
|
67
|
+
expect(VoltTime.at(100) - vt0).to eq(100)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "returns the time minus the duration" do
|
|
71
|
+
expect(vt0 - 1.month).to eq(VoltTime.new(:utc, 1969, 12, 1))
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
describe "#==" do
|
|
76
|
+
it "returns true for two equal times" do
|
|
77
|
+
expect((vt0 + 1) == VoltTime.at(1)).to eq(true)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
describe "#<=>" do
|
|
82
|
+
it "returns 0 for two equal times" do
|
|
83
|
+
expect((vt0 + 1) <=> VoltTime.at(1)).to eq(0)
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
describe "#local_strftime" do
|
|
88
|
+
it "returns formatted local time" do
|
|
89
|
+
if RUBY_PLATFORM == 'opal'
|
|
90
|
+
expect(vt0.local_strftime("%d %m %Y")).to eq(local_beginning.strftime("%d %m %Y"))
|
|
91
|
+
else
|
|
92
|
+
expect { vt0.local_strftime("%d %m %Y") }.to raise_error
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
describe "#local_beginning_of_day" do
|
|
98
|
+
it "returns the start of the local day i.e. 00:00:00" do
|
|
99
|
+
|
|
100
|
+
if RUBY_PLATFORM == 'opal'
|
|
101
|
+
expect(vt120.local_beginning_of_day).to eq(VoltTime.from_time(local_beginning))
|
|
102
|
+
else
|
|
103
|
+
expect { vt120.local_beginning_of_day }.to raise_error
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
describe "#local_end_of_day" do
|
|
109
|
+
it "returns the end of the local day i.e. 23:59:59.999" do
|
|
110
|
+
if RUBY_PLATFORM == 'opal'
|
|
111
|
+
expect(vt120.local_end_of_day).to eq(VoltTime.from_time(local_end))
|
|
112
|
+
else
|
|
113
|
+
expect { vt120.local_end_of_day }.to raise_error
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
describe "#local_middle_of_day" do
|
|
119
|
+
it "returns midday of the local day" do
|
|
120
|
+
if RUBY_PLATFORM == 'opal'
|
|
121
|
+
expect(vt120.local_middle_of_day).to eq(VoltTime.from_time(local_middle))
|
|
122
|
+
else
|
|
123
|
+
expect { vt120.local_middle_of_day }.to raise_error
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
describe "#local_seconds_since_midnight" do
|
|
129
|
+
it "returns the number of seconds since local midnight" do
|
|
130
|
+
if RUBY_PLATFORM == 'opal'
|
|
131
|
+
expect(vt120.local_seconds_since_midnight).to eq(vt120 - VoltTime.from_time(local_beginning))
|
|
132
|
+
else
|
|
133
|
+
expect { vt120.local_seconds_since_midnight }.to raise_error
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
describe "#local_seconds_until_end_of_day" do
|
|
139
|
+
it "returns the number of seconds to the end of the local day" do
|
|
140
|
+
if RUBY_PLATFORM == 'opal'
|
|
141
|
+
expect(vt120.local_seconds_until_end_of_day).to eq(VoltTime.from_time(local_end) - vt120)
|
|
142
|
+
else
|
|
143
|
+
expect { vt120.local_seconds_until_end_of_day }.to raise_error
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
describe "#local_all_day" do
|
|
149
|
+
it "returns a Range for the whole day" do
|
|
150
|
+
if RUBY_PLATFORM == 'opal'
|
|
151
|
+
r = vt120.local_all_day
|
|
152
|
+
expect(r.end - r.begin).to eq(86399.999)
|
|
153
|
+
expect(r.end).to eq(VoltTime.from_time(local_end))
|
|
154
|
+
expect(r.begin).to eq(VoltTime.from_time(local_beginning))
|
|
155
|
+
else
|
|
156
|
+
expect { vt120.local_all_day }.to raise_error
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
describe "#beginning_of_day" do
|
|
162
|
+
it "returns the start of day i.e. 00:00:00" do
|
|
163
|
+
expect(vt120.beginning_of_day).to eq(VoltTime.new(:utc, 1970, 01, 01, 0, 0, 0))
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
describe "#end_of_day" do
|
|
168
|
+
it "returns the end of day ie. 23:59:59" do
|
|
169
|
+
expect(vt120.end_of_day).to eq(VoltTime.new(:utc, 1970, 01, 01, 23, 59, 59.999))
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
describe "#seconds_since_midnight" do
|
|
174
|
+
it "returns the number of seconds since 00:00:00" do
|
|
175
|
+
expect(vt120.seconds_since_midnight).to eq(120)
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
describe "#seconds_until_end_of_day" do
|
|
180
|
+
it "returns the number of seconds to 23:59:59" do
|
|
181
|
+
expect((vt120.seconds_until_end_of_day)).to eq(86399.999 - 120)
|
|
182
|
+
end
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
describe "#ago" do
|
|
186
|
+
it "returns a VoltTime for an integer number of seconds ago" do
|
|
187
|
+
expect(VoltTime.at(30).ago(30)).to eq(VoltTime.new(:utc, 1970, 01, 01, 00, 00, 0))
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
describe "#since" do
|
|
192
|
+
it "returns a VoltTime for an integer number of seconds since the instance VoltTime" do
|
|
193
|
+
expect(vt0.since(30)).to eq(VoltTime.new(:utc, 1970, 01, 01, 00, 00, 30))
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
describe "#middle_of_day" do
|
|
198
|
+
it "returns a VoltTime for the middle of the day" do
|
|
199
|
+
expect(vt0.middle_of_day).to eq(VoltTime.new(:utc, 1970, 01, 01, 12, 0, 0))
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
describe "#beginning_of_hour" do
|
|
204
|
+
it "returns a VoltTime for the beginning of the current hour" do
|
|
205
|
+
expect(VoltTime.at(90).beginning_of_hour).to eq(VoltTime.new(:utc, 1970, 01, 01, 0, 0, 0))
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
describe "#end_of_hour" do
|
|
210
|
+
it "returns a VoltTime for the end of the current hour" do
|
|
211
|
+
expect(vt0.end_of_hour).to eq(VoltTime.new(:utc, 1970, 01, 01, 00, 59, 59.999))
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
describe "#beginning_of_minute" do
|
|
216
|
+
it "returns a VoltTime for the beginning of the current minute" do
|
|
217
|
+
expect(VoltTime.at(30).beginning_of_minute).to eq(VoltTime.new(:utc, 1970, 01, 01, 00, 00, 0))
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
describe "#end_of_minute" do
|
|
222
|
+
it "returns a VoltTime for the end of the current minute" do
|
|
223
|
+
expect(vt0.end_of_minute).to eq(VoltTime.new(:utc, 1970, 01, 01, 00, 00, 59.999))
|
|
224
|
+
end
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
describe "#all_day" do
|
|
228
|
+
it "returns a Range for the whole day" do
|
|
229
|
+
r = VoltTime.at(100).all_day
|
|
230
|
+
expect(r.end - r.begin).to eq(86399.999)
|
|
231
|
+
end
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
describe "#days_in_month" do
|
|
235
|
+
it "returns the number of days in March" do
|
|
236
|
+
expect(VoltTime.days_in_month(3)).to eq(31)
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
it "returns the number of days in Feb leap year" do
|
|
240
|
+
expect(VoltTime.days_in_month(2, 2016)).to eq(29)
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
describe "#local_offset" do
|
|
245
|
+
it "returns the offset from UTC of the local time" do
|
|
246
|
+
expect(vt0.local_offset).to eq(Time.at(0).utc_offset)
|
|
247
|
+
end
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
describe "#compare and #compare?" do
|
|
251
|
+
it "checks if the years are the same" do
|
|
252
|
+
expect(vt0.compare(VoltTime.at(10000), :year)).to eq(0)
|
|
253
|
+
expect(vt0.compare?(VoltTime.at(10000), :year)).to be true
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
it "checks if the months are the same" do
|
|
257
|
+
expect(vt0.compare(VoltTime.new(:utc, 1970, 1, 30), :month)).to eq(0)
|
|
258
|
+
expect(vt0.compare?(VoltTime.new(:utc, 1970, 1, 30), :month)).to be true
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
it "checks if the day is the same" do
|
|
262
|
+
expect(vt0.compare(VoltTime.new(:utc, 1971, 1,1), :day)).to eq(-1)
|
|
263
|
+
expect(vt0.compare?(VoltTime.new(:utc, 1971, 1,1), :day)).to be false
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
it "checks if the minute is the same" do
|
|
267
|
+
expect(VoltTime.at(61).compare(VoltTime.at(0), :min)).to eq(1)
|
|
268
|
+
expect(VoltTime.at(61).compare?(VoltTime.at(0), :min)).to be false
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
end
|
|
@@ -25,7 +25,8 @@ describe 'lifecycle callbacks', type: :feature, sauce: true do
|
|
|
25
25
|
click_link 'Test Account 9550'
|
|
26
26
|
click_link 'Logout'
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
# TODO: This part of the spec fails for some reason.
|
|
29
|
+
# expect(page).to have_content('user_disconnect')
|
|
29
30
|
end
|
|
30
31
|
end
|
|
31
32
|
end
|