agenda-libre-ruby/test/models/event_test.rb

124 lines
3.3 KiB
Ruby
Raw Normal View History

2013-12-28 23:45:13 +01:00
require 'test_helper'
# Test events, which are the application central part
2013-12-28 23:45:13 +01:00
class EventTest < ActiveSupport::TestCase
2014-09-02 01:02:51 +02:00
setup do
ActionMailer::Base.default_url_options[:host] = 'localhost:3000'
2014-09-02 01:02:51 +02:00
@event = events :one
end
test 'basic event' do
@event = Event.new(
title: 'hello world',
start_time: Time.zone.now,
end_time: Time.zone.now + 1.hour,
description: 'et hop!',
city: City.first,
region: Region.first,
2014-05-26 01:06:43 +02:00
url: 'http://example.com',
2014-05-31 23:13:43 +02:00
contact: 'contact@example.com',
submitter: 'submitter@example.com',
tag_list: 'hello world'
)
assert_difference 'Event.count' do
assert @event.save, @event.errors.messages
end
assert_equal 32, @event.secret.size
assert_equal 32, @event.moderator_mail_id.size
assert_equal 32, @event.submitter_mail_id.size
2014-05-31 23:13:43 +02:00
end
test 'validations' do
2014-05-31 23:13:43 +02:00
@event = Event.new(
title: 'hello world',
start_time: Time.zone.now,
end_time: Time.zone.now + 1.hour,
2014-05-31 23:13:43 +02:00
description: 'et hop!',
city: City.first,
region: Region.first,
2014-05-31 23:13:43 +02:00
url: 'http://example.com',
contact: 'contact@example.com',
tag_list: 'hello world'
2014-05-31 23:13:43 +02:00
)
assert @event.valid?, @event.errors.messages
assert_equal @event.contact, @event.submitter
2019-04-19 14:25:26 +02:00
@event.contact = 'hop'
2018-07-08 16:19:39 +02:00
assert_not @event.valid?, @event.errors.messages
2014-05-31 23:13:43 +02:00
@event.contact = 'contact@example.com'
assert @event.valid?, @event.errors.messages
2014-05-26 01:06:43 +02:00
# Check invalid url
@event.url = 'htt://truc.com'
2018-07-08 16:19:39 +02:00
assert_not @event.valid?, @event.errors.messages
2014-05-26 01:06:43 +02:00
@event.url = 'http:/truc.com'
2018-07-08 16:19:39 +02:00
assert_not @event.valid?, @event.errors.messages
end
test 'moderation' do
@event = Event.new(
title: 'hello world',
start_time: Time.zone.now,
end_time: Time.zone.now + 1.hour,
description: 'et hop!',
city: City.first,
region: Region.first,
url: 'http://example.com',
contact: 'contact@example.com',
tag_list: 'hello world'
)
assert @event.save, @event.errors.messages
2018-05-23 09:25:12 +02:00
assert_not @event.moderated?
2014-09-02 01:02:51 +02:00
@event.update moderated: 1
assert @event.moderated?, @event.errors.messages
end
2014-09-02 01:02:51 +02:00
test 'named scope future.daylimit' do
2014-09-05 22:15:38 +02:00
assert Event.respond_to? :future
assert Event.respond_to? :daylimit
2017-11-11 12:44:09 +01:00
assert_match(/<= end_time/, Event.future.daylimit(nil).to_sql)
assert_match(/end_time <=/, Event.future.daylimit(nil).to_sql)
2014-09-02 01:02:51 +02:00
end
test 'named scope year' do
assert Event.respond_to? :year
2017-11-11 12:44:09 +01:00
assert_match(/<= end_time/, Event.year(2014).to_sql)
assert_match(/start_time <=/, Event.year(2014).to_sql)
2014-09-02 01:02:51 +02:00
end
test 'named scope region' do
assert Event.respond_to? :region
assert_not_nil Event.region Region.first.id
end
2014-09-02 01:02:51 +02:00
test 'geo data reset' do
# Setup geo data
@event.latitude = 3
@event.longitude = 3
# Change address to ensure geo data is reset
@event.address = 'hello world'
2014-09-25 19:14:16 +02:00
assert @event.valid?, @event.errors.messages
2014-09-02 01:02:51 +02:00
assert @event.save
assert_equal 40.7143528, @event.latitude
assert_equal(-74.0059731, @event.longitude)
2014-09-02 01:02:51 +02:00
end
test 'full address' do
@event.address = 'hello'
@event.city = 'world'
2017-07-06 14:27:08 +02:00
@event.region.name = 'here'
@event.region.code = 'xyz'
assert_equal 'hello, world, here, France', @event.full_address
2014-09-02 01:02:51 +02:00
end
2013-12-28 23:45:13 +01:00
end