File: test_unique_utils.rb

package info (click to toggle)
ruby-ffaker 2.23.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,776 kB
  • sloc: ruby: 12,788; makefile: 8; sh: 1
file content (78 lines) | stat: -rw-r--r-- 1,922 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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
68
69
70
71
72
73
74
75
76
77
78
# frozen_string_literal: true

require_relative 'helper'

class TestUniqueUtils < Test::Unit::TestCase
  def test_generates_unique_values
    unique_object = FFaker::UniqueUtils.new(FFaker::Name, 10_000)

    result = [unique_object.name, unique_object.name]
    assert_operator(result[0], :!=, result[1])
  end

  def test_returns_error_when_retries_exceeded
    stubbed_generator = Object.new
    def stubbed_generator.test
      1
    end

    unique_object = FFaker::UniqueUtils.new(stubbed_generator, 3)

    unique_object.test

    assert_raises FFaker::UniqueUtils::RetryLimitExceeded do
      unique_object.test
    end
  end

  def test_clears_unique_values
    stubbed_generator = Object.new
    def stubbed_generator.test
      1
    end

    unique_object = FFaker::UniqueUtils.new(stubbed_generator, 3)

    assert_equal(1, unique_object.test)

    assert_raises FFaker::UniqueUtils::RetryLimitExceeded do
      unique_object.test
    end

    unique_object.clear

    assert_equal(1, unique_object.test)
  end

  def test_clears_all_unique_values
    stubbed_generator = Object.new
    def stubbed_generator.test
      1
    end
    other_stubbed_generator = Object.new
    def other_stubbed_generator.test
      1
    end

    unique_object = FFaker::UniqueUtils.add_instance(stubbed_generator, 3)
    other_unique_object = FFaker::UniqueUtils.add_instance(other_stubbed_generator, 3)

    [unique_object, other_unique_object].each do |tested_unique_object|
      assert_equal(1, tested_unique_object.test)

      assert_raises FFaker::UniqueUtils::RetryLimitExceeded do
        tested_unique_object.test
      end
    end

    FFaker::UniqueUtils.clear

    [unique_object, other_unique_object].each do |tested_unique_object|
      assert_equal(1, tested_unique_object.test)
    end
  end

  def test_generates_unique_numbers
    assert_nothing_raised { FFaker::Number.unique.number(digits: 1) }
  end
end