fbe 0.26.3 → 0.26.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: abc174c5cc79f530c5b4fda5b142975fa0dbf6d5e4f9115b9f7534fbf7615936
4
- data.tar.gz: '097a486dacea81298ae350b6814c99176aa19ff68dfdfc17ed03bfd9fa7c2023'
3
+ metadata.gz: c1c2e421e74e63ab817c2f7b55ebb6088f2af186d70bde2709d65e5139de5ce0
4
+ data.tar.gz: 74dbb872f910195b242b786196833225a4fe65e67658defd7b604a7c770e9bea
5
5
  SHA512:
6
- metadata.gz: 67ec27c240a1ffe651d5dec12808ff8a4c4819dd40427937aafbe487254d0159011ce331611e1cb0c77be469df85bf52f56cc51725c7b2eaa0cb13f1ef900b42
7
- data.tar.gz: 8358352899f9973b85f288eaf9510618ddf3abf69922d5458a381066b06e3497616c5d6da49381644948c3f99ccbee6f982be4d387b26f5b4f6ee9bfba18f7ab
6
+ metadata.gz: 1933bc86835d0d2ac2e93d098a6bdb289f0be6a6a4610c0acb1a051b8dc0468006d744d5fb4283a704a06c5b03498f08e2af06fdb02f964d234ae2c35368809b
7
+ data.tar.gz: ae93875f77de5d16a70509d24df508e0dc8c46aec23176ae0aae7482c449d88105803e8e23ca76d52679ca522519c40479699f0a240d393fd2461850bb3c64d0
@@ -16,6 +16,6 @@ jobs:
16
16
  runs-on: ubuntu-24.04
17
17
  steps:
18
18
  - uses: actions/checkout@v4
19
- - uses: crate-ci/typos@v1.35.1
19
+ - uses: crate-ci/typos@v1.35.2
20
20
  with:
21
21
  config: .github/.typos.toml
data/lib/fbe/delete.rb CHANGED
@@ -34,10 +34,11 @@ def Fbe.delete(fact, *props, fb: Fbe.fb, id: '_id')
34
34
  before[k] = v
35
35
  end
36
36
  end
37
+ before.delete(id)
37
38
  fb.query("(eq #{id} #{i})").delete!
38
39
  c = fb.insert
39
40
  before.each do |k, v|
40
- c.send(:"#{k}=", v)
41
+ c.send(:"#{k}=", v) if c[k].nil?
41
42
  end
42
43
  c
43
44
  end
data/lib/fbe/fb.rb CHANGED
@@ -33,7 +33,7 @@ def Fbe.fb(fb: $fb, global: $global, options: $options, loog: $loog)
33
33
  raise 'The $loog is not set' if loog.nil?
34
34
  global[:fb] ||=
35
35
  begin
36
- rules = Dir.glob(File.join('rules', '*.fe')).map { |f| File.read(f) }
36
+ rules = Dir.glob(File.join(File.join(__dir__, '../../rules'), '*.fe')).map { |f| File.read(f) }
37
37
  fbe = Factbase::Rules.new(
38
38
  fb,
39
39
  "(and \n#{rules.join("\n")}\n)",
data/lib/fbe.rb CHANGED
@@ -10,5 +10,5 @@
10
10
  # License:: MIT
11
11
  module Fbe
12
12
  # Current version of the gem (changed by +.rultor.yml+ on every release)
13
- VERSION = '0.26.3' unless const_defined?(:VERSION)
13
+ VERSION = '0.26.5' unless const_defined?(:VERSION)
14
14
  end
data/rules/basic.fe CHANGED
@@ -63,6 +63,12 @@
63
63
  (one _time)
64
64
  (eq "Time" (type _time)))))
65
65
 
66
+ (explain (when
67
+ (exists _job)
68
+ (and
69
+ (one _job)
70
+ (eq "Integer" (type _job)))))
71
+
66
72
  (explain (when
67
73
  (exists _version)
68
74
  (and
@@ -21,7 +21,9 @@ class TestCopy < Fbe::Test
21
21
  f2._id = 2
22
22
  Fbe.copy(f1, f2)
23
23
  assert_equal(2, f2._id)
24
+ assert_equal([2], f2['_id'])
24
25
  assert_equal(42, f2.foo)
26
+ assert_equal([42], f2['foo'])
25
27
  end
26
28
 
27
29
  def test_with_except
@@ -4,7 +4,10 @@
4
4
  # SPDX-License-Identifier: MIT
5
5
 
6
6
  require 'factbase'
7
+ require 'judges/options'
8
+ require 'loog'
7
9
  require_relative '../../lib/fbe/delete'
10
+ require_relative '../../lib/fbe/fb'
8
11
  require_relative '../test__helper'
9
12
 
10
13
  # Test.
@@ -34,4 +37,37 @@ class TestDelete < Fbe::Test
34
37
  assert_equal(1, fb.size)
35
38
  assert_equal(0, fb.query('(exists hey)').each.to_a.size)
36
39
  end
40
+
41
+ def test_deletes_safely
42
+ $fb = Factbase.new
43
+ $global = {}
44
+ $options = Judges::Options.new(job_id: 42)
45
+ $loog = Loog::Buffer.new
46
+ f = Fbe.fb.insert
47
+ f.foo = 'hello'
48
+ Fbe.delete(f, 'foo')
49
+ f2 = Fbe.fb.query('(always)').each.to_a.first
50
+ assert_equal([1], f2['_id'])
51
+ assert_equal([42], f2['_job'])
52
+ end
53
+
54
+ def test_deletes_id
55
+ fb = Factbase.new
56
+ f = fb.insert
57
+ f._id = 44
58
+ Fbe.delete(f, '_id', fb:)
59
+ f2 = fb.query('(always)').each.to_a.first
60
+ assert_nil(f2['_id'])
61
+ assert_empty(f2.all_properties)
62
+ end
63
+
64
+ def test_deletes_when_duplicate_id
65
+ fb = Factbase.new
66
+ f = fb.insert
67
+ f._id = 44
68
+ f._id = 45
69
+ Fbe.delete(f, '_id', fb:)
70
+ f2 = fb.query('(always)').each.to_a.first
71
+ assert_nil(f2['_id'])
72
+ end
37
73
  end
data/test/fbe/test_fb.rb CHANGED
@@ -49,6 +49,30 @@ class TestFb < Fbe::Test
49
49
  end
50
50
  end
51
51
 
52
+ def test_defends_against_duplicates
53
+ $fb = Factbase.new
54
+ $global = {}
55
+ $options = Judges::Options.new
56
+ $loog = Loog::Buffer.new
57
+ assert_raises(StandardError) do
58
+ Fbe.fb.insert.then do |f|
59
+ f._id = 42
60
+ f._id = 43
61
+ end
62
+ end
63
+ end
64
+
65
+ def test_sets_job
66
+ $fb = Factbase.new
67
+ $global = {}
68
+ $options = Judges::Options.new(job_id: 42)
69
+ $loog = Loog::Buffer.new
70
+ f = Fbe.fb.insert
71
+ f.what = 'hello'
72
+ f = Fbe.fb.query('(eq what "hello")').each.to_a.first
73
+ assert_equal([42], f['_job'])
74
+ end
75
+
52
76
  def test_increment_id_in_transaction
53
77
  $fb = Factbase.new
54
78
  $global = {}
@@ -176,7 +176,7 @@ class TestOcto < Fbe::Test
176
176
  { body: '', headers: { 'X-RateLimit-Remaining' => '5555' } },
177
177
  { body: '', headers: { 'X-RateLimit-Remaining' => '5' } }
178
178
  )
179
- o = Fbe.octo(loog: Loog::VERBOSE, global: {}, options: Judges::Options.new)
179
+ o = Fbe.octo(loog: Loog::NULL, global: {}, options: Judges::Options.new)
180
180
  refute_predicate(o, :off_quota?)
181
181
  o.user(42)
182
182
  refute_predicate(o, :off_quota?)
@@ -26,6 +26,19 @@ class TestOverwrite < Fbe::Test
26
26
  assert_equal(2, fb.query('(always)').each.to_a.first['many'].size)
27
27
  end
28
28
 
29
+ def test_avoids_duplicates
30
+ fb = Factbase.new
31
+ f = fb.insert
32
+ f._id = 1
33
+ f._job = 42
34
+ f.foo = 'hello'
35
+ Fbe.overwrite(f, 'foo', 'bye', fb:)
36
+ f2 = fb.query('(exists foo)').each.to_a.first
37
+ assert_equal([1], f2['_id'])
38
+ assert_equal([42], f2['_job'])
39
+ assert_equal(['bye'], f2['foo'])
40
+ end
41
+
29
42
  def test_overwrite_twice
30
43
  fb = Factbase.new
31
44
  f = fb.insert
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fbe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.26.3
4
+ version: 0.26.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko