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.
@@ -1,27 +1,37 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class NextableTest < ActiveSupport::TestCase
4
- class Defaults < NextableTest
5
- setup do
6
- @first, @second, @third = create_three_users
7
- end
4
+ class NextRecord < NextableTest
5
+ class Defaults < NextRecord
6
+ setup do
7
+ @first, @second, @third = create_three_users
8
+ end
8
9
 
9
- test "next_record_fetches_user_with_ascending_id" do
10
- assert_equal @first.next_record, @second
11
- assert_equal @second.next_record, @third
12
- end
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
- test "previous_record_fetches_user_with_descending_id" do
15
- assert_equal @second.previous_record, @first
16
- assert_equal @third.previous_record, @second
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
- test "last_user_next_record_returns_nil" do
20
- assert_equal @third.next_record, nil
21
- end
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
- test "first_user_previous_record_returns_nil" do
24
- assert_equal @first.previous_record, nil
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: 'Cubert', total_friends: 2, date_of_birth: 'October 26, 1990')
36
- sixth = User.create!(name: 'Bertal', total_friends: 3, date_of_birth: 'October 26, 1990')
37
- seventh = User.create!(name: 'Albert', total_friends: 3, date_of_birth: 'October 26, 1990')
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
- test "default_will_cycle_by_id" do
7
- @first, @second, @third = create_three_users
6
+ setup do
7
+ @@first, @@second, @@third = create_three_users
8
8
 
9
- # final record of each direction
10
- assert_equal @first.previous_record(cycle: true), @third
11
- assert_equal @third.next_record(cycle: true), @first
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
- test "cycle_by_date_field_example_date_of_birth" do
15
- @feb_1965, @feb_1942, @jan_1929 = create_three_users
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
- # final record of each direction
18
- assert_equal @jan_1929.previous_record(
19
- field: 'date_of_birth', cycle: true), @feb_1965
20
- assert_equal @feb_1965.next_record(
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
- test "cycle_by_integer_field_example_total_friends" do
25
- @six, @eight, @seven = create_three_users
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
- # final record of each direction
28
- assert_equal @six.previous_record(
29
- cycle: true, field: 'total_friends'), @eight
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
- test "cycle_by_string_field_example_name" do
35
- @malcolm, @huey, @mlk = create_three_users
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
- # final record of each direction
38
- assert_equal @mlk.next_record(cycle: true, field: 'name'), @huey
39
- assert_equal @huey.previous_record(cycle: true, field: 'name'), @mlk
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
- test "date_field_example_date_of_birth" do
7
- @feb_1965, @feb_1942, @jan_1929 = create_three_users
6
+ setup do
7
+ @@feb_1965, @@feb_1942, @@jan_1929 = create_three_users
8
8
 
9
- # next_record
10
- assert_equal @jan_1929.next_record(field: 'date_of_birth'), @feb_1942
11
- assert_equal @feb_1942.next_record(field: 'date_of_birth'), @feb_1965
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
- test "time_field_example_time_of_birth" do
23
- @ten_am, @nine_am, @eleven_am = create_three_users
24
-
25
- # next_record
26
- assert_equal @nine_am.next_record(field: 'time_of_birth'), @ten_am
27
- assert_equal @ten_am.next_record(field: 'time_of_birth'), @eleven_am
28
-
29
- # previous_record
30
- assert_equal @eleven_am.previous_record(field: 'time_of_birth'), @ten_am
31
- assert_equal @ten_am.previous_record(field: 'time_of_birth'), @nine_am
32
-
33
- # final record of each direction
34
- assert_equal @nine_am.previous_record(field: 'time_of_birth'), nil
35
- assert_equal @eleven_am.next_record(field: 'time_of_birth'), nil
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
- test "integer_field_example_total_friends" do
39
- @six, @eight, @seven = create_three_users
40
-
41
- # next_record
42
- assert_equal @six.next_record(field: 'total_friends'), @seven
43
- assert_equal @seven.next_record(field: 'total_friends'), @eight
44
-
45
- # previous_record
46
- assert_equal @eight.previous_record(field: 'total_friends'), @seven
47
- assert_equal @seven.previous_record(field: 'total_friends'), @six
48
-
49
- # final record of each direction
50
- assert_equal @six.previous_record(field: 'total_friends'), nil
51
- assert_equal @eight.next_record(field: 'total_friends'), nil
52
- end
53
-
54
- test "string_field_example_name" do
55
- @malcolm, @huey, @mlk = create_three_users
56
-
57
- # next_record
58
- assert_equal @huey.next_record(field: 'name'), @malcolm
59
- assert_equal @malcolm.next_record(field: 'name'), @mlk
60
-
61
- # previous_record
62
- assert_equal @mlk.previous_record(field: 'name'), @malcolm
63
- assert_equal @malcolm.previous_record(field: 'name'), @huey
64
-
65
- # final record of each direction
66
- assert_equal @huey.previous_record(field: 'name'), nil
67
- assert_equal @mlk.next_record(field: 'name'), nil
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
- @first, @second, @third, @fourth, @fifth, @sixth, @seventh = create_seven_users
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
- test "with_jun_2_1991_date_of_birth" do
11
- assert_equal @second.next_record(filters: { date_of_birth: '1991-06-02' }), @third
12
- assert_equal @fifth.next_record(filters: { date_of_birth: '1991-06-02' }), nil
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
- test "with_oct_26_1990_date_of_birth" do
16
- assert_equal @second.next_record(filters: { date_of_birth: '1990-10-26' }), @fifth
17
- assert_equal @fifth.next_record(filters: { date_of_birth: '1990-10-26' }), @sixth
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
- assert_equal @sixth.previous_record(filters: { date_of_birth: '1990-10-26' }), @fifth
20
- assert_equal @fifth.previous_record(filters: { date_of_birth: '1990-10-26' }), nil
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
- # with cycle
23
- assert_equal @fifth.previous_record(cycle: true, filters: { date_of_birth: '1990-10-26' }), @seventh
24
- assert_equal @seventh.next_record(cycle: true, filters: { date_of_birth: '1990-10-26' }), @fifth
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
- # with field param
27
- assert_equal @fifth.previous_record(field: 'name', filters: { date_of_birth: '1990-10-26' }), @sixth
28
- assert_equal @seventh.next_record(field: 'name', filters: { date_of_birth: '1990-10-26' }), @sixth
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.11
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-18 00:00:00.000000000 Z
11
+ date: 2016-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails