iu-test-factory 0.5.4.2 → 0.6.0.beta1
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/Gemfile +4 -2
- data/Gemfile.lock +32 -28
- data/iu-test-factory-0.6.0.0.gem.old +0 -0
- data/iu-test-factory.gemspec +11 -10
- data/lib/test-factory/page_factory.rb +13 -13
- data/lib/test-factory/string_factory.rb +1 -1
- data/lib/test-factory/test_factory.rb +15 -12
- data/lib/test-factory.rb +2 -2
- metadata +17 -15
- data/lib/test-factory/core_ext.rb +0 -133
- data/lib/test-factory/date_factory.rb +0 -158
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a47aae2444f66ca3df346880ec19109a5980a9a6dd8c94691feddf848c47c525
|
4
|
+
data.tar.gz: 052d6b9d9a41afbfeb865b26925023e3ef41f678d3cd2a252670fa222e7468ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90a784cda93203a63b0cda6c6a55b1e33f0c0bd79e46647fe5ee78bfc081bd60536af6045c3b17634813f79a6077945a5c95bcd9bf7283399b1a772145f1a429
|
7
|
+
data.tar.gz: 8657ed5d48739d53d1a5af937c758eab122697a763a5939fd33bf7a133e5cbc50df49c5eb6fc0dd0dc7f79958cd0aef6c41f8b2700698839a5a9d029e0e67dff
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,28 +1,32 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
test-factory (0.
|
5
|
-
watir (
|
6
|
-
|
7
|
-
GEM
|
8
|
-
remote: http://rubygems.org/
|
9
|
-
specs:
|
10
|
-
childprocess (
|
11
|
-
|
12
|
-
|
13
|
-
rubyzip (
|
14
|
-
selenium-webdriver (3.
|
15
|
-
childprocess (
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
iu-test-factory (0.6.0.beta1)
|
5
|
+
watir (~> 7.0)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
childprocess (4.1.0)
|
11
|
+
regexp_parser (2.7.0)
|
12
|
+
rexml (3.2.5)
|
13
|
+
rubyzip (2.3.2)
|
14
|
+
selenium-webdriver (4.3.0)
|
15
|
+
childprocess (>= 0.5, < 5.0)
|
16
|
+
rexml (~> 3.2, >= 3.2.5)
|
17
|
+
rubyzip (>= 1.2.2, < 3.0)
|
18
|
+
websocket (~> 1.0)
|
19
|
+
watir (7.2.2)
|
20
|
+
regexp_parser (>= 1.2, < 3)
|
21
|
+
selenium-webdriver (~> 4.2)
|
22
|
+
websocket (1.2.9)
|
23
|
+
|
24
|
+
PLATFORMS
|
25
|
+
x64-mingw-ucrt
|
26
|
+
|
27
|
+
DEPENDENCIES
|
28
|
+
iu-test-factory!
|
29
|
+
watir (~> 7.0)
|
30
|
+
|
31
|
+
BUNDLED WITH
|
32
|
+
2.3.22
|
Binary file
|
data/iu-test-factory.gemspec
CHANGED
@@ -1,13 +1,14 @@
|
|
1
|
-
|
1
|
+
Gem::Specification.new do |s|
|
2
2
|
s.name = 'iu-test-factory'
|
3
|
-
s.version = '0.
|
4
|
-
s.summary =
|
5
|
-
s.description =
|
6
|
-
|
7
|
-
s.
|
8
|
-
s.
|
9
|
-
s.
|
3
|
+
s.version = '0.6.0.beta1'
|
4
|
+
s.summary = 'framework for creating automated testing scripts'
|
5
|
+
s.description = 'This gem provides a set of modules and methods to help quickly and DRYly create a test \
|
6
|
+
automation framework using Ruby and Watir.'
|
7
|
+
s.files = Dir.glob('**/**/**')
|
8
|
+
s.test_files = Dir.glob('test/*test_rb')
|
9
|
+
s.authors = ['Abraham Heward', 'David Elyea', 'Megha Ramawat']
|
10
|
+
s.email = %w[aheward@rsmart.com]
|
10
11
|
s.homepage = 'https://github.iu.edu/iu-uits-es'
|
11
|
-
s.add_dependency 'watir', '
|
12
|
-
s.required_ruby_version = '
|
12
|
+
s.add_dependency 'watir', '~> 7.0'
|
13
|
+
s.required_ruby_version = '~> 3.1'
|
13
14
|
end
|
@@ -21,7 +21,7 @@ class PageFactory
|
|
21
21
|
# As the PageFactory will be the superclass for all your page classes, having this initialize
|
22
22
|
# method here means it's only written once.
|
23
23
|
#
|
24
|
-
def initialize
|
24
|
+
def initialize(browser, visit = false)
|
25
25
|
@browser = browser
|
26
26
|
goto if visit
|
27
27
|
expected_element if respond_to? :expected_element
|
@@ -32,7 +32,7 @@ class PageFactory
|
|
32
32
|
# that Watir will take care of parsing them, so the assumption is that the method being
|
33
33
|
# passed is a valid method for the browser object.
|
34
34
|
#
|
35
|
-
def method_missing
|
35
|
+
def method_missing(sym, *args, &block)
|
36
36
|
@browser.send sym, *args, &block
|
37
37
|
end
|
38
38
|
|
@@ -41,7 +41,7 @@ class PageFactory
|
|
41
41
|
# Define this in a page class and when you use the "visit" method to instantiate the class
|
42
42
|
# it will enter the URL in the browser's address bar.
|
43
43
|
#
|
44
|
-
def page_url
|
44
|
+
def page_url(url)
|
45
45
|
define_method 'goto' do
|
46
46
|
@browser.goto url
|
47
47
|
end
|
@@ -51,7 +51,7 @@ class PageFactory
|
|
51
51
|
# element appears on the page before continuing with the script.
|
52
52
|
# @param element_name [Symbol] The method name of the element that must be present on the page
|
53
53
|
#
|
54
|
-
def expected_element
|
54
|
+
def expected_element(element_name, timeout = 30)
|
55
55
|
define_method 'expected_element' do
|
56
56
|
self.send(element_name).wait_until_present timeout: timeout
|
57
57
|
end
|
@@ -62,7 +62,7 @@ class PageFactory
|
|
62
62
|
# error and halts the script.
|
63
63
|
# @param expected_title [String] The exact text that is expected to appear in the Browser title when the page loads
|
64
64
|
#
|
65
|
-
def expected_title
|
65
|
+
def expected_title(expected_title)
|
66
66
|
define_method 'has_expected_title?' do
|
67
67
|
has_expected_title = expected_title.kind_of?(Regexp) ? expected_title =~ @browser.title : expected_title == @browser.title
|
68
68
|
raise "Expected title '#{expected_title}' instead of '#{@browser.title}'" unless has_expected_title
|
@@ -81,7 +81,7 @@ class PageFactory
|
|
81
81
|
# action(:continue) { |b| b.frm.button(:value=>"Continue").click } => Creates a #continue method that clicks the Continue button
|
82
82
|
# p_element(:select_style) { |stylename, b| b.div(:text=>/#{Regexp.escape(stylename)}/).link(:text=>"Select").click } => #select_style(stylename)
|
83
83
|
#
|
84
|
-
def element
|
84
|
+
def element(name, &block)
|
85
85
|
raise "#{name} is being defined twice in #{self}!" if self.instance_methods.include?(name.to_sym)
|
86
86
|
define_method name.to_s do |*thing|
|
87
87
|
Proc.new(&block).call *thing, self
|
@@ -116,7 +116,7 @@ class PageFactory
|
|
116
116
|
# @example
|
117
117
|
# link("Click Me For Fun!", :click_me) => Creates the methods #click_me and #click_me_link
|
118
118
|
#
|
119
|
-
def link
|
119
|
+
def link(link_text, *alias_name)
|
120
120
|
elementize(:link, link_text, *alias_name)
|
121
121
|
end
|
122
122
|
|
@@ -143,7 +143,7 @@ class PageFactory
|
|
143
143
|
# @example
|
144
144
|
# link("Click Me For Fun!", :click_me) => Creates the methods #click_me and #click_me_link
|
145
145
|
#
|
146
|
-
def button
|
146
|
+
def button(button_text, *alias_name)
|
147
147
|
elementize(:button, button_text, *alias_name)
|
148
148
|
end
|
149
149
|
|
@@ -168,11 +168,11 @@ class PageFactory
|
|
168
168
|
# @example
|
169
169
|
# undefine :status, :doc_id => Undefines the specified methods in the current class
|
170
170
|
#
|
171
|
-
def undefine
|
171
|
+
def undefine(*methods)
|
172
172
|
methods.each{ |m| undef_method m }
|
173
173
|
end
|
174
174
|
|
175
|
-
def inherited
|
175
|
+
def inherited(klass)
|
176
176
|
klass.instance_eval {
|
177
177
|
|
178
178
|
# Creates a method, #wait_for_ajax, usable in your Page Classes, that executes
|
@@ -181,7 +181,7 @@ class PageFactory
|
|
181
181
|
# If timeout is exceeded, raises Watir::Wait::TimeoutError exception. The returned error
|
182
182
|
# message is customizable.
|
183
183
|
#
|
184
|
-
define_method 'wait_for_ajax' do |timeout=10, message|
|
184
|
+
define_method 'wait_for_ajax' do |timeout = 10, message|
|
185
185
|
timeout.times do
|
186
186
|
sleep 0.3
|
187
187
|
return true if @browser.execute_script('return jQuery.active').to_i == 0
|
@@ -197,11 +197,11 @@ class PageFactory
|
|
197
197
|
# A helper method that converts the passed string into snake case. See the StringFactory
|
198
198
|
# module for more info.
|
199
199
|
#
|
200
|
-
def damballa
|
200
|
+
def damballa(text)
|
201
201
|
StringFactory.damballa(text)
|
202
202
|
end
|
203
203
|
|
204
|
-
def elementize
|
204
|
+
def elementize(type, text, *alias_name)
|
205
205
|
hash={:link=>:text, :button=>:value}
|
206
206
|
if alias_name.empty?
|
207
207
|
el_name=damballa("#{text}_#{type}")
|
@@ -1,16 +1,19 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# Module to define full TestFactory binary tranform
|
4
|
+
module TestFactory
|
3
5
|
def self.binary_transform(var)
|
4
|
-
case
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
6
|
+
case var
|
7
|
+
when nil
|
8
|
+
nil
|
9
|
+
when /yes/i, /on/i, :set, true
|
10
|
+
:set
|
11
|
+
when /no/i, /off/i, :clear, false
|
12
|
+
:clear
|
13
|
+
else
|
14
|
+
raise "The value of your DataObject's checkbox/radio ('#{var}') instance variable is not supported.\n /
|
15
|
+
Please make sure the value conforms to one of the following patterns:\n\n - :set or :clear (Symbol)\n /
|
16
|
+
- 'yes', 'no', 'on', or 'off' (String; case insensitive)\n - true or false (Boolean)"
|
13
17
|
end
|
14
18
|
end
|
15
|
-
|
16
|
-
end
|
19
|
+
end
|
data/lib/test-factory.rb
CHANGED
@@ -14,5 +14,5 @@
|
|
14
14
|
|
15
15
|
require 'watir'
|
16
16
|
require 'forwardable'
|
17
|
-
%w
|
18
|
-
Dir["#{File.dirname(__FILE__)}/test-factory/*.rb"].each {|f| require f }
|
17
|
+
%w[foundry.rb data_factory.rb].each { |f| require "#{File.dirname(__FILE__)}/test-factory/#{f}" }
|
18
|
+
Dir["#{File.dirname(__FILE__)}/test-factory/*.rb"].each { |f| require f }
|
metadata
CHANGED
@@ -1,31 +1,34 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iu-test-factory
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Abraham Heward
|
8
|
+
- David Elyea
|
9
|
+
- Megha Ramawat
|
8
10
|
autorequire:
|
9
11
|
bindir: bin
|
10
12
|
cert_chain: []
|
11
|
-
date:
|
13
|
+
date: 2023-03-21 00:00:00.000000000 Z
|
12
14
|
dependencies:
|
13
15
|
- !ruby/object:Gem::Dependency
|
14
16
|
name: watir
|
15
17
|
requirement: !ruby/object:Gem::Requirement
|
16
18
|
requirements:
|
17
|
-
- - "
|
19
|
+
- - "~>"
|
18
20
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
21
|
+
version: '7.0'
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
23
25
|
requirements:
|
24
|
-
- - "
|
26
|
+
- - "~>"
|
25
27
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
27
|
-
description:
|
28
|
-
|
28
|
+
version: '7.0'
|
29
|
+
description: |-
|
30
|
+
This gem provides a set of modules and methods to help quickly and DRYly create a test \
|
31
|
+
automation framework using Ruby and Watir.
|
29
32
|
email:
|
30
33
|
- aheward@rsmart.com
|
31
34
|
executables: []
|
@@ -37,12 +40,11 @@ files:
|
|
37
40
|
- Gemfile.lock
|
38
41
|
- LICENSE
|
39
42
|
- README.md
|
43
|
+
- iu-test-factory-0.6.0.0.gem.old
|
40
44
|
- iu-test-factory.gemspec
|
41
45
|
- lib/test-factory.rb
|
42
46
|
- lib/test-factory/collections_factory.rb
|
43
|
-
- lib/test-factory/core_ext.rb
|
44
47
|
- lib/test-factory/data_factory.rb
|
45
|
-
- lib/test-factory/date_factory.rb
|
46
48
|
- lib/test-factory/foundry.rb
|
47
49
|
- lib/test-factory/gem_ext.rb
|
48
50
|
- lib/test-factory/page_factory.rb
|
@@ -57,16 +59,16 @@ require_paths:
|
|
57
59
|
- lib
|
58
60
|
required_ruby_version: !ruby/object:Gem::Requirement
|
59
61
|
requirements:
|
60
|
-
- - "
|
62
|
+
- - "~>"
|
61
63
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
64
|
+
version: '3.1'
|
63
65
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
64
66
|
requirements:
|
65
|
-
- - "
|
67
|
+
- - ">"
|
66
68
|
- !ruby/object:Gem::Version
|
67
|
-
version:
|
69
|
+
version: 1.3.1
|
68
70
|
requirements: []
|
69
|
-
rubygems_version: 3.
|
71
|
+
rubygems_version: 3.3.7
|
70
72
|
signing_key:
|
71
73
|
specification_version: 4
|
72
74
|
summary: framework for creating automated testing scripts
|
@@ -1,133 +0,0 @@
|
|
1
|
-
# Copyright 2012-2014 The rSmart Group, Inc.
|
2
|
-
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
class Time
|
16
|
-
|
17
|
-
# Using the :year_range option (or no option), this method creates a
|
18
|
-
# Time object of a random value, within
|
19
|
-
# the year range specified (default is 5 years in the past).
|
20
|
-
#
|
21
|
-
# Using the :series option, this method returns an array
|
22
|
-
# containing a randomized Time object as its first element (limited by
|
23
|
-
# the specified :year_range value). Subsequent elements will be Time objects
|
24
|
-
# with values putting them later than the prior element, within the specified
|
25
|
-
# range value (see examples).
|
26
|
-
#
|
27
|
-
# Usage Examples:
|
28
|
-
# @example
|
29
|
-
# a random date...
|
30
|
-
# ?> Time.random
|
31
|
-
# => Tue Aug 05 00:00:00 EDT 2007
|
32
|
-
#
|
33
|
-
# birthdays, anyone?...
|
34
|
-
# 5.times { p Time.random(:year_range=>80) }
|
35
|
-
# Wed Feb 06 00:00:00 EDT 1974
|
36
|
-
# Tue Dec 22 00:00:00 EST 1992
|
37
|
-
# Fri Apr 14 00:00:00 EWT 1944
|
38
|
-
# Thu Jul 01 00:00:00 EDT 1993
|
39
|
-
# Wed Oct 02 00:00:00 EDT 2002
|
40
|
-
#
|
41
|
-
# A series of dates are useful for account-related info...
|
42
|
-
# ?> Time.random(:series=>[20.days, 3.years])
|
43
|
-
# => [Sat Jan 22 00:00:00 EST 2005,
|
44
|
-
# Sat Jan 29 12:58:45 EST 2005,
|
45
|
-
# Fri Sep 08 09:34:58 EDT 2006]
|
46
|
-
#
|
47
|
-
# or maybe to simulate events during an hour?...
|
48
|
-
# ?> Time.random(:series=>[1.hour,1.hour,1.hour])
|
49
|
-
# => [Wed Apr 21 00:00:00 EDT 2004,
|
50
|
-
# Wed Apr 21 00:45:59 EDT 2004,
|
51
|
-
# Wed Apr 21 01:02:47 EDT 2004,
|
52
|
-
# Wed Apr 21 01:31:00 EDT 2004]
|
53
|
-
#
|
54
|
-
def self.random(params={})
|
55
|
-
years_back = params[:year_range] || 5
|
56
|
-
year = (rand * (years_back)).ceil + (Time.now.year - years_back)
|
57
|
-
month = (rand * 12).ceil
|
58
|
-
day = (rand * 31).ceil
|
59
|
-
series = [date = Time.local(year, month, day)]
|
60
|
-
if params[:series]
|
61
|
-
params[:series].each do |some_time_after|
|
62
|
-
series << series.last + (rand * some_time_after).ceil
|
63
|
-
end
|
64
|
-
return series
|
65
|
-
end
|
66
|
-
date
|
67
|
-
end
|
68
|
-
|
69
|
-
end # Time
|
70
|
-
|
71
|
-
module Enumerable
|
72
|
-
|
73
|
-
# Use for getting a natural sort order instead of the ASCII
|
74
|
-
# sort order.
|
75
|
-
#
|
76
|
-
def alphabetize
|
77
|
-
sort { |a, b| grouped_compare(a, b) }
|
78
|
-
end
|
79
|
-
|
80
|
-
# Use for sorting an Enumerable object in place.
|
81
|
-
#
|
82
|
-
def alphabetize!
|
83
|
-
sort! { |a, b| grouped_compare(a, b) }
|
84
|
-
end
|
85
|
-
|
86
|
-
private
|
87
|
-
|
88
|
-
def grouped_compare(a, b)
|
89
|
-
loop {
|
90
|
-
a_chunk, a = extract_alpha_or_number_group(a)
|
91
|
-
b_chunk, b = extract_alpha_or_number_group(b)
|
92
|
-
ret = a_chunk <=> b_chunk
|
93
|
-
return -1 if a_chunk == ''
|
94
|
-
return ret if ret != 0
|
95
|
-
}
|
96
|
-
end
|
97
|
-
|
98
|
-
def extract_alpha_or_number_group(item)
|
99
|
-
test_item = item.downcase
|
100
|
-
matchdata = /([a-z]+|[\d]+)/.match(test_item)
|
101
|
-
if matchdata.nil?
|
102
|
-
["", ""]
|
103
|
-
else
|
104
|
-
[matchdata[0], test_item = test_item[matchdata.offset(0)[1] .. -1]]
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
end # Enumerable
|
109
|
-
|
110
|
-
class Numeric
|
111
|
-
|
112
|
-
# Converts a number object to a string containing commas every 3rd digit. Adds
|
113
|
-
# trailing zeroes if necessary to match round currency amounts.
|
114
|
-
def commas
|
115
|
-
self.to_s =~ /([^\.]*)(\..*)?/
|
116
|
-
int, dec = $1.reverse, $2 ? ('%.2f' % $2).to_s[/.\d+$/] : ".00"
|
117
|
-
while int.gsub!(/(,|\.|^)(\d{3})(\d)/, '\1\2,\3')
|
118
|
-
end
|
119
|
-
int.reverse + dec
|
120
|
-
end
|
121
|
-
|
122
|
-
end # Numeric
|
123
|
-
|
124
|
-
class String
|
125
|
-
|
126
|
-
# Used to remove commas and dollar signs from long number strings,
|
127
|
-
# then converting the result to a Float so that it
|
128
|
-
# can be used in calculations.
|
129
|
-
def groom
|
130
|
-
self.gsub(/[$,]/,'').to_f
|
131
|
-
end
|
132
|
-
|
133
|
-
end # String
|
@@ -1,158 +0,0 @@
|
|
1
|
-
# Copyright 2012-2014 The rSmart Group, Inc.
|
2
|
-
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
# Some date and time helper functions....
|
16
|
-
module DateFactory
|
17
|
-
|
18
|
-
MONTHS = %w{JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC}
|
19
|
-
|
20
|
-
# Takes a time object and returns a hash containing
|
21
|
-
# various parts of the relevant date.
|
22
|
-
# @param time_object [Time] the moment you want to convert
|
23
|
-
# @returns [Hash] a hash object containing various parts of the date/time you passed to the method
|
24
|
-
#
|
25
|
-
def date_factory(time_object)
|
26
|
-
{
|
27
|
-
sakai: make_date(time_object),
|
28
|
-
sakai_rounded: make_date(time_object).gsub!(/:\d+/, ":#{Time.at(time_object.to_i/(5*60)*(5*60)).strftime("%M")}"), # Date with time rounded to nearest 5-minute mark.
|
29
|
-
short_date: time_object.strftime("%b %-d, %Y"), # => "Oct 18, 2013"
|
30
|
-
samigo: time_object.strftime("%m/%d/%Y %I:%M:%S %p"), # => "10/30/2012 07:02:05 AM"
|
31
|
-
MON: time_object.strftime("%^b"), # => "DEC"
|
32
|
-
Mon: time_object.strftime("%b"), # => "Jan"
|
33
|
-
Month: time_object.strftime("%B"), # => "February"
|
34
|
-
month_int: time_object.month, # => 3
|
35
|
-
day_of_month: time_object.day, # => 17 Note this is not zero-padded
|
36
|
-
weekday: time_object.strftime("%A"), # => "Monday"
|
37
|
-
wkdy: time_object.strftime("%a"), # => "Tue"
|
38
|
-
year: time_object.year, # => 2013
|
39
|
-
hour: time_object.strftime("%I").to_i, # => "07" Zero-padded, 12-hour clock
|
40
|
-
minute: time_object.strftime("%M"), # => "02" Zero-padded
|
41
|
-
minute_rounded: (Time.at(time_object.to_i/(5*60)*(5*60))).strftime("%M"), # => "05" Zero-padded, rounded to 5-minute increments
|
42
|
-
meridian: time_object.strftime("%P"), # => "pm"
|
43
|
-
MERIDIAN: time_object.strftime("%p"), # => "AM"
|
44
|
-
date_w_slashes: time_object.strftime("%m/%d/%Y"), # => 02/08/2013
|
45
|
-
custom: time_object # => Allows creation of a custom date string using the passed time value.
|
46
|
-
}
|
47
|
-
end
|
48
|
-
|
49
|
-
def an_hour_ago
|
50
|
-
date_factory(Time.now - 3600)
|
51
|
-
end
|
52
|
-
alias last_hour an_hour_ago
|
53
|
-
|
54
|
-
def right_now
|
55
|
-
date_factory(Time.now)
|
56
|
-
end
|
57
|
-
|
58
|
-
def in_an_hour
|
59
|
-
date_factory(Time.now + 3600)
|
60
|
-
end
|
61
|
-
alias next_hour in_an_hour
|
62
|
-
|
63
|
-
def last_year
|
64
|
-
date_factory(Time.now - (3600*24*365))
|
65
|
-
end
|
66
|
-
alias a_year_ago last_year
|
67
|
-
|
68
|
-
# Returns a randomly selected date/time from
|
69
|
-
# within the last year.
|
70
|
-
def in_the_last_year
|
71
|
-
date_factory(Time.random(:year_range=>1))
|
72
|
-
end
|
73
|
-
|
74
|
-
def last_month
|
75
|
-
index = MONTHS.index(current_month)
|
76
|
-
return MONTHS[index-1]
|
77
|
-
end
|
78
|
-
|
79
|
-
def hours_ago(hours)
|
80
|
-
date_factory(Time.now - hours*3600)
|
81
|
-
end
|
82
|
-
|
83
|
-
def hours_from_now(hours)
|
84
|
-
date_factory(Time.now + hours*3600)
|
85
|
-
end
|
86
|
-
|
87
|
-
# Takes an integer representing
|
88
|
-
# the count of minutes as the parameter, and
|
89
|
-
# returns the date_factory hash for the
|
90
|
-
# resulting Time value.
|
91
|
-
#
|
92
|
-
def minutes_ago(mins)
|
93
|
-
date_factory(Time.now - mins*60)
|
94
|
-
end
|
95
|
-
|
96
|
-
def minutes_from_now(mins)
|
97
|
-
date_factory(Time.now + mins*60)
|
98
|
-
end
|
99
|
-
|
100
|
-
# Returns the current month as an
|
101
|
-
# upper-case 3-letter string.
|
102
|
-
# example: "JUL"
|
103
|
-
#
|
104
|
-
def current_month
|
105
|
-
Time.now.strftime("%^b")
|
106
|
-
end
|
107
|
-
|
108
|
-
def next_month
|
109
|
-
index = MONTHS.index(current_month)
|
110
|
-
if index < 11
|
111
|
-
return MONTHS[index+1]
|
112
|
-
else
|
113
|
-
return MONTHS[0]
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
def in_a_year
|
118
|
-
date_factory(Time.now + (3600*24*365))
|
119
|
-
end
|
120
|
-
alias next_year in_a_year
|
121
|
-
|
122
|
-
def yesterday
|
123
|
-
date_factory(Time.now - (3600*24))
|
124
|
-
end
|
125
|
-
|
126
|
-
def tomorrow
|
127
|
-
date_factory(Time.now + (3600*24))
|
128
|
-
end
|
129
|
-
|
130
|
-
def in_a_week
|
131
|
-
date_factory(Time.now + (3600*24*7))
|
132
|
-
end
|
133
|
-
alias next_week in_a_week
|
134
|
-
|
135
|
-
def a_week_ago
|
136
|
-
date_factory(Time.now - (3600*24*7))
|
137
|
-
end
|
138
|
-
|
139
|
-
def next_monday
|
140
|
-
date_factory(Time.at(Time.now+(8-Time.now.wday)*24*3600))
|
141
|
-
end
|
142
|
-
|
143
|
-
# Formats a date string Sakai-style.
|
144
|
-
# Useful for verifying creation dates and such.
|
145
|
-
#
|
146
|
-
# @param time_object [Time] the moment that you want converted to the string
|
147
|
-
# @returns [String] a date formatted to look like this: Jun 8, 2012 12:02 pm
|
148
|
-
#
|
149
|
-
def make_date(time_object)
|
150
|
-
month = time_object.strftime("%b ")
|
151
|
-
day = time_object.strftime("%-d")
|
152
|
-
year = time_object.strftime(", %Y ")
|
153
|
-
mins = time_object.strftime(":%M %P")
|
154
|
-
hour = time_object.strftime("%l").to_i
|
155
|
-
return month + day + year + hour.to_s + mins
|
156
|
-
end
|
157
|
-
|
158
|
-
end
|