event_calendar_engine 0.2.1 → 0.2.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.
- data/VERSION +1 -1
- data/app/controllers/events_controller.rb +2 -2
- data/app/helpers/event_calendar/application_helper.rb +8 -8
- data/app/models/event.rb +3 -1
- data/app/views/links/_links.html.erb +1 -1
- data/spec/controllers/events_controller_spec.rb +18 -5
- data/spec/fixtures/event_calendar_events.yml +9 -0
- data/spec/fixtures/event_calendar_events_links.yml +2 -2
- data/spec/models/event_spec.rb +41 -24
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.2
|
@@ -106,7 +106,7 @@ class EventsController < EventCalendar::ApplicationController
|
|
106
106
|
# POST /events.xml
|
107
107
|
def create
|
108
108
|
@event = Event.new(params[:event])
|
109
|
-
|
109
|
+
@event.adjust_to_utc = true
|
110
110
|
respond_to do |format|
|
111
111
|
if @event.save
|
112
112
|
flash[:notice] = 'Event was successfully created.'
|
@@ -124,7 +124,7 @@ class EventsController < EventCalendar::ApplicationController
|
|
124
124
|
# PUT /events/1.xml
|
125
125
|
def update
|
126
126
|
@event = Event.find(params[:id])
|
127
|
-
|
127
|
+
@event.adjust_to_utc = true
|
128
128
|
respond_to do |format|
|
129
129
|
if @event.update_attributes(params[:event])
|
130
130
|
flash[:notice] = 'Event was successfully updated.'
|
@@ -11,14 +11,6 @@ module EventCalendar::ApplicationHelper
|
|
11
11
|
link_text = link_options.delete(:link_text) || path
|
12
12
|
highlight = wrapper_options.delete(:highlight)
|
13
13
|
|
14
|
-
unless path.blank?
|
15
|
-
if current_page?(path) && (highlight.nil? || highlight)
|
16
|
-
wrapper_options.merge!({
|
17
|
-
:class => (wrapper_options[:class] || '') + " nav_highlight"
|
18
|
-
})
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
14
|
unless wrapper_options.delete(:no_wrapper)
|
23
15
|
return content_tag(tag, wrapper_options) do
|
24
16
|
link_to(link_text, path, link_options)
|
@@ -145,6 +137,14 @@ module EventCalendar::ApplicationHelper
|
|
145
137
|
}.merge!(link_options))
|
146
138
|
end
|
147
139
|
|
140
|
+
def link_to_new_link(event, wrapper_options={}, link_options={})
|
141
|
+
return unless has_authorization?(:create, Link.new)
|
142
|
+
link_wrapper(new_event_link_path(event), wrapper_options, {
|
143
|
+
:link_text => 'New link',
|
144
|
+
:class => 'fake_button'
|
145
|
+
}.merge!(link_options))
|
146
|
+
end
|
147
|
+
|
148
148
|
def link_to_edit_link(event, link, wrapper_options={}, link_options={})
|
149
149
|
return unless has_authorization?(:update, link)
|
150
150
|
link_wrapper(edit_event_link_path(event, link), {
|
data/app/models/event.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
class Event < ActiveRecord::Base
|
2
2
|
set_table_name "event_calendar_events"
|
3
3
|
|
4
|
+
attr_accessor :adjust_to_utc
|
5
|
+
|
4
6
|
include ActionView::Helpers::TextHelper
|
5
7
|
|
6
8
|
include EventInstanceMethods
|
@@ -44,7 +46,7 @@ class Event < ActiveRecord::Base
|
|
44
46
|
end
|
45
47
|
|
46
48
|
def adjust_to_utc_from_timezone
|
47
|
-
return true
|
49
|
+
return true unless adjust_to_utc
|
48
50
|
tz_offset = start_on.in_time_zone(timezone).utc_offset
|
49
51
|
self.start_on = self.start_on - tz_offset
|
50
52
|
self.end_on = self.end_on - tz_offset
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<p><strong>Materials/Resources</strong></p>
|
2
2
|
<div id="links" class="links">
|
3
3
|
<%= render @event.links.all %>
|
4
|
-
|
4
|
+
<%= link_to_new_link(@event, {:class => 'new'}) %>
|
5
5
|
<%= render :partial => 'links/form' %>
|
6
6
|
</div>
|
@@ -11,7 +11,8 @@ describe EventsController do
|
|
11
11
|
:timezone => 'Pacific Time (US & Canada)',
|
12
12
|
:description => 'Some Description',
|
13
13
|
:location => 'Some City',
|
14
|
-
:links => mock('Relation', :build => mock_model(Link))
|
14
|
+
:links => mock('Relation', :build => mock_model(Link)),
|
15
|
+
:adjust_to_utc= => nil
|
15
16
|
})
|
16
17
|
end
|
17
18
|
let(:params) do
|
@@ -78,6 +79,7 @@ describe EventsController do
|
|
78
79
|
end
|
79
80
|
before(:each) do
|
80
81
|
event.stub(:save){ true }
|
82
|
+
event.stub(:adjust_to_utc=){ true }
|
81
83
|
subject.stub(:new){ event }
|
82
84
|
end
|
83
85
|
describe "with valid params" do
|
@@ -85,7 +87,10 @@ describe EventsController do
|
|
85
87
|
post :create, params
|
86
88
|
assigns(:event).should eq event
|
87
89
|
end
|
88
|
-
|
90
|
+
it "sets adjust_to_utc to true" do
|
91
|
+
event.should_receive(:adjust_to_utc=).with(true)
|
92
|
+
post :create, params
|
93
|
+
end
|
89
94
|
it "redirects to the created event" do
|
90
95
|
post :create, params
|
91
96
|
response.should redirect_to event_url event
|
@@ -122,13 +127,21 @@ describe EventsController do
|
|
122
127
|
before(:each) do
|
123
128
|
subject.stub(:find).with("37"){ event }
|
124
129
|
event.stub(:update_attributes){ nil }
|
125
|
-
|
126
|
-
|
130
|
+
event.stub(:adjust_to_utc=){ true }
|
131
|
+
end
|
132
|
+
it "loads the @event" do
|
127
133
|
Event.should_receive(:find).with("37"){ event }
|
134
|
+
put :update, params
|
135
|
+
assigns(:event).should eq event
|
136
|
+
end
|
137
|
+
it "sets adjust_to_utc to true" do
|
138
|
+
event.should_receive(:adjust_to_utc=).with(true)
|
139
|
+
put :update, params
|
140
|
+
end
|
141
|
+
it "updates the requested event" do
|
128
142
|
event.should_receive(:update_attributes)
|
129
143
|
put :update, params
|
130
144
|
end
|
131
|
-
|
132
145
|
it "assigns the requested event as @event" do
|
133
146
|
put :update, params
|
134
147
|
assigns(:event).should eq event
|
@@ -15,4 +15,13 @@ restorable_event:
|
|
15
15
|
location: "Portland, Oregon"
|
16
16
|
start_on: 2011-02-04 14:00:00.000000
|
17
17
|
end_on: 2011-02-04 15:00:00.000000
|
18
|
+
timezone: 'Pacific Time (US & Canada)'
|
19
|
+
|
20
|
+
linkable_event:
|
21
|
+
id: <%= Fixtures.identify :linkable_event %>
|
22
|
+
name: Linkable Event
|
23
|
+
event_type: Meeting
|
24
|
+
location: "Portland, Oregon"
|
25
|
+
start_on: 2011-02-04 14:00:00.000000
|
26
|
+
end_on: 2011-02-04 15:00:00.000000
|
18
27
|
timezone: 'Pacific Time (US & Canada)'
|
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
event_id: <%= Fixtures.identify :
|
1
|
+
linkable_event_editable_link:
|
2
|
+
event_id: <%= Fixtures.identify :linkable_event %>
|
3
3
|
link_id: <%= Fixtures.identify :editable_link %>
|
data/spec/models/event_spec.rb
CHANGED
@@ -48,29 +48,23 @@ describe Event do
|
|
48
48
|
event.should_not be_valid
|
49
49
|
end
|
50
50
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
it "end_on <= start_on" do
|
69
|
-
event.end_on = 4.hours.ago
|
70
|
-
event.one_day?.should be_true
|
71
|
-
event.valid?
|
72
|
-
event.end_on.should eq event.start_on + 1.hour
|
73
|
-
end
|
51
|
+
it "adjusts start_on and end_on to utc from timezone when adjust_to_utc == true" do
|
52
|
+
Time.zone = 'Pacific Time (US & Canada)' # mimic default rails behavior
|
53
|
+
f = '%A %B %d %Y @ %H%M'
|
54
|
+
pac_start = 2.hours.from_now
|
55
|
+
pac_end = 4.hours.from_now
|
56
|
+
event = Event.new(@valid_attributes.merge!({
|
57
|
+
:timezone => 'Pacific Time (US & Canada)',
|
58
|
+
:start_on => pac_start,
|
59
|
+
:end_on => pac_end
|
60
|
+
}))
|
61
|
+
event.save!
|
62
|
+
event.start_on.strftime(f).should eq pac_start.strftime(f)
|
63
|
+
event.end_on.strftime(f).should eq pac_end.strftime(f)
|
64
|
+
event.adjust_to_utc = true
|
65
|
+
event.save!
|
66
|
+
event.start_on.strftime(f).should eq pac_start.utc.strftime(f)
|
67
|
+
event.end_on.strftime(f).should eq pac_end.utc.strftime(f)
|
74
68
|
end
|
75
69
|
|
76
70
|
it "should find event types" do
|
@@ -101,5 +95,28 @@ describe Event do
|
|
101
95
|
event.save
|
102
96
|
event.revision_number.should == 0
|
103
97
|
end
|
104
|
-
|
98
|
+
context "setting default end_on of start_on + 1.hour if start_on is present and" do
|
99
|
+
before(:each) do
|
100
|
+
Time.zone = 'Pacific Time (US & Canada)'
|
101
|
+
end
|
102
|
+
let(:event) do
|
103
|
+
Event.new(@valid_attributes.merge!({
|
104
|
+
:timezone => 'Pacific Time (US & Canada)',
|
105
|
+
:start_on => 1.hour.from_now,
|
106
|
+
:end_on => nil
|
107
|
+
}))
|
108
|
+
end
|
109
|
+
|
110
|
+
it "end_on is blank" do
|
111
|
+
event.one_day?.should be_true
|
112
|
+
event.valid?
|
113
|
+
event.end_on.should eq event.start_on + 1.hour
|
114
|
+
end
|
115
|
+
it "end_on <= start_on" do
|
116
|
+
event.end_on = 4.hours.ago
|
117
|
+
event.one_day?.should be_true
|
118
|
+
event.valid?
|
119
|
+
event.end_on.should eq event.start_on + 1.hour
|
120
|
+
end
|
121
|
+
end
|
105
122
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: event_calendar_engine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 2
|
10
|
+
version: 0.2.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jason LaPier
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-02-
|
19
|
+
date: 2011-02-07 00:00:00 -08:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|