fbe 0.30.0 → 0.31.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,103 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
4
- # SPDX-License-Identifier: MIT
5
-
6
- require 'factbase'
7
- require 'judges/options'
8
- require 'loog'
9
- require_relative '../../lib/fbe/overwrite'
10
- require_relative '../test__helper'
11
-
12
- # Test.
13
- # Author:: Yegor Bugayenko (yegor256@gmail.com)
14
- # Copyright:: Copyright (c) 2024-2025 Zerocracy
15
- # License:: MIT
16
- class TestOverwrite < Fbe::Test
17
- def test_simple_overwrite
18
- fb = Factbase.new
19
- f = fb.insert
20
- f._id = 1
21
- f.foo = 42
22
- f.bar = 'hey you друг'
23
- f.many = 3
24
- f.many = 3.14
25
- Fbe.overwrite(f, 'foo', 55, fb:)
26
- assert_equal(55, fb.query('(always)').each.to_a.first['foo'].first)
27
- assert_equal('hey you друг', fb.query('(always)').each.to_a.first['bar'].first)
28
- assert_equal(2, fb.query('(always)').each.to_a.first['many'].size)
29
- end
30
-
31
- def test_avoids_duplicates
32
- fb = Factbase.new
33
- f = fb.insert
34
- f._id = 1
35
- f._job = 42
36
- f.foo = 'hello'
37
- Fbe.overwrite(f, 'foo', 'bye', fb:)
38
- f2 = fb.query('(exists foo)').each.to_a.first
39
- assert_equal([1], f2['_id'])
40
- assert_equal([42], f2['_job'])
41
- assert_equal(['bye'], f2['foo'])
42
- end
43
-
44
- def test_no_need_to_overwrite
45
- fb = Factbase.new
46
- f = fb.insert
47
- f._id = 1
48
- f.foo = 42
49
- fb.insert._id = 2
50
- Fbe.overwrite(f, 'foo', 42, fb:)
51
- assert_equal(1, fb.query('(always)').each.to_a.first._id)
52
- end
53
-
54
- def test_simple_insert
55
- fb = Factbase.new
56
- f = fb.insert
57
- f._id = 1
58
- Fbe.overwrite(f, 'foo', 42, fb:)
59
- assert_equal(42, fb.query('(always)').each.to_a.first['foo'].first)
60
- end
61
-
62
- def test_without_id
63
- fb = Factbase.new
64
- f = fb.insert
65
- assert_raises(StandardError) do
66
- Fbe.overwrite(f, 'foo', 42, fb:)
67
- end
68
- end
69
-
70
- def test_safe_insert
71
- fb = Factbase.new
72
- f1 = fb.insert
73
- f1.bar = 'a'
74
- f2 = fb.insert
75
- f2.bar = 'b'
76
- f2._id = 2
77
- f3 = fb.insert
78
- f3._id = 1
79
- Fbe.overwrite(f3, 'foo', 42, fb:)
80
- assert_equal(3, fb.size)
81
- end
82
-
83
- def test_overwrites_in_transaction
84
- $fb = Factbase.new
85
- $global = {}
86
- $options = Judges::Options.new(job_id: 42)
87
- $loog = Loog::Buffer.new
88
- Fbe.fb.txn do |fbt|
89
- fbt.insert.then do |f|
90
- f.issue = 444
91
- f.where = 'github'
92
- f.repository = 555
93
- f.who = 887
94
- f.when = Time.now
95
- f.foo = 1
96
- end
97
- end
98
- f1 = Fbe.fb.query('(always)').each.to_a.first
99
- Fbe.overwrite(f1, 'foo', 'bar')
100
- f2 = Fbe.fb.query('(always)').each.to_a.first
101
- assert_equal('bar', f2.foo)
102
- end
103
- end
data/test/fbe/test_pmp.rb DELETED
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
4
- # SPDX-License-Identifier: MIT
5
-
6
- require 'factbase'
7
- require 'judges/options'
8
- require 'loog'
9
- require_relative '../../lib/fbe/pmp'
10
- require_relative '../test__helper'
11
-
12
- # Test.
13
- # Author:: Yegor Bugayenko (yegor256@gmail.com)
14
- # Copyright:: Copyright (c) 2024-2025 Zerocracy
15
- # License:: MIT
16
- class TestPmp < Fbe::Test
17
- def test_defaults
18
- $fb = Factbase.new
19
- $global = {}
20
- $options = Judges::Options.new
21
- f = Fbe.fb(loog: Loog::NULL).insert
22
- f.what = 'pmp'
23
- f.area = 'hr'
24
- f.days_to_reward = 55
25
- $loog = Loog::NULL
26
- assert_equal(55, Fbe.pmp(loog: Loog::NULL).hr.days_to_reward)
27
- end
28
-
29
- def test_fail_on_wrong_area
30
- $global = {}
31
- $loog = Loog::NULL
32
- assert_raises(StandardError) { Fbe.pmp(Factbase.new, loog: Loog::NULL).something }
33
- end
34
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
4
- # SPDX-License-Identifier: MIT
5
-
6
- require 'factbase'
7
- require 'loog'
8
- require_relative '../../lib/fbe/regularly'
9
- require_relative '../test__helper'
10
-
11
- # Test.
12
- # Author:: Yegor Bugayenko (yegor256@gmail.com)
13
- # Copyright:: Copyright (c) 2024-2025 Zerocracy
14
- # License:: MIT
15
- class TestRegularly < Fbe::Test
16
- def test_simple
17
- fb = Factbase.new
18
- loog = Loog::NULL
19
- judge = 'test'
20
- 2.times do
21
- Fbe.regularly('pmp', 'interval', 'days', fb:, loog:, judge:) do |f|
22
- f.foo = 42
23
- end
24
- end
25
- assert_equal(1, fb.size)
26
- end
27
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
4
- # SPDX-License-Identifier: MIT
5
-
6
- require 'factbase'
7
- require 'judges/options'
8
- require 'loog'
9
- require_relative '../../lib/fbe/repeatedly'
10
- require_relative '../test__helper'
11
-
12
- # Test.
13
- # Author:: Yegor Bugayenko (yegor256@gmail.com)
14
- # Copyright:: Copyright (c) 2024-2025 Zerocracy
15
- # License:: MIT
16
- class TestRepeatedly < Fbe::Test
17
- def test_simple
18
- $fb = Factbase.new
19
- $loog = Loog::NULL
20
- $options = Judges::Options.new
21
- judge = 'test'
22
- $global = {}
23
- 3.times do
24
- Fbe.repeatedly('pmp', 'every_x_hours', judge:) do |f|
25
- f.foo = 42
26
- end
27
- end
28
- assert_equal(1, $fb.size)
29
- assert_equal(42, $fb.query('(always)').each.to_a.first.foo)
30
- end
31
- end
data/test/fbe/test_sec.rb DELETED
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
4
- # SPDX-License-Identifier: MIT
5
-
6
- require 'factbase'
7
- require_relative '../../lib/fbe/sec'
8
- require_relative '../test__helper'
9
-
10
- # Test.
11
- # Author:: Yegor Bugayenko (yegor256@gmail.com)
12
- # Copyright:: Copyright (c) 2024-2025 Zerocracy
13
- # License:: MIT
14
- class TestSec < Fbe::Test
15
- def test_simple
16
- fb = Factbase.new
17
- f = fb.insert
18
- f.seconds = 333
19
- assert(Fbe.sec(f).start_with?('5m'))
20
- end
21
- end
@@ -1,56 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
4
- # SPDX-License-Identifier: MIT
5
-
6
- require 'factbase'
7
- require_relative '../../lib/fbe/tombstone'
8
- require_relative '../test__helper'
9
-
10
- # Test.
11
- # Author:: Yegor Bugayenko (yegor256@gmail.com)
12
- # Copyright:: Copyright (c) 2024-2025 Zerocracy
13
- # License:: MIT
14
- class TestTombstone < Fbe::Test
15
- def test_simple
16
- fb = Factbase.new
17
- ts = Fbe::Tombstone.new(fb:)
18
- where = 'github'
19
- ts.bury!(where, 41, 13)
20
- ts.bury!(where, 42, 13)
21
- ts.bury!(where, 42, 999)
22
- assert(ts.has?(where, 41, 13))
23
- assert(ts.has?(where, 42, 999))
24
- refute(ts.has?(where, 8, 7))
25
- refute(ts.has?(where, 43, 999))
26
- refute(ts.has?(where, 43, 990))
27
- end
28
-
29
- def test_on_empty
30
- fb = Factbase.new
31
- ts = Fbe::Tombstone.new(fb:)
32
- where = 'github'
33
- refute(ts.has?(where, 8, 7))
34
- end
35
-
36
- def test_bury_twice
37
- fb = Factbase.new
38
- ts = Fbe::Tombstone.new(fb:)
39
- where = 'github'
40
- 2.times { ts.bury!(where, 42, 7) }
41
- assert(ts.has?(where, 42, 7))
42
- end
43
-
44
- def test_merges_them
45
- fb = Factbase.new
46
- ts = Fbe::Tombstone.new(fb:)
47
- where = 'github'
48
- ts.bury!(where, 42, 13)
49
- ts.bury!(where, 42, 18)
50
- ts.bury!(where, 42, 14)
51
- ts.bury!(where, 42, [17, 15, 16])
52
- assert(ts.has?(where, 42, 16))
53
- assert(ts.has?(where, 42, [16, 18]))
54
- refute(ts.has?(where, 42, 22))
55
- end
56
- end
@@ -1,66 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
4
- # SPDX-License-Identifier: MIT
5
-
6
- require 'judges/options'
7
- require 'loog'
8
- require_relative '../../lib/fbe/unmask_repos'
9
- require_relative '../test__helper'
10
-
11
- # Test.
12
- # Author:: Yegor Bugayenko (yegor256@gmail.com)
13
- # Copyright:: Copyright (c) 2024-2025 Zerocracy
14
- # License:: MIT
15
- class TestUnmaskRepos < Fbe::Test
16
- def test_simple_use
17
- opts = Judges::Options.new(
18
- {
19
- 'testing' => true,
20
- 'repositories' => 'yegor256/tacit,zerocracy/*,-zerocracy/judges-action,zerocracy/datum'
21
- }
22
- )
23
- list = Fbe.unmask_repos(options: opts, global: {}, loog: Loog::NULL)
24
- assert_predicate(list.size, :positive?)
25
- refute_includes(list, 'zerocracy/datum')
26
- end
27
-
28
- def test_iterates_them
29
- opts = Judges::Options.new({ 'testing' => true, 'repositories' => 'yegor256/tacit,zerocracy/*' })
30
- list = []
31
- Fbe.unmask_repos(options: opts, global: {}, loog: Loog::NULL) do |n|
32
- list << n
33
- end
34
- assert_predicate(list.size, :positive?)
35
- end
36
-
37
- def test_fails_on_broken_names
38
- WebMock.disable_net_connect!
39
- stub_request(:get, 'https://api.github.com/rate_limit').to_return(
40
- { body: '{}', headers: { 'X-RateLimit-Remaining' => '222' } }
41
- )
42
- stub_request(:get, 'https://api.github.com/repos/foo/bar').to_return(status: 404)
43
- options = Judges::Options.new({ 'repositories' => 'foo/bar' })
44
- assert_raises(StandardError) { Fbe.unmask_repos(options:, global: {}, loog: Loog::NULL).each.to_a }
45
- end
46
-
47
- def test_finds_case_insensitive
48
- opts = Judges::Options.new({ 'testing' => true, 'repositories' => 'Yegor256/*' })
49
- list = Fbe.unmask_repos(options: opts, global: {}, loog: Loog::NULL)
50
- assert_equal(2, list.size)
51
- end
52
-
53
- def test_live_usage
54
- skip('Run it only manually, since it touches GitHub API')
55
- opts = Judges::Options.new(
56
- {
57
- 'repositories' => 'zerocracy/*,-zerocracy/judges-action,zerocracy/datum'
58
- }
59
- )
60
- list = Fbe.unmask_repos(options: opts, global: {}, loog: Loog::NULL)
61
- assert_predicate(list.size, :positive?)
62
- assert_includes(list, 'zerocracy/pages-action')
63
- refute_includes(list, 'zerocracy/judges-action')
64
- refute_includes(list, 'zerocracy/datum')
65
- end
66
- end
data/test/fbe/test_who.rb DELETED
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
4
- # SPDX-License-Identifier: MIT
5
-
6
- require 'factbase'
7
- require 'judges/options'
8
- require 'loog'
9
- require_relative '../../lib/fbe/who'
10
- require_relative '../test__helper'
11
-
12
- # Test.
13
- # Author:: Yegor Bugayenko (yegor256@gmail.com)
14
- # Copyright:: Copyright (c) 2024-2025 Zerocracy
15
- # License:: MIT
16
- class TestWho < Fbe::Test
17
- def test_simple
18
- fb = Factbase.new
19
- f = fb.insert
20
- f.who = 444
21
- global = {}
22
- options = Judges::Options.new({ 'testing' => true })
23
- assert_equal('@torvalds', Fbe.who(f, global:, options:, loog: Loog::NULL))
24
- end
25
- end
data/test/test__helper.rb DELETED
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
4
- # SPDX-License-Identifier: MIT
5
-
6
- $stdout.sync = true
7
-
8
- ENV['RACK_ENV'] = 'test'
9
-
10
- require 'simplecov'
11
- require 'simplecov-cobertura'
12
- unless SimpleCov.running || ARGV.include?('--no-cov')
13
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(
14
- [
15
- SimpleCov::Formatter::HTMLFormatter,
16
- SimpleCov::Formatter::CoberturaFormatter
17
- ]
18
- )
19
- SimpleCov.minimum_coverage 80
20
- SimpleCov.minimum_coverage_by_file 80
21
- SimpleCov.start do
22
- add_filter 'vendor/'
23
- add_filter 'target/'
24
- add_filter 'test/'
25
- add_filter 'lib/fbe/github_graph.rb'
26
- track_files 'lib/**/*.rb'
27
- track_files '*.rb'
28
- end
29
- end
30
-
31
- require 'minitest/reporters'
32
- Minitest::Reporters.use! [Minitest::Reporters::SpecReporter.new]
33
-
34
- require 'loog'
35
- require 'minitest/autorun'
36
- require 'minitest/stub_const'
37
- require 'webmock/minitest'
38
- require_relative '../lib/fbe'
39
-
40
- # Parent class for all tests.
41
- class Fbe::Test < Minitest::Test
42
- def fake_loog
43
- Loog::NULL
44
- end
45
- end
data/test/test_fbe.rb DELETED
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
4
- # SPDX-License-Identifier: MIT
5
-
6
- require_relative '../lib/fbe'
7
- require_relative 'test__helper'
8
-
9
- # Main module test.
10
- # Author:: Yegor Bugayenko (yegor256@gmail.com)
11
- # Copyright:: Copyright (c) 2024-2025 Zerocracy
12
- # License:: MIT
13
- class TestFbe < Fbe::Test
14
- def test_simple
15
- refute_nil(Fbe::VERSION)
16
- end
17
- end