nextable 0.0.11 → 0.1.0
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/lib/nextable.rb +43 -21
- data/lib/nextable/db.rb +32 -47
- data/test/dummy/config/environments/test.rb +2 -1
- data/test/dummy/log/development.log +4 -0
- data/test/dummy/log/test.log +80140 -0
- data/test/nextable_test.rb +29 -19
- data/test/param_tests/cycle_test.rb +38 -25
- data/test/param_tests/field_test.rb +102 -57
- data/test/param_tests/filters_test.rb +103 -15
- metadata +2 -2
data/test/nextable_test.rb
CHANGED
@@ -1,27 +1,37 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class NextableTest < ActiveSupport::TestCase
|
4
|
-
class
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
class NextRecord < NextableTest
|
5
|
+
class Defaults < NextRecord
|
6
|
+
setup do
|
7
|
+
@first, @second, @third = create_three_users
|
8
|
+
end
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
test "next_record_fetches_user_with_ascending_id" do
|
11
|
+
assert_equal @first.next_record, @second
|
12
|
+
assert_equal @second.next_record, @third
|
13
|
+
end
|
13
14
|
|
14
|
-
|
15
|
-
|
16
|
-
|
15
|
+
test "last_user_next_record_returns_nil" do
|
16
|
+
assert_equal @third.next_record, nil
|
17
|
+
end
|
17
18
|
end
|
19
|
+
end
|
18
20
|
|
19
|
-
|
20
|
-
|
21
|
-
|
21
|
+
class PreviousRecord < NextableTest
|
22
|
+
class Defaults < PreviousRecord
|
23
|
+
setup do
|
24
|
+
@first, @second, @third = create_three_users
|
25
|
+
end
|
26
|
+
|
27
|
+
test "previous_record_fetches_user_with_descending_id" do
|
28
|
+
assert_equal @second.previous_record, @first
|
29
|
+
assert_equal @third.previous_record, @second
|
30
|
+
end
|
22
31
|
|
23
|
-
|
24
|
-
|
32
|
+
test "first_user_previous_record_returns_nil" do
|
33
|
+
assert_equal @first.previous_record, nil
|
34
|
+
end
|
25
35
|
end
|
26
36
|
end
|
27
37
|
|
@@ -32,9 +42,9 @@ class NextableTest < ActiveSupport::TestCase
|
|
32
42
|
second = User.create!(name: 'Fubart', total_friends: 1, date_of_birth: 'June 2, 1991')
|
33
43
|
third = User.create!(name: 'Ebert', total_friends: 1, date_of_birth: 'June 2, 1991')
|
34
44
|
fourth = User.create!(name: 'Dilbert', total_friends: 2, date_of_birth: 'June 2, 1991')
|
35
|
-
fifth = User.create!(name: '
|
36
|
-
sixth = User.create!(name: '
|
37
|
-
seventh = User.create!(name: 'Albert', total_friends:
|
45
|
+
fifth = User.create!(name: 'Albert', total_friends: 3, date_of_birth: 'October 26, 1990')
|
46
|
+
sixth = User.create!(name: 'Albert', total_friends: 2, date_of_birth: 'October 26, 1990')
|
47
|
+
seventh = User.create!(name: 'Albert', total_friends: 1, date_of_birth: 'October 26, 1990')
|
38
48
|
return first, second, third, fourth, fifth, sixth, seventh
|
39
49
|
end
|
40
50
|
|
@@ -3,40 +3,53 @@ require 'nextable_test'
|
|
3
3
|
|
4
4
|
module ParamTests
|
5
5
|
class CycleTest < NextableTest
|
6
|
-
|
7
|
-
|
6
|
+
setup do
|
7
|
+
@@first, @@second, @@third = create_three_users
|
8
8
|
|
9
|
-
#
|
10
|
-
|
11
|
-
|
9
|
+
# Aliased for easier reading of individual tests
|
10
|
+
@@feb_1965 = @@six = @@malcolm = @@first
|
11
|
+
@@feb_1942 = @@eight = @@huey = @@second
|
12
|
+
@@jan_1929 = @@seven = @@mlk = @@third
|
12
13
|
end
|
13
14
|
|
14
|
-
|
15
|
-
|
15
|
+
class NextRecord < CycleTest
|
16
|
+
test "default will cycle by id" do
|
17
|
+
assert_equal @@third.next_record(cycle: true), @@first
|
18
|
+
end
|
16
19
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
field: 'date_of_birth', cycle: true), @jan_1929
|
22
|
-
end
|
20
|
+
test "date field" do
|
21
|
+
jan = @@feb_1965.next_record(cycle: true, field: 'date_of_birth')
|
22
|
+
assert_equal jan, @@jan_1929
|
23
|
+
end
|
23
24
|
|
24
|
-
|
25
|
-
|
25
|
+
test "integer field" do
|
26
|
+
six = @@eight.next_record(cycle: true, field: 'total_friends')
|
27
|
+
assert_equal six, @@six
|
28
|
+
end
|
26
29
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
assert_equal @eight.next_record(
|
31
|
-
cycle: true, field: 'total_friends'), @six
|
30
|
+
test "string field" do
|
31
|
+
assert_equal @@mlk.next_record(cycle: true, field: 'name'), @@huey
|
32
|
+
end
|
32
33
|
end
|
33
34
|
|
34
|
-
|
35
|
-
|
35
|
+
class PreviousRecord < CycleTest
|
36
|
+
test "default will cycle by id" do
|
37
|
+
assert_equal @@first.previous_record(cycle: true), @@third
|
38
|
+
end
|
39
|
+
|
40
|
+
test "date field" do
|
41
|
+
feb = @@jan_1929.previous_record(cycle: true, field: 'date_of_birth')
|
42
|
+
assert_equal feb, @@feb_1965
|
43
|
+
end
|
44
|
+
|
45
|
+
test "integer field" do
|
46
|
+
eight = @@six.previous_record(cycle: true, field: 'total_friends')
|
47
|
+
assert_equal eight, @@eight
|
48
|
+
end
|
36
49
|
|
37
|
-
|
38
|
-
|
39
|
-
|
50
|
+
test "string field" do
|
51
|
+
assert_equal @@huey.previous_record(cycle: true, field: 'name'), @@mlk
|
52
|
+
end
|
40
53
|
end
|
41
54
|
end
|
42
55
|
end
|
@@ -3,68 +3,113 @@ require 'nextable_test'
|
|
3
3
|
|
4
4
|
module ParamTests
|
5
5
|
class FieldTest < NextableTest
|
6
|
-
|
7
|
-
|
6
|
+
setup do
|
7
|
+
@@feb_1965, @@feb_1942, @@jan_1929 = create_three_users
|
8
8
|
|
9
|
-
#
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
# previous_record
|
14
|
-
assert_equal @feb_1965.previous_record(field: 'date_of_birth'), @feb_1942
|
15
|
-
assert_equal @feb_1942.previous_record(field: 'date_of_birth'), @jan_1929
|
16
|
-
|
17
|
-
# final record of each direction
|
18
|
-
assert_equal @jan_1929.previous_record(field: 'date_of_birth'), nil
|
19
|
-
assert_equal @feb_1965.next_record(field: 'date_of_birth'), nil
|
9
|
+
# Aliased for easier reading of individual tests
|
10
|
+
@@ten_am = @@six = @@malcolm = @@feb_1965
|
11
|
+
@@nine_am = @@eight = @@huey = @@feb_1942
|
12
|
+
@@eleven_am = @@seven = @@mlk = @@jan_1929
|
20
13
|
end
|
21
14
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
15
|
+
####
|
16
|
+
## Next Record
|
17
|
+
####
|
18
|
+
|
19
|
+
class NextRecord < FieldTest
|
20
|
+
class WithDateField < NextRecord
|
21
|
+
test "defaults" do
|
22
|
+
assert_equal @@jan_1929.next_record(field: 'date_of_birth'), @@feb_1942
|
23
|
+
assert_equal @@feb_1942.next_record(field: 'date_of_birth'), @@feb_1965
|
24
|
+
end
|
25
|
+
|
26
|
+
test "last record returns nil" do
|
27
|
+
assert_equal @@feb_1965.next_record(field: 'date_of_birth'), nil
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class WithTimeField < NextRecord
|
32
|
+
test "defaults" do
|
33
|
+
assert_equal @@nine_am.next_record(field: 'time_of_birth'), @@ten_am
|
34
|
+
assert_equal @@ten_am.next_record(field: 'time_of_birth'), @@eleven_am
|
35
|
+
end
|
36
|
+
|
37
|
+
test "last record returns nil" do
|
38
|
+
assert_equal @@eleven_am.next_record(field: 'time_of_birth'), nil
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
class WithIntegerField < NextRecord
|
43
|
+
test "defaults" do
|
44
|
+
assert_equal @@six.next_record(field: 'total_friends'), @@seven
|
45
|
+
assert_equal @@seven.next_record(field: 'total_friends'), @@eight
|
46
|
+
end
|
47
|
+
|
48
|
+
test "last record returns nil" do
|
49
|
+
assert_equal @@eight.next_record(field: 'total_friends'), nil
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
class WithStringField < NextRecord
|
54
|
+
test "defaults" do
|
55
|
+
assert_equal @@huey.next_record(field: 'name'), @@malcolm
|
56
|
+
assert_equal @@malcolm.next_record(field: 'name'), @@mlk
|
57
|
+
end
|
58
|
+
|
59
|
+
test "last record returns nil" do
|
60
|
+
assert_equal @@mlk.next_record(field: 'name'), nil
|
61
|
+
end
|
62
|
+
end
|
36
63
|
end
|
37
64
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
65
|
+
####
|
66
|
+
## Previous Record
|
67
|
+
####
|
68
|
+
|
69
|
+
class PreviousRecord < FieldTest
|
70
|
+
class WithDateField < PreviousRecord
|
71
|
+
test "defaults" do
|
72
|
+
assert_equal @@feb_1965.previous_record(field: 'date_of_birth'), @@feb_1942
|
73
|
+
assert_equal @@feb_1942.previous_record(field: 'date_of_birth'), @@jan_1929
|
74
|
+
end
|
75
|
+
|
76
|
+
test "first record returns nil" do
|
77
|
+
assert_equal @@jan_1929.previous_record(field: 'date_of_birth'), nil
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
class WithTimeField < PreviousRecord
|
82
|
+
test "defaults" do
|
83
|
+
assert_equal @@eleven_am.previous_record(field: 'time_of_birth'), @@ten_am
|
84
|
+
assert_equal @@ten_am.previous_record(field: 'time_of_birth'), @@nine_am
|
85
|
+
end
|
86
|
+
|
87
|
+
test "first record returns nil" do
|
88
|
+
assert_equal @@nine_am.previous_record(field: 'time_of_birth'), nil
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
class WithIntegerField < PreviousRecord
|
93
|
+
test "defaults" do
|
94
|
+
assert_equal @@eight.previous_record(field: 'total_friends'), @@seven
|
95
|
+
assert_equal @@seven.previous_record(field: 'total_friends'), @@six
|
96
|
+
end
|
97
|
+
|
98
|
+
test "first record returns nil" do
|
99
|
+
assert_equal @@six.previous_record(field: 'total_friends'), nil
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
class WithStringField < PreviousRecord
|
104
|
+
test "defaults" do
|
105
|
+
assert_equal @@mlk.previous_record(field: 'name'), @@malcolm
|
106
|
+
assert_equal @@malcolm.previous_record(field: 'name'), @@huey
|
107
|
+
end
|
108
|
+
|
109
|
+
test "first record returns nil" do
|
110
|
+
assert_equal @@huey.previous_record(field: 'name'), nil
|
111
|
+
end
|
112
|
+
end
|
68
113
|
end
|
69
114
|
end
|
70
115
|
end
|
@@ -4,28 +4,116 @@ require 'nextable_test'
|
|
4
4
|
module ParamTests
|
5
5
|
class FiltersTest < NextableTest
|
6
6
|
setup do
|
7
|
-
|
7
|
+
@@first, @@second, @@third, @@fourth, @@fifth, @@sixth, @@seventh = create_seven_users
|
8
|
+
@@june_opts = { filters: { date_of_birth: '1991-06-02' } }
|
9
|
+
@@int_opts = { filters: { total_friends: 1 } }
|
10
|
+
@@str_opts = { filters: { name: 'Albert' } }
|
8
11
|
end
|
9
12
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
+
class NextRecord < FiltersTest
|
14
|
+
class DateFilter < NextRecord
|
15
|
+
test "date filter default" do
|
16
|
+
assert_equal @@second.next_record(@@june_opts), @@third
|
17
|
+
assert_equal @@fifth.next_record(@@june_opts), nil
|
18
|
+
end
|
19
|
+
|
20
|
+
test "date filter with cycle" do
|
21
|
+
first = @@fourth.next_record(@@june_opts.merge(cycle: true))
|
22
|
+
assert_equal first, @@first
|
23
|
+
end
|
24
|
+
|
25
|
+
test "date filter with field" do
|
26
|
+
first = @@second.next_record(@@june_opts.merge(field: 'name'))
|
27
|
+
assert_equal first, @@first
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class IntegerFilter < NextRecord
|
32
|
+
test "integer filter default" do
|
33
|
+
assert_equal @@third.next_record(@@int_opts), @@seventh
|
34
|
+
assert_equal @@seventh.next_record(@@int_opts), nil
|
35
|
+
end
|
36
|
+
|
37
|
+
test "integer filter with cycle" do
|
38
|
+
seventh = @@third.next_record(@@int_opts.merge(cycle: true))
|
39
|
+
assert_equal seventh, @@seventh
|
40
|
+
end
|
41
|
+
|
42
|
+
test "integer filter with field" do
|
43
|
+
first = @@second.next_record(@@int_opts.merge(field: 'name'))
|
44
|
+
assert_equal first, @@first
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
class StringFilter < NextRecord
|
49
|
+
test "string filter default" do
|
50
|
+
assert_equal @@sixth.next_record(@@str_opts), @@seventh
|
51
|
+
assert_equal @@seventh.next_record(@@str_opts), nil
|
52
|
+
end
|
53
|
+
|
54
|
+
test "string filter with cycle" do
|
55
|
+
fifth = @@seventh.next_record(@@str_opts.merge(cycle: true))
|
56
|
+
assert_equal fifth, @@fifth
|
57
|
+
end
|
58
|
+
|
59
|
+
test "string filter with field" do
|
60
|
+
fifth = @@sixth.next_record(@@str_opts.merge(field: 'total_friends'))
|
61
|
+
assert_equal fifth, @@fifth
|
62
|
+
end
|
63
|
+
end
|
13
64
|
end
|
14
65
|
|
15
|
-
|
16
|
-
|
17
|
-
|
66
|
+
class PreviousRecord < FiltersTest
|
67
|
+
class DateFilter < PreviousRecord
|
68
|
+
test "date filter default" do
|
69
|
+
assert_equal @@second.previous_record(@@june_opts), @@first
|
70
|
+
assert_equal @@first.previous_record(@@june_opts), nil
|
71
|
+
end
|
72
|
+
|
73
|
+
test "date filter with cycle" do
|
74
|
+
fourth = @@first.previous_record(@@june_opts.merge(cycle: true))
|
75
|
+
assert_equal fourth, @@fourth
|
76
|
+
end
|
77
|
+
|
78
|
+
test "date filter with field" do
|
79
|
+
fourth = @@third.previous_record(@@june_opts.merge(field: 'name'))
|
80
|
+
assert_equal fourth, @@fourth
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
class IntegerFilter < PreviousRecord
|
85
|
+
test "integer filter default" do
|
86
|
+
assert_equal @@third.previous_record(@@int_opts), @@second
|
87
|
+
assert_equal @@first.previous_record(@@int_opts), nil
|
88
|
+
end
|
89
|
+
|
90
|
+
test "integer filter with cycle" do
|
91
|
+
seventh = @@first.previous_record(@@int_opts.merge(cycle: true))
|
92
|
+
assert_equal seventh, @@seventh
|
93
|
+
end
|
94
|
+
|
95
|
+
test "integer filter with field" do
|
96
|
+
third = @@second.previous_record(@@int_opts.merge(field: 'name'))
|
97
|
+
assert_equal third, @@third
|
98
|
+
end
|
99
|
+
end
|
18
100
|
|
19
|
-
|
20
|
-
|
101
|
+
class StringFilter < PreviousRecord
|
102
|
+
test "string filter default" do
|
103
|
+
assert_equal @@sixth.previous_record(@@str_opts), @@fifth
|
104
|
+
assert_equal @@fifth.previous_record(@@str_opts), nil
|
105
|
+
end
|
21
106
|
|
22
|
-
|
23
|
-
|
24
|
-
|
107
|
+
test "string filter with cycle" do
|
108
|
+
seventh = @@fifth.previous_record(@@str_opts.merge(cycle: true))
|
109
|
+
assert_equal seventh, @@seventh
|
110
|
+
end
|
25
111
|
|
26
|
-
|
27
|
-
|
28
|
-
|
112
|
+
test "string filter with field" do
|
113
|
+
seventh = @@sixth.previous_record(@@str_opts.merge(field: 'total_friends'))
|
114
|
+
assert_equal seventh, @@seventh
|
115
|
+
end
|
116
|
+
end
|
29
117
|
end
|
30
118
|
end
|
31
119
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nextable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Brigham
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|