prayer_times 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +3 -0
- data/.travis.yml +17 -1
- data/.yardopts +5 -0
- data/Gemfile +27 -1
- data/Guardfile +5 -0
- data/{LICENSE.txt → LICENSE.md} +0 -0
- data/README.md +2 -2
- data/Rakefile +8 -9
- data/lib/prayer_times.rb +13 -13
- data/lib/prayer_times/calculator.rb +2 -2
- data/lib/prayer_times/constants.rb +4 -4
- data/lib/prayer_times/setters.rb +10 -7
- data/lib/prayer_times/version.rb +3 -2
- data/prayer_times.gemspec +8 -14
- data/spec/helper.rb +29 -0
- data/spec/prayer_times/calculation_method_spec.rb +58 -0
- data/spec/prayer_times/calculation_methods_spec.rb +38 -0
- data/spec/prayer_times/calculation_spec.rb +159 -0
- data/spec/prayer_times/calculator_spec.rb +17 -0
- data/spec/prayer_times/math_helpers_spec.rb +47 -0
- data/spec/prayer_times/prayer_times_spec.rb +24 -0
- data/spec/prayer_times/setters_spec.rb +106 -0
- data/spec/prayer_times/version_spec.rb +10 -0
- metadata +31 -84
- data/test/lib/prayer_times/calculation_method_test.rb +0 -58
- data/test/lib/prayer_times/calculation_methods_test.rb +0 -40
- data/test/lib/prayer_times/calculation_test.rb +0 -159
- data/test/lib/prayer_times/calculator_test.rb +0 -17
- data/test/lib/prayer_times/math_helpers_test.rb +0 -47
- data/test/lib/prayer_times/prayer_times_test.rb +0 -24
- data/test/lib/prayer_times/setters_test.rb +0 -106
- data/test/lib/prayer_times/version_test.rb +0 -10
- data/test/test_helper.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23668ebb639089cdf8451c9c5ffa42702358680a
|
4
|
+
data.tar.gz: cc3dbd842147e4913521cd9ca5f569137bde6075
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7374364717287c1dc0edd83b2f96325c57d50496b3dc59e8c9b8f98c67a2fd4e74a67dccdde8e2d435e6782e28dfd5cd96ed9c399dfef821415e8255f1f2feb3
|
7
|
+
data.tar.gz: 76e797a4aa71a5662ba2b8bdc0c1831a2627073abd7a51c7b2a223845c2c97a64f7624d7955d55140e592c361b341497a3cb0bcd068f3ec1b21aee36aa1e0685
|
data/.rspec
ADDED
data/.travis.yml
CHANGED
@@ -1,7 +1,23 @@
|
|
1
|
+
bundler_args: --without development
|
1
2
|
language: ruby
|
2
3
|
rvm:
|
3
|
-
- 1.9.3
|
4
4
|
- 1.9.2
|
5
|
+
- 1.9.3
|
6
|
+
- 2.0.0
|
7
|
+
- 2.1
|
8
|
+
- rbx-2
|
5
9
|
- jruby-19mode
|
6
10
|
- ruby-head
|
7
11
|
- jruby-head
|
12
|
+
matrix:
|
13
|
+
include:
|
14
|
+
- rvm: jruby-19mode
|
15
|
+
env: JRUBY_OPTS="$JRUBY_OPTS --debug"
|
16
|
+
- rvm: jruby-head
|
17
|
+
env: JRUBY_OPTS="$JRUBY_OPTS --debug"
|
18
|
+
allow_failures:
|
19
|
+
- rvm: jruby-19mode
|
20
|
+
- rvm: jruby-head
|
21
|
+
- rvm: rbx-2
|
22
|
+
- rvm: ruby-head
|
23
|
+
fast_finish: true
|
data/.yardopts
ADDED
data/Gemfile
CHANGED
@@ -1,4 +1,30 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
|
3
|
+
gem 'jruby-openssl', :platforms => :jruby
|
4
|
+
gem 'rake'
|
5
|
+
gem 'yard'
|
6
|
+
|
7
|
+
group :development do
|
8
|
+
gem 'pry'
|
9
|
+
gem 'pry-remote'
|
10
|
+
gem 'pry-nav'
|
11
|
+
platforms :ruby_19, :ruby_20, :ruby_21 do
|
12
|
+
gem 'redcarpet'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
group :test do
|
17
|
+
gem 'coveralls', '~> 0.7', :require => false
|
18
|
+
gem 'rspec', '>= 2.14'
|
19
|
+
gem 'rspec-nc'
|
20
|
+
gem 'rubocop', '>= 0.2', :platforms => [:ruby_19, :ruby_20, :ruby_21]
|
21
|
+
gem 'simplecov', '~> 0.9', :require => false
|
22
|
+
if RUBY_VERSION >= "1.9.3"
|
23
|
+
gem 'guard', '~> 2.6'
|
24
|
+
gem 'guard-rspec', '~> 4.2'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
# Specify your gem's dependencies in feedlr.gemspec
|
4
30
|
gemspec
|
data/Guardfile
ADDED
data/{LICENSE.txt → LICENSE.md}
RENAMED
File without changes
|
data/README.md
CHANGED
@@ -45,7 +45,7 @@ There are [several methods](https://github.com/Startappz/prayer_times/wiki/Calcu
|
|
45
45
|
```ruby
|
46
46
|
PrayerTimes.calculation_methods
|
47
47
|
PrayerTimes.calculation_methods.names
|
48
|
-
PrayerTimes.calculation_methods.add("Test", "Testing method", fajr: 16.5, asr: 'Hanafi', isha: '80 min')
|
48
|
+
PrayerTimes.calculation_methods.add("Test", "Testing method", fajr: 16.5, asr: 'Hanafi', isha: '80 min')
|
49
49
|
new_method = PrayerTimes.calculation_methods["Test"]
|
50
50
|
new_method.description = "new description"
|
51
51
|
new_method.settings = {fajr: 19.5, isha: '33 min'}
|
@@ -70,7 +70,7 @@ pt = PrayerTimes.new("Makkah", options)
|
|
70
70
|
|
71
71
|
## Help
|
72
72
|
|
73
|
-
Your help is appreciated, specially in adjusting the calculation methods and making them more accurate.
|
73
|
+
Your help is appreciated, specially in adjusting the calculation methods and making them more accurate.
|
74
74
|
Your contribution is welcome.
|
75
75
|
|
76
76
|
## Contributing
|
data/Rakefile
CHANGED
@@ -1,11 +1,10 @@
|
|
1
|
-
require
|
2
|
-
require '
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
require 'rspec/core/rake_task'
|
2
|
+
require 'bundler/gem_tasks'
|
3
|
+
|
4
|
+
# Default directory to look in is `/specs`
|
5
|
+
# Run with `rake spec`
|
6
|
+
RSpec::Core::RakeTask.new(:spec) do |task|
|
7
|
+
task.rspec_opts = ['--color', '--format', 'doc']
|
8
8
|
end
|
9
|
-
|
10
|
-
task :default => :test
|
11
9
|
|
10
|
+
task :default => :spec
|
data/lib/prayer_times.rb
CHANGED
@@ -1,24 +1,25 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
require 'date'
|
3
3
|
require 'forwardable'
|
4
|
-
require_relative
|
5
|
-
require_relative
|
6
|
-
require_relative
|
7
|
-
require_relative
|
8
|
-
require_relative
|
9
|
-
require_relative
|
10
|
-
require_relative
|
11
|
-
require_relative
|
4
|
+
require_relative 'prayer_times/version'
|
5
|
+
require_relative 'prayer_times/constants'
|
6
|
+
require_relative 'prayer_times/math_helpers'
|
7
|
+
require_relative 'prayer_times/calculation_method'
|
8
|
+
require_relative 'prayer_times/calculation_methods'
|
9
|
+
require_relative 'prayer_times/setters'
|
10
|
+
require_relative 'prayer_times/calculator'
|
11
|
+
require_relative 'prayer_times/calculation'
|
12
12
|
|
13
13
|
module PrayerTimes #:nodoc:
|
14
14
|
class << self
|
15
15
|
include Setters
|
16
16
|
|
17
17
|
attr_reader :iterations_count, :times_names, :calculation_methods,
|
18
|
-
:calculation_method
|
18
|
+
:calculation_method, :time_format, :time_suffixes, :times_offsets,
|
19
19
|
:invalid_time
|
20
|
+
|
20
21
|
# @see Calculator initializer
|
21
|
-
def new(calc_method
|
22
|
+
def new(calc_method = @calucation_method, opts = {})
|
22
23
|
PrayerTimes::Calculator.new(calc_method, opts)
|
23
24
|
end
|
24
25
|
|
@@ -28,8 +29,8 @@ module PrayerTimes #:nodoc:
|
|
28
29
|
|
29
30
|
def set_attributes
|
30
31
|
attrs = [:iterations_count, :times_names, :time_format,
|
31
|
-
:time_suffixes
|
32
|
-
attrs.each {|attr|
|
32
|
+
:time_suffixes, :times_offsets, :invalid_time]
|
33
|
+
attrs.each { |attr| send "#{attr}=", nil }
|
33
34
|
|
34
35
|
@calculation_methods = CalculationMethods.new
|
35
36
|
|
@@ -38,5 +39,4 @@ module PrayerTimes #:nodoc:
|
|
38
39
|
end
|
39
40
|
|
40
41
|
set_attributes
|
41
|
-
|
42
42
|
end
|
@@ -32,16 +32,16 @@ module PrayerTimes
|
|
32
32
|
@time_format = '24h'
|
33
33
|
|
34
34
|
# Determines the accepted time format values
|
35
|
-
@accepted_time_formats =
|
35
|
+
@accepted_time_formats = %w(12h 24h 12hNS Float)
|
36
36
|
|
37
37
|
# Times suffixes names to be displayed
|
38
|
-
@time_suffixes=
|
38
|
+
@time_suffixes = { am: 'AM', pm: 'PM' }
|
39
39
|
|
40
40
|
# What to display when the time is invalid
|
41
|
-
@invalid_time=
|
41
|
+
@invalid_time = '-----'
|
42
42
|
|
43
43
|
# Time offsets
|
44
|
-
@times_offsets = @times_names.keys.
|
44
|
+
@times_offsets = @times_names.keys.reduce({}) { |a, e| a.merge!(e => 0) }
|
45
45
|
|
46
46
|
class << self
|
47
47
|
attr_reader :iterations_count, :times_names,
|
data/lib/prayer_times/setters.rb
CHANGED
@@ -7,7 +7,8 @@ module PrayerTimes
|
|
7
7
|
# @param [Integer] num
|
8
8
|
# 0 < num < 6
|
9
9
|
def iterations_count=(num)
|
10
|
-
@iterations_count =
|
10
|
+
@iterations_count =
|
11
|
+
if (Constants.accepted_iterations_count_range).include?(num)
|
11
12
|
num
|
12
13
|
else
|
13
14
|
const_class.iterations_count
|
@@ -21,7 +22,8 @@ module PrayerTimes
|
|
21
22
|
# '12hNS': 12-hour format with no suffix,
|
22
23
|
# 'Float': floating point number
|
23
24
|
def time_format=(format)
|
24
|
-
@time_format =
|
25
|
+
@time_format =
|
26
|
+
if Constants.accepted_time_formats.include?(format)
|
25
27
|
format
|
26
28
|
else
|
27
29
|
const_class.time_format
|
@@ -37,28 +39,29 @@ module PrayerTimes
|
|
37
39
|
# Sets times suffixes
|
38
40
|
# @param [Hash] suffixes
|
39
41
|
def time_suffixes=(suffixes)
|
40
|
-
s = suffixes.reject{|k,v| !(const_class.time_suffixes.key?(k)
|
42
|
+
s = suffixes.reject { |k, v| !(const_class.time_suffixes.key?(k) && v.is_a?(String)) } rescue {}
|
41
43
|
@time_suffixes = const_class.time_suffixes.merge(s)
|
42
44
|
end
|
43
45
|
|
44
46
|
# Sets times names
|
45
47
|
# @param [Hash] names
|
46
48
|
def times_names=(names)
|
47
|
-
s = names.reject{|k,v| !(const_class.times_names.key?(k)
|
49
|
+
s = names.reject { |k, v| !(const_class.times_names.key?(k) && v.is_a?(String)) } rescue {}
|
48
50
|
@times_names = const_class.times_names.merge(s)
|
49
51
|
end
|
50
52
|
|
51
53
|
# Sets times offsets
|
52
54
|
# @param [Hash] offsets
|
53
55
|
def times_offsets=(offsets)
|
54
|
-
s = offsets.reject{|k,v| !(const_class.times_offsets.key?(k)
|
56
|
+
s = offsets.reject { |k, v| !(const_class.times_offsets.key?(k) && v.is_a?(Numeric)) } rescue {}
|
55
57
|
@times_offsets = const_class.times_offsets.merge(s)
|
56
58
|
end
|
57
59
|
|
58
|
-
# Sets calculation method
|
60
|
+
# Sets calculation method && the corresponding settings
|
59
61
|
# @param [String] calc_method the method name
|
60
62
|
def calculation_method=(calc_method)
|
61
|
-
@calculation_method =
|
63
|
+
@calculation_method =
|
64
|
+
if PrayerTimes.calculation_methods.key?(calc_method)
|
62
65
|
const_class.calculation_methods[calc_method]
|
63
66
|
else
|
64
67
|
PrayerTimes.calculation_method
|
data/lib/prayer_times/version.rb
CHANGED
data/prayer_times.gemspec
CHANGED
@@ -4,23 +4,17 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'prayer_times/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'prayer_times'
|
8
8
|
spec.version = PrayerTimes::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
9
|
+
spec.authors = ['Khaled alHabache']
|
10
|
+
spec.email = ['khellls@gmail.com']
|
11
11
|
spec.description = %q{Calculates Muslim prayers times in given settings}
|
12
12
|
spec.summary = %q{Muslim prayers times calculator}
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
15
|
-
|
13
|
+
spec.homepage = 'https://github.com/Startappz/prayer_times/'
|
14
|
+
spec.license = 'GNU LGPL v3.0'
|
15
|
+
spec.required_ruby_version = '>= 1.9.2'
|
16
16
|
spec.files = `git ls-files`.split($/)
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
-
spec.test_files
|
19
|
-
spec.require_paths = [
|
20
|
-
|
21
|
-
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
-
spec.add_development_dependency "rake"
|
23
|
-
spec.add_development_dependency "minitest"
|
24
|
-
spec.add_development_dependency "coveralls"
|
25
|
-
|
18
|
+
spec.test_files = Dir.glob('spec/**/*')
|
19
|
+
spec.require_paths = ['lib']
|
26
20
|
end
|
data/spec/helper.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
require 'simplecov'
|
3
|
+
require 'coveralls'
|
4
|
+
|
5
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
6
|
+
SimpleCov::Formatter::HTMLFormatter,
|
7
|
+
Coveralls::SimpleCov::Formatter
|
8
|
+
]
|
9
|
+
|
10
|
+
SimpleCov.start do
|
11
|
+
add_filter '/spec/'
|
12
|
+
minimum_coverage(95.0)
|
13
|
+
end
|
14
|
+
|
15
|
+
require_relative '../lib/prayer_times.rb'
|
16
|
+
|
17
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
18
|
+
RSpec.configure do |config|
|
19
|
+
config.run_all_when_everything_filtered = true
|
20
|
+
|
21
|
+
# Run specs in random order to surface order dependencies. If you find an
|
22
|
+
# order dependency and want to debug it, you can fix the order by providing
|
23
|
+
# the seed, which is printed after each run.
|
24
|
+
# --seed 1234
|
25
|
+
config.order = 'random'
|
26
|
+
config.expect_with :rspec do |c|
|
27
|
+
c.syntax = :expect
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
describe PrayerTimes::CalculationMethod do
|
5
|
+
|
6
|
+
let(:method_name) { 'Medina' }
|
7
|
+
let(:description) { 'Medina testing methods' }
|
8
|
+
|
9
|
+
describe 'Object' do
|
10
|
+
subject { PrayerTimes::CalculationMethod.new(method_name, description, {}) }
|
11
|
+
it { expect(subject).to respond_to(:description) }
|
12
|
+
it { expect(subject).to respond_to(:description=) }
|
13
|
+
it { expect(subject).to respond_to(:settings) }
|
14
|
+
it { expect(subject).to respond_to(:settings=) }
|
15
|
+
it { expect(subject).to respond_to(:offsets) }
|
16
|
+
it { expect(subject).to respond_to(:offsets=) }
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '#initialize' do
|
20
|
+
context 'when method_name and description are provided' do
|
21
|
+
subject { PrayerTimes::CalculationMethod.new(method_name, description) }
|
22
|
+
it { expect(subject.name).to eq(method_name) }
|
23
|
+
it { expect(subject.description).to eq(description) }
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'when settings are not provided' do
|
27
|
+
subject { PrayerTimes::CalculationMethod.new(method_name, description, {}) }
|
28
|
+
it { expect(subject.settings).to eq(PrayerTimes::CalculationMethod.default_settings) }
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when settings are provided' do
|
32
|
+
let(:opts){{
|
33
|
+
fajr: 18,
|
34
|
+
asr: 'Hanafi',
|
35
|
+
isha: 18
|
36
|
+
}}
|
37
|
+
subject { PrayerTimes::CalculationMethod.new(method_name, description,opts) }
|
38
|
+
it { expect(subject.settings).to eq(PrayerTimes::CalculationMethod.default_settings.merge opts) }
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'when offsets are not provided' do
|
42
|
+
subject { PrayerTimes::CalculationMethod.new(method_name, description, {}, {}) }
|
43
|
+
it { expect(subject.offsets).to eq(PrayerTimes::Constants.times_offsets) }
|
44
|
+
end
|
45
|
+
|
46
|
+
context 'when offsets are provided' do
|
47
|
+
let(:opts){{
|
48
|
+
fajr: 3,
|
49
|
+
asr: -1,
|
50
|
+
isha: 6
|
51
|
+
}}
|
52
|
+
subject { PrayerTimes::CalculationMethod.new(method_name, description,{},opts) }
|
53
|
+
it { expect(subject.offsets).to eq(PrayerTimes::Constants.times_offsets.merge opts) }
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
describe PrayerTimes::CalculationMethods do
|
5
|
+
describe '#initialize' do
|
6
|
+
subject { PrayerTimes::CalculationMethods.new }
|
7
|
+
it { expect(subject).to respond_to(:add) }
|
8
|
+
it { expect(subject.keys).to eq(subject.class.default_methods.keys) }
|
9
|
+
it { expect(subject).to respond_to(:[]) }
|
10
|
+
it { expect(subject).to respond_to(:each) }
|
11
|
+
it { expect(subject).to respond_to(:keys) }
|
12
|
+
it { expect(subject).to respond_to(:key?) }
|
13
|
+
it { expect(subject).to respond_to(:delete) }
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#add' do
|
17
|
+
before do
|
18
|
+
@subject = PrayerTimes::CalculationMethods.new
|
19
|
+
@settings = { fajr: 16.5, asr: 'Hanafi', isha: '80 min' }
|
20
|
+
@offsets = { dhuhr: 2, asr: -1, isha: 3 }
|
21
|
+
|
22
|
+
@new = @subject.add('Test', 'Testing method', @settings, @offsets)
|
23
|
+
end
|
24
|
+
it { expect(@new).to be_a(PrayerTimes::CalculationMethod) }
|
25
|
+
it { expect(@subject['Test']).to eq(@new) }
|
26
|
+
it { expect(@subject['Test'].settings[:fajr]).to eq(16.5) }
|
27
|
+
it { expect(@subject['Test'].settings[:asr]).to eq('Hanafi') }
|
28
|
+
it { expect(@subject['Test'].settings[:isha]).to eq('80 min') }
|
29
|
+
it { expect(@subject['Test'].offsets[:dhuhr]).to eq(2) }
|
30
|
+
it { expect(@subject['Test'].offsets[:asr]).to eq(-1) }
|
31
|
+
it { expect(@subject['Test'].offsets[:isha]).to eq(3) }
|
32
|
+
end
|
33
|
+
|
34
|
+
describe '#names' do
|
35
|
+
subject { PrayerTimes::CalculationMethods.new }
|
36
|
+
it { expect(subject.names).to eq(subject.keys) }
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,159 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
# Those results are tested against numbers from the js code
|
5
|
+
# http://praytimes.org/code/v2/js/PrayTimes.js
|
6
|
+
describe PrayerTimes::Calculation do
|
7
|
+
describe '#compute' do
|
8
|
+
context 'when method is MWL' do
|
9
|
+
context 'when date is 2011/2/9, location is Waterloo/Canada and timezone -5' do
|
10
|
+
let(:pt) { PrayerTimes.new}
|
11
|
+
subject{pt.get_times([2011,2,9], [43, -80], -5) }
|
12
|
+
let(:expected) { {
|
13
|
+
'Imsak' => '05:40',
|
14
|
+
'Fajr' => '05:50',
|
15
|
+
'Sunrise' => '07:26',
|
16
|
+
'Dhuhr' => '12:34',
|
17
|
+
'Asr' => '15:18' ,
|
18
|
+
'Sunset' => '17:43' ,
|
19
|
+
'Maghrib' => '17:43' ,
|
20
|
+
'Isha' => '19:14' ,
|
21
|
+
'Midnight' => '00:35' } }
|
22
|
+
it {expect(subject).to eq(expected) }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'when method is Makkah' do
|
27
|
+
let(:method_name) { 'Makkah'}
|
28
|
+
|
29
|
+
context 'time format is 24h and other settings are default' do
|
30
|
+
context 'when date is 2013/12/16, location is Amman/Jordan and timezone 3' do
|
31
|
+
let(:pt) { PrayerTimes.new method_name}
|
32
|
+
subject{pt.get_times([2013,12,16], [31,36], 3) }
|
33
|
+
let(:expected) { {
|
34
|
+
'Imsak' => '05:48',
|
35
|
+
'Fajr' => '05:58',
|
36
|
+
'Sunrise' => '07:27',
|
37
|
+
'Dhuhr' => '12:32',
|
38
|
+
'Asr' => '15:18' ,
|
39
|
+
'Sunset' => '17:36' ,
|
40
|
+
'Maghrib' => '17:36' ,
|
41
|
+
'Isha' => '19:06' ,
|
42
|
+
'Midnight' => '00:32' } }
|
43
|
+
it {expect(subject).to eq(expected) }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'time format is 24h, offsets are custom and other settings are default' do
|
48
|
+
context 'when date is 2013/12/16, location is Amman/Jordan and timezone 3' do
|
49
|
+
let(:pt) { PrayerTimes.new method_name, times_offsets: {fajr: 4, dhuhr: 2, midnight: 1}}
|
50
|
+
subject{pt.get_times([2013,12,16], [31,36], 3) }
|
51
|
+
let(:expected) { {
|
52
|
+
'Imsak' => '05:48',
|
53
|
+
'Fajr' => '06:02',
|
54
|
+
'Sunrise' => '07:27',
|
55
|
+
'Dhuhr' => '12:34',
|
56
|
+
'Asr' => '15:18' ,
|
57
|
+
'Sunset' => '17:36' ,
|
58
|
+
'Maghrib' => '17:36' ,
|
59
|
+
'Isha' => '19:06' ,
|
60
|
+
'Midnight' => '00:33' } }
|
61
|
+
it {expect(subject).to eq(expected) }
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
context 'time format is 24h, times names are custom and settings are default' do
|
68
|
+
context 'when date is 2013/12/16, location is Amman/Jordan and timezone 3' do
|
69
|
+
let(:pt) { PrayerTimes.new method_name, times_names: {asr: 'Aser', isha: 'Ishaa'}}
|
70
|
+
subject{pt.get_times([2013,12,16], [31,36], 3) }
|
71
|
+
let(:expected) { {
|
72
|
+
'Imsak' => '05:48',
|
73
|
+
'Fajr' => '05:58',
|
74
|
+
'Sunrise' => '07:27',
|
75
|
+
'Dhuhr' => '12:32',
|
76
|
+
'Aser' => '15:18' ,
|
77
|
+
'Sunset' => '17:36' ,
|
78
|
+
'Maghrib' => '17:36' ,
|
79
|
+
'Ishaa' => '19:06' ,
|
80
|
+
'Midnight' => '00:32' } }
|
81
|
+
it {expect(subject).to eq(expected) }
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context 'time format is 12h, suffixes are custom and other settings are default' do
|
86
|
+
context 'when date is 2013/12/16, location is Amman/Jordan and timezone 3' do
|
87
|
+
let(:pt) { PrayerTimes.new method_name, time_format: '12h', time_suffixes: {:am => ' صباحا', :pm => ' مساءا'}}
|
88
|
+
subject{pt.get_times([2013,12,16], [31,36], 3) }
|
89
|
+
let(:expected) { {
|
90
|
+
'Imsak' => '5:48 صباحا',
|
91
|
+
'Fajr' => '5:58 صباحا',
|
92
|
+
'Sunrise' => '7:27 صباحا',
|
93
|
+
'Dhuhr' => '12:32 مساءا',
|
94
|
+
'Asr' => '3:18 مساءا' ,
|
95
|
+
'Sunset' => '5:36 مساءا' ,
|
96
|
+
'Maghrib' => '5:36 مساءا' ,
|
97
|
+
'Isha' => '7:06 مساءا' ,
|
98
|
+
'Midnight' => '12:32 صباحا' }}
|
99
|
+
it {expect(subject).to eq(expected) }
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
context 'when method is Turkey' do
|
105
|
+
context 'when date is 2013/12/17, location is Fatih/Istanbul/Turkey and timezone +2' do
|
106
|
+
let(:pt) { PrayerTimes.new 'Turkey', time_format: '12h'}
|
107
|
+
subject{pt.get_times([2013,12,17], [41.02,28.94], 2) }
|
108
|
+
let(:expected) { {
|
109
|
+
'Imsak' => '5:34AM',
|
110
|
+
'Fajr' => '5:42AM',
|
111
|
+
'Sunrise' => '7:16AM',
|
112
|
+
'Dhuhr' => '12:06PM',
|
113
|
+
'Asr' => '2:24PM' ,
|
114
|
+
'Sunset' => '4:37PM' ,
|
115
|
+
'Maghrib' => '4:46PM' ,
|
116
|
+
'Isha' => '6:13PM' ,
|
117
|
+
'Midnight' => '12:00AM' }}
|
118
|
+
it {expect(subject).to eq(expected) }
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
context 'when method is Karachi' do
|
123
|
+
context 'when date is 2013/12/17, location is Islamabad, timezone +5 and format is 12h' do
|
124
|
+
let(:pt) { PrayerTimes.new 'Karachi', time_format: '12h'}
|
125
|
+
subject{pt.get_times([2014,1,23], [33.73,73.06], 5) }
|
126
|
+
let(:expected) { {
|
127
|
+
'Imsak' => '5:33AM',
|
128
|
+
'Fajr' => '5:43AM',
|
129
|
+
'Sunrise' => '7:10AM',
|
130
|
+
'Dhuhr' => '12:20PM',
|
131
|
+
'Asr' => '3:52PM' ,
|
132
|
+
'Sunset' => '5:30PM' ,
|
133
|
+
'Maghrib' => '5:30PM' ,
|
134
|
+
'Isha' => '6:56PM' ,
|
135
|
+
'Midnight' => '12:20AM' } }
|
136
|
+
it {expect(subject).to eq(expected) }
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
context 'when method is Kula Malaysia' do
|
141
|
+
context 'when date is 2013/12/17, location is Kula Lumpur, timezone +8 and format is 12h' do
|
142
|
+
let(:pt) { PrayerTimes.new 'Malaysia', time_format: '12h'}
|
143
|
+
subject{pt.get_times([2014,1,23], [3.15,101.69], 8) }
|
144
|
+
let(:expected) { {
|
145
|
+
'Imsak' => '5:54AM',
|
146
|
+
'Fajr' => '6:07AM',
|
147
|
+
'Sunrise' => '7:28AM',
|
148
|
+
'Dhuhr' => '1:26PM',
|
149
|
+
'Asr' => '4:50PM' ,
|
150
|
+
'Sunset' => '7:25PM' ,
|
151
|
+
'Maghrib' => '7:25PM' ,
|
152
|
+
'Isha' => '8:36PM' ,
|
153
|
+
'Midnight' => '1:25AM' } }
|
154
|
+
it { expect(subject).to eq(expected) }
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
end
|
159
|
+
end
|