snf_core 0.2.95 → 0.2.98

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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/snf_core/auth_controller.rb +0 -42
  3. data/app/models/snf_core/quotation.rb +41 -0
  4. data/app/models/snf_core/user.rb +18 -19
  5. data/app/models/snf_core/virtual_account.rb +4 -4
  6. data/app/models/snf_core/virtual_account_transaction.rb +10 -10
  7. data/config/routes.rb +0 -3
  8. data/db/migrate/20250310122954_create_snf_core_virtual_accounts.rb +1 -1
  9. data/db/migrate/20250310143604_create_snf_core_item_requests.rb +5 -5
  10. data/db/migrate/20250312043359_create_snf_core_quotations.rb +14 -0
  11. data/lib/snf_core/version.rb +1 -1
  12. data/spec/dummy/db/schema.rb +14 -1
  13. data/spec/dummy/log/development.log +798 -0
  14. data/spec/dummy/log/test.log +16434 -0
  15. data/spec/dummy/tmp/storage/39/fi/39fibqwgi0xq9xbood6b68hlp4af +0 -0
  16. data/spec/dummy/tmp/storage/5m/j8/5mj8ypl6zxx8g3h7vqmu4p2la4pk +0 -0
  17. data/spec/dummy/tmp/storage/7u/5y/7u5ymxnw5e2jbr7037m2eth7qdkl +0 -0
  18. data/spec/dummy/tmp/storage/dw/75/dw75t7gej4irzb3hcqssl8w5vhde +0 -0
  19. data/spec/dummy/tmp/storage/dz/dq/dzdq3gkuy7tdiue1yqmciu86nzfg +0 -0
  20. data/spec/dummy/tmp/storage/iz/eu/izeu0nc2gf1beo8nvl7iblxc46oj +0 -0
  21. data/spec/dummy/tmp/storage/j4/ln/j4lnbjjufbp59yxsdetbqs0cyjia +0 -0
  22. data/spec/dummy/tmp/storage/l8/1u/l81unawd0p9c61x8k6ofq0y227yt +0 -0
  23. data/spec/dummy/tmp/storage/oh/ls/ohlsxs36tio52r2ydrbzez1u0w26 +0 -0
  24. data/spec/dummy/tmp/storage/qq/vt/qqvtf3h8ge74ce67gghth8ivch0g +0 -0
  25. data/spec/dummy/tmp/storage/uy/sl/uyslcroe2rycfyrrb5bhsfodzg5y +0 -0
  26. data/spec/dummy/tmp/storage/v5/c9/v5c9opt3yikmy2gwg4ftmde0vyt5 +0 -0
  27. data/spec/dummy/tmp/storage/za/ov/zaov1yasuhakxa5olzoed94khnf8 +0 -0
  28. data/spec/dummy/tmp/storage/zc/d6/zcd6d4lsb12obz7m7r6240qka8xw +0 -0
  29. data/spec/dummy/tmp/storage/zq/ts/zqtsmjmvozdu6y5i5d1n3kb9q0vw +0 -0
  30. data/spec/examples.txt +196 -189
  31. data/spec/factories/snf_core/quotations.rb +10 -0
  32. data/spec/models/snf_core/item_request_spec.rb +2 -2
  33. data/spec/models/snf_core/quotation_spec.rb +54 -0
  34. data/spec/models/snf_core/user_spec.rb +18 -19
  35. data/spec/models/snf_core/virtual_account_spec.rb +0 -1
  36. data/spec/models/snf_core/virtual_account_transaction_spec.rb +1 -1
  37. data/spec/requests/snf_core/auth_spec.rb +0 -84
  38. metadata +21 -2
@@ -41,7 +41,7 @@ module SnfCore
41
41
  describe 'balance validation' do
42
42
  it 'validates sufficient balance for transfer' do
43
43
  from_account = create(:virtual_account, balance: 100)
44
- transaction = build(:virtual_account_transaction,
44
+ transaction = build(:virtual_account_transaction,
45
45
  from_account: from_account,
46
46
  amount: 150
47
47
  )
@@ -68,90 +68,6 @@ module SnfCore
68
68
  end
69
69
  end
70
70
 
71
- describe "POST /reset_password_request" do
72
- context 'with invalid email' do
73
- it 'returns error for non-existent user' do
74
- post '/snf_core/auth/reset_password_request', params: { auth: { email: 'nonexistent@email.com' } }
75
- expect(response).to have_http_status(:unauthorized)
76
- expect(json_response[:success]).to be false
77
- expect(json_response[:error]).to eq("User doesn't exist")
78
- end
79
- end
80
- end
81
-
82
- describe "POST /reset_password" do
83
- let(:reset_token) { SecureRandom.hex }
84
- before { user.update(reset_password_token: reset_token) }
85
-
86
- context 'with valid token' do
87
- it 'successfully resets password' do
88
- post '/snf_core/auth/reset_password', params: {
89
- auth: {
90
- reset_password_token: reset_token,
91
- password: 'new_password123'
92
- }
93
- }
94
-
95
- expect(response).to have_http_status(:success)
96
- expect(json_response[:success]).to be true
97
- expect(user.reload.reset_password_token).to be_nil
98
- expect(user.password_changed).to be true
99
- end
100
- end
101
-
102
- context 'with invalid token' do
103
- it 'returns error for invalid token' do
104
- post '/snf_core/auth/reset_password', params: {
105
- auth: {
106
- reset_password_token: 'invalid_token',
107
- password: 'new_password123'
108
- }
109
- }
110
-
111
- expect(response).to have_http_status(:unauthorized)
112
- expect(json_response[:success]).to be false
113
- end
114
- end
115
- end
116
-
117
- describe "POST /change_password" do
118
- let(:auth_token) { TokenService.new.encode({ user: user.as_json, role: role.name }) }
119
-
120
- before do
121
- allow_any_instance_of(ApplicationController).to receive(:current_user).and_return(user)
122
- end
123
-
124
- context 'with valid current password' do
125
- it 'successfully changes password' do
126
- post '/snf_core/auth/change_password', params: {
127
- auth: {
128
- password: 'password123',
129
- new_password: 'new_password123'
130
- }
131
- }, headers: { 'Authorization': "Bearer #{auth_token}" }
132
-
133
- expect(response).to have_http_status(:success)
134
- expect(json_response[:success]).to be true
135
- expect(user.reload.password_changed).to be true
136
- end
137
- end
138
-
139
- context 'with invalid current password' do
140
- it 'returns error for wrong current password' do
141
- post '/snf_core/auth/change_password', params: {
142
- auth: {
143
- password: 'wrong_password',
144
- new_password: 'new_password123'
145
- }
146
- }, headers: { 'Authorization': "Bearer #{auth_token}" }
147
-
148
- expect(response).to have_http_status(:success)
149
- expect(json_response[:success]).to be false
150
- expect(json_response[:error]).to eq('Invalid password')
151
- end
152
- end
153
- end
154
-
155
71
 
156
72
  describe "POST /signup" do
157
73
  context 'with valid parameters' do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snf_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.95
4
+ version: 0.2.98
5
5
  platform: ruby
6
6
  authors:
7
7
  - Asrat
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-11 00:00:00.000000000 Z
10
+ date: 2025-03-12 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: active_model_serializers
@@ -303,6 +303,7 @@ files:
303
303
  - app/models/snf_core/order.rb
304
304
  - app/models/snf_core/order_item.rb
305
305
  - app/models/snf_core/product.rb
306
+ - app/models/snf_core/quotation.rb
306
307
  - app/models/snf_core/role.rb
307
308
  - app/models/snf_core/store.rb
308
309
  - app/models/snf_core/store_inventory.rb
@@ -339,6 +340,7 @@ files:
339
340
  - db/migrate/20250310133249_create_snf_core_virtual_account_transactions.rb
340
341
  - db/migrate/20250310143604_create_snf_core_item_requests.rb
341
342
  - db/migrate/20250311000000_create_snf_core_account_transfers.rb
343
+ - db/migrate/20250312043359_create_snf_core_quotations.rb
342
344
  - lib/snf_core.rb
343
345
  - lib/snf_core/engine.rb
344
346
  - lib/snf_core/version.rb
@@ -422,6 +424,7 @@ files:
422
424
  - spec/dummy/tmp/storage/35/ov/35ovg8m7ij4fjqy3v4bh28e5hld2
423
425
  - spec/dummy/tmp/storage/37/x2/37x2up33wqtrua85c089e6ltr49p
424
426
  - spec/dummy/tmp/storage/38/wp/38wpttcqfkmm1sqh4rugrsli6arz
427
+ - spec/dummy/tmp/storage/39/fi/39fibqwgi0xq9xbood6b68hlp4af
425
428
  - spec/dummy/tmp/storage/3i/8d/3i8dbcb1dk9ri0kumm3th8wo61gc
426
429
  - spec/dummy/tmp/storage/3k/7z/3k7zlcd9fm2jwn99kinxpahrmm4u
427
430
  - spec/dummy/tmp/storage/3o/2a/3o2ahddfby8aqgutow91vo4asm4f
@@ -450,6 +453,7 @@ files:
450
453
  - spec/dummy/tmp/storage/5l/n8/5ln8h3958owro1x84wkcgdnu0jqc
451
454
  - spec/dummy/tmp/storage/5m/0k/5m0k5zx08ouqos7rs09bpgmalspu
452
455
  - spec/dummy/tmp/storage/5m/4n/5m4nvbe3vqwrdpy6hujr1oq5nolv
456
+ - spec/dummy/tmp/storage/5m/j8/5mj8ypl6zxx8g3h7vqmu4p2la4pk
453
457
  - spec/dummy/tmp/storage/5n/ys/5nyszrcfj6fl2spwxjn1yea42ax0
454
458
  - spec/dummy/tmp/storage/5o/sq/5osq7rdic48at5pkcoqdpf0ios2p
455
459
  - spec/dummy/tmp/storage/5r/tv/5rtv2agppt9e52eg0oc81svs896e
@@ -481,6 +485,7 @@ files:
481
485
  - spec/dummy/tmp/storage/78/5u/785ub96ra353qygeubpq4vlifjas
482
486
  - spec/dummy/tmp/storage/7f/uh/7fuhzmriza5m3agsu0l0yovug7xi
483
487
  - spec/dummy/tmp/storage/7g/z0/7gz0olv00p0i3xqdy3f4fa6e73u2
488
+ - spec/dummy/tmp/storage/7u/5y/7u5ymxnw5e2jbr7037m2eth7qdkl
484
489
  - spec/dummy/tmp/storage/7v/55/7v55c4y5xdiw6qrvbdpmd63v4toz
485
490
  - spec/dummy/tmp/storage/82/zv/82zvnds6te3el62i8vxv8rzkc4ms
486
491
  - spec/dummy/tmp/storage/83/b1/83b1ejivo3bxawg0kv4f1jufwarp
@@ -556,8 +561,10 @@ files:
556
561
  - spec/dummy/tmp/storage/dq/p8/dqp8o7eqfob92n81thzhj4mmviwf
557
562
  - spec/dummy/tmp/storage/dr/1z/dr1z3xxvya5ywessdrhmk05b2apz
558
563
  - spec/dummy/tmp/storage/dr/6z/dr6z0vwwsxqzw0kfkwl598uciyft
564
+ - spec/dummy/tmp/storage/dw/75/dw75t7gej4irzb3hcqssl8w5vhde
559
565
  - spec/dummy/tmp/storage/dx/iu/dxiu87gi66esp528s27d805z6b1v
560
566
  - spec/dummy/tmp/storage/dz/8f/dz8ftt7idroaj4i1e6dlwnmtuu9y
567
+ - spec/dummy/tmp/storage/dz/dq/dzdq3gkuy7tdiue1yqmciu86nzfg
561
568
  - spec/dummy/tmp/storage/e2/uo/e2uoyhzlaj5538p6rjs37pbl0z9g
562
569
  - spec/dummy/tmp/storage/e6/5h/e65haeyr0sglopfuo5chz55thi9z
563
570
  - spec/dummy/tmp/storage/ef/ih/efihy3gyspz150a8mpmhvj01xr07
@@ -606,7 +613,9 @@ files:
606
613
  - spec/dummy/tmp/storage/ir/zq/irzqn6i8886usqy6bcnsghmr01kg
607
614
  - spec/dummy/tmp/storage/iu/p5/iup5sduqqzumtymzw6g75kmtj4kq
608
615
  - spec/dummy/tmp/storage/iw/19/iw191t6h61ig4a68n3rk73vjvldc
616
+ - spec/dummy/tmp/storage/iz/eu/izeu0nc2gf1beo8nvl7iblxc46oj
609
617
  - spec/dummy/tmp/storage/j0/jz/j0jz8g89xbvv61ou1cj7dztym5k3
618
+ - spec/dummy/tmp/storage/j4/ln/j4lnbjjufbp59yxsdetbqs0cyjia
610
619
  - spec/dummy/tmp/storage/j6/ym/j6ymkvvvhcdf7snmc6cardtsy9nd
611
620
  - spec/dummy/tmp/storage/j7/6x/j76x0oirv7i4t6p3blseuaknp7pw
612
621
  - spec/dummy/tmp/storage/ja/gd/jagd3s4q6qfpo12dhrit2p49dyic
@@ -634,6 +643,7 @@ files:
634
643
  - spec/dummy/tmp/storage/l4/ge/l4gelxdup4epl7lv9x5qyhatk2l6
635
644
  - spec/dummy/tmp/storage/l5/3j/l53jq75i2ywyslq3wl999vl2jmyz
636
645
  - spec/dummy/tmp/storage/l7/kw/l7kwoq4oqz0m8cr0i3y8gdjk7r33
646
+ - spec/dummy/tmp/storage/l8/1u/l81unawd0p9c61x8k6ofq0y227yt
637
647
  - spec/dummy/tmp/storage/la/a6/laa6ye8vmuyl7m1gjpkcx19cdpzq
638
648
  - spec/dummy/tmp/storage/lf/za/lfza3dsbodpk6z7iy09qbpl40frd
639
649
  - spec/dummy/tmp/storage/li/di/lidigrxrlew69ebcfx5ubeb203ck
@@ -678,6 +688,7 @@ files:
678
688
  - spec/dummy/tmp/storage/oc/zy/oczyqb5chp2fvo9kdu62c3y7pl5i
679
689
  - spec/dummy/tmp/storage/oe/bq/oebq593a6bpwkbxpx6segtwyy0jy
680
690
  - spec/dummy/tmp/storage/of/zt/ofzt1knekv9ft8direbw6fiaacvc
691
+ - spec/dummy/tmp/storage/oh/ls/ohlsxs36tio52r2ydrbzez1u0w26
681
692
  - spec/dummy/tmp/storage/ol/u8/olu875ti78gguc82spdkt9z8tpii
682
693
  - spec/dummy/tmp/storage/p5/4w/p54wycc6tln36b54yfsz2zk7hcdt
683
694
  - spec/dummy/tmp/storage/p9/hd/p9hddsr7pgksgl6vuqgtkp1ad7x2
@@ -694,6 +705,7 @@ files:
694
705
  - spec/dummy/tmp/storage/qn/1h/qn1hgmvsrnd8dkn4nvcyvqy3q2sb
695
706
  - spec/dummy/tmp/storage/qo/zx/qozxdnemk1fwxcvhe1j10ys7mxcq
696
707
  - spec/dummy/tmp/storage/qp/hi/qphia48836lod6l2ao5ca6ocd8ws
708
+ - spec/dummy/tmp/storage/qq/vt/qqvtf3h8ge74ce67gghth8ivch0g
697
709
  - spec/dummy/tmp/storage/qs/jk/qsjkqiiarr85uobud0qsnnmpraol
698
710
  - spec/dummy/tmp/storage/qw/7z/qw7zsf91njf7ga6454nrjpvddjn5
699
711
  - spec/dummy/tmp/storage/r6/6f/r66f8sxtwvlk8c1ava46bgua5hn0
@@ -742,8 +754,10 @@ files:
742
754
  - spec/dummy/tmp/storage/uq/jk/uqjkltli1s6vz51g6yu551ze48c1
743
755
  - spec/dummy/tmp/storage/ur/f0/urf0ml010ripl9eks0kitboy5hko
744
756
  - spec/dummy/tmp/storage/ux/te/uxtezp2rqztn4cernmn7477gukxe
757
+ - spec/dummy/tmp/storage/uy/sl/uyslcroe2rycfyrrb5bhsfodzg5y
745
758
  - spec/dummy/tmp/storage/v1/a2/v1a2h0c0xy9cuejexqy3a8ix794i
746
759
  - spec/dummy/tmp/storage/v4/yi/v4yieu5kcx0jz3ephiptzr46djev
760
+ - spec/dummy/tmp/storage/v5/c9/v5c9opt3yikmy2gwg4ftmde0vyt5
747
761
  - spec/dummy/tmp/storage/v8/cs/v8csqmcgvc4z177g5hfmp7twf6ay
748
762
  - spec/dummy/tmp/storage/va/sc/vascc4h0c7dv7uwwcn2wdvx6qyhy
749
763
  - spec/dummy/tmp/storage/vb/z1/vbz124po6xcx6fbh4nefle8r6of3
@@ -790,11 +804,14 @@ files:
790
804
  - spec/dummy/tmp/storage/z5/qs/z5qs5fq00igr3xv5izgcyhhsdw7y
791
805
  - spec/dummy/tmp/storage/z5/sg/z5sgd1au9gcfkqb3kq82f3yry6a6
792
806
  - spec/dummy/tmp/storage/z7/8n/z78nuzozxx53c7cpp3e4kt3nghaa
807
+ - spec/dummy/tmp/storage/za/ov/zaov1yasuhakxa5olzoed94khnf8
793
808
  - spec/dummy/tmp/storage/zb/ke/zbkeh8j7fx7u3fqu28anb6mso6xz
809
+ - spec/dummy/tmp/storage/zc/d6/zcd6d4lsb12obz7m7r6240qka8xw
794
810
  - spec/dummy/tmp/storage/zc/i3/zci3kt86sywh9q6u7xv7yt38xznu
795
811
  - spec/dummy/tmp/storage/zf/bm/zfbmpgsfvuwwpvsa2i11z5x5usgp
796
812
  - spec/dummy/tmp/storage/zk/3v/zk3vlz1al2rba9wlkzoa6p8wpli0
797
813
  - spec/dummy/tmp/storage/zk/xs/zkxsr1zywhaydz0cep4eh8mmos46
814
+ - spec/dummy/tmp/storage/zq/ts/zqtsmjmvozdu6y5i5d1n3kb9q0vw
798
815
  - spec/dummy/tmp/storage/zx/ur/zxuraz59df480azmknqbfeb37ktm
799
816
  - spec/examples.txt
800
817
  - spec/factories/snf_core/account_transfers.rb
@@ -809,6 +826,7 @@ files:
809
826
  - spec/factories/snf_core/order_items.rb
810
827
  - spec/factories/snf_core/orders.rb
811
828
  - spec/factories/snf_core/products.rb
829
+ - spec/factories/snf_core/quotations.rb
812
830
  - spec/factories/snf_core/roles.rb
813
831
  - spec/factories/snf_core/store_inventories.rb
814
832
  - spec/factories/snf_core/stores.rb
@@ -831,6 +849,7 @@ files:
831
849
  - spec/models/snf_core/order_item_spec.rb
832
850
  - spec/models/snf_core/order_spec.rb
833
851
  - spec/models/snf_core/product_spec.rb
852
+ - spec/models/snf_core/quotation_spec.rb
834
853
  - spec/models/snf_core/role_spec.rb
835
854
  - spec/models/snf_core/store_inventory_spec.rb
836
855
  - spec/models/snf_core/store_spec.rb