diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 9752cc19..aa57bf3d 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -12,6 +12,9 @@ on: required: false type: string secrets: + codecov_token: + description: Codecov token + required: true rails_master_key: description: The Rails master key required: true @@ -118,5 +121,21 @@ jobs: env: RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }} run: | + mkdir coverage docker run -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_HOST=localhost -e \ - RAILS_MASTER_KEY --network=host app bin/ci.sh spec + RAILS_MASTER_KEY --network=host -v "$(pwd)"'/coverage:/app/coverage' app bin/ci.sh spec + + - name: Upload coverage report to Codecov + if: ${{ !cancelled() }} + uses: codecov/codecov-action@54bcd8715eee62d40e33596ef5e8f0f48dbbccab # v4.1.0 + with: + fail_ci_if_error: true + token: ${{ secrets.CODECOV_TOKEN }} + + - name: Upload coverage report artifact + if: ${{ !cancelled() }} + uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 + with: + name: coverage + path: coverage/ + if-no-files-found: error diff --git a/Gemfile b/Gemfile index 44b407d0..beeb6ed8 100644 --- a/Gemfile +++ b/Gemfile @@ -80,6 +80,7 @@ group :test do gem 'rubocop-rails', require: false gem 'rubocop-rspec', require: false gem 'simplecov', require: false + gem 'simplecov-lcov', '~> 0.8.0', require: false gem 'terminal-notifier-guard' gem 'timecop' gem 'vcr' diff --git a/Gemfile.lock b/Gemfile.lock index 2a8557a5..495b46fc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -473,6 +473,7 @@ GEM simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) simplecov-html (0.12.3) + simplecov-lcov (0.8.0) simplecov_json_formatter (0.1.4) slack-notifier (2.4.0) spoon (0.0.6) @@ -596,6 +597,7 @@ DEPENDENCIES sidekiq (~> 6.0) sidekiq-scheduler (~> 5.0, >= 5.0.2) simplecov + simplecov-lcov (~> 0.8.0) slack-notifier (~> 2.0) spring spring-commands-rspec @@ -609,4 +611,4 @@ DEPENDENCIES webmock BUNDLED WITH - 2.2.33 + 2.4.14 diff --git a/README.md b/README.md index 06c9814c..55e1a58d 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ Alpha AMBER API ================ [![Continuous Integration](https://github.com/csvalpha/amber-api/actions/workflows/continuous-integration.yml/badge.svg)](https://github.com/csvalpha/amber-api/actions/workflows/continuous-integration.yml) [![Continuous Delivery](https://github.com/csvalpha/amber-api/actions/workflows/continuous-delivery.yml/badge.svg)](https://github.com/csvalpha/amber-api/actions/workflows/continuous-delivery.yml) +[![codecov](https://codecov.io/github/csvalpha/amber-api/graph/badge.svg)](https://codecov.io/github/csvalpha/amber-api) ## Prerequisites If you're going to run the project with Docker, you only need to install the following prerequisites: diff --git a/app/resources/v1/application_resource.rb b/app/resources/v1/application_resource.rb index 7dbf63e5..ca74a3bf 100644 --- a/app/resources/v1/application_resource.rb +++ b/app/resources/v1/application_resource.rb @@ -11,7 +11,6 @@ class V1::ApplicationResource < JSONAPI::Resource def self.creatable_fields(_context) [] end - # :nocov: def self.updatable_fields(context) @@ -22,7 +21,6 @@ def self.updatable_fields(context) def self.searchable_fields [] end - # :nocov: def self.apply_filter(records, filter, value, options) @@ -79,9 +77,11 @@ def current_user context.fetch(:user) end + # :nocov: def current_application context.fetch(:application) end + # :nocov: def self.current_user_or_application(options) options.fetch(:context).fetch(:user) || options.fetch(:context).fetch(:application) diff --git a/app/resources/v1/group_resource.rb b/app/resources/v1/group_resource.rb index d9e91c81..119784e0 100644 --- a/app/resources/v1/group_resource.rb +++ b/app/resources/v1/group_resource.rb @@ -20,10 +20,8 @@ def description_camofied has_many :permissions filter :active, apply: ->(records, _value, _options) { records.active } - filter :kind, apply: ->(records, value, _options) { records.where(kind: value[0]) } - filter :administrative, (lambda do |records, value, _options| - records.where(administrative: value[0]) - end) + filter :kind + filter :administrative def fetchable_fields return super - [:avatar] if current_user diff --git a/spec/jobs/sentry_job_spec.rb b/spec/jobs/sentry_job_spec.rb new file mode 100644 index 00000000..bafb9f00 --- /dev/null +++ b/spec/jobs/sentry_job_spec.rb @@ -0,0 +1,14 @@ +require 'rails_helper' + +RSpec.describe SentryJob, type: :job do + describe '#perform' do + let(:job) { described_class.new } + + before do + allow(Raven).to receive(:send_event) + job.perform('Example event') + end + + it { expect(Raven).to have_received(:send_event).with('Example event') } + end +end diff --git a/spec/requests/v1/activities_controller/ical_spec.rb b/spec/requests/v1/activities_controller/ical_spec.rb index 39b9eccd..3e17462f 100644 --- a/spec/requests/v1/activities_controller/ical_spec.rb +++ b/spec/requests/v1/activities_controller/ical_spec.rb @@ -89,6 +89,9 @@ categories: 'algemeen,sociƫteit,vorming,invalid_cat,birthdays' }) end + let(:group) { create(:group, name: 'Leden') } + let(:membership) { create(:membership, user:, group:, start_date: 1.month.ago) } + let(:activity) { create(:activity, category: 'algemeen') } let(:second_activity) { create(:activity, category: 'vorming') } @@ -103,12 +106,15 @@ end before do + group + membership activity second_activity filtered_activity end it_behaves_like '200 OK' + it { expect(ical_events.map(&:summary).to_s).to include("Verjaardag #{user.full_name}") } it { expect(ical_events.map(&:summary).to_s).to include(activity.title) } it { expect(request.body).not_to include(filtered_activity.title) } it { expect(ical_events.count).to eq 2 + birthday_users.count } diff --git a/spec/requests/v1/activities_controller/index_spec.rb b/spec/requests/v1/activities_controller/index_spec.rb index 607be1cd..91565fcd 100644 --- a/spec/requests/v1/activities_controller/index_spec.rb +++ b/spec/requests/v1/activities_controller/index_spec.rb @@ -13,5 +13,19 @@ it_behaves_like 'a publicly visible index request' do let(:model_name) { :activity } end + + describe 'sortable attributes' do + context 'when valid' do + let(:record_url) { '/v1/activities?sort=-form.respond_until' } + + it_behaves_like '200 OK' + end + + context 'when invalid' do + let(:record_url) { '/v1/activities?sort=form.id' } + + it_behaves_like '400 Bad Request' + end + end end end diff --git a/spec/requests/v1/daily_verses_controller/index_spec.rb b/spec/requests/v1/daily_verses_controller/index_spec.rb index 1e5f63f9..b5ecd483 100644 --- a/spec/requests/v1/daily_verses_controller/index_spec.rb +++ b/spec/requests/v1/daily_verses_controller/index_spec.rb @@ -6,7 +6,7 @@ let(:cache) { Rails.cache } let(:record_url) { '/v1/daily_verses' } let(:request) do - VCR.use_cassette('retrieve_daily_verse') do + VCR.use_cassette('retrieve_daily_verse', tag: :daily_verse) do get record_url end end diff --git a/spec/requests/v1/groups_controller/index_spec.rb b/spec/requests/v1/groups_controller/index_spec.rb index e47542e0..efd5cf00 100644 --- a/spec/requests/v1/groups_controller/index_spec.rb +++ b/spec/requests/v1/groups_controller/index_spec.rb @@ -30,5 +30,31 @@ } end end + + describe 'filters' do + include_context 'when authenticated' do + let(:user) { create(:user, user_permission_list: [record_permission]) } + end + + let(:filtered_request) do + get("#{record_url}?filter[administrative]=true") + end + + let(:administrative_group) { create(:group, administrative: true) } + let(:expected_ids) { [administrative_group.id] } + + subject(:request) { filtered_request } + + before do + administrative_group + end + + it_behaves_like '200 OK' + it { expect(json_object_ids).to match_array(expected_ids) } + it { expect(json_object_ids.count).to equal(1) } + it { expect(json_object_ids).to include(administrative_group.id) } + it { expect(json_object_ids).not_to include(records[0].id) } + it { expect(json_object_ids).not_to include(records[1].id) } + end end end diff --git a/spec/resources/v1/activity_resource_spec.rb b/spec/resources/v1/activity_resource_spec.rb index dad1f37a..fc64a31a 100644 --- a/spec/resources/v1/activity_resource_spec.rb +++ b/spec/resources/v1/activity_resource_spec.rb @@ -37,4 +37,24 @@ it { expect(filtered.length).to eq 1 } end end + + describe 'sort' do + let(:sorted) { described_class.apply_sort(records, sort, context) } + + describe 'form.respond_until' do + let(:records) { Activity.all } + let(:sort) { { 'form.respond_until' => :desc } } + let(:form) { create(:form, respond_until: 1.day.from_now) } + let(:other_form) { create(:form, respond_until: 2.days.from_now) } + let(:activity) { create(:activity, form:) } + let(:other_activity) { create(:activity, form: other_form) } + + before do + activity + other_activity + end + + it { expect(sorted).to match_array [other_activity, activity] } + end + end end diff --git a/spec/resources/v1/group_resource_spec.rb b/spec/resources/v1/group_resource_spec.rb index a6032c4c..82cac9a4 100644 --- a/spec/resources/v1/group_resource_spec.rb +++ b/spec/resources/v1/group_resource_spec.rb @@ -47,7 +47,7 @@ end describe 'administrative' do - let(:filter) { { administrative: ['true'] } } + let(:filter) { { administrative: [true] } } let(:group) { create(:group, administrative: true) } let(:other_group) { create(:group, administrative: false) } diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index f491e970..913adbc1 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,8 +1,8 @@ require 'simplecov' +require 'simplecov-lcov' +SimpleCov.formatter = SimpleCov::Formatter::LcovFormatter SimpleCov.start 'rails' do - add_filter 'app/jobs/sentry_job.rb' - minimum_coverage 95 minimum_coverage_by_file 95 end @@ -30,4 +30,8 @@ VCR.configure do |config| config.cassette_library_dir = 'spec/vcr_cassettes' config.hook_into :webmock + config.filter_sensitive_data('', :daily_verse) do + Base64.strict_encode64("#{Rails.application.config.x.daily_verse_user}:"\ + "#{Rails.application.config.x.daily_verse_password}") + end end diff --git a/spec/vcr_cassettes/retrieve_daily_verse.yml b/spec/vcr_cassettes/retrieve_daily_verse.yml index 2585660b..8f0e1b61 100644 --- a/spec/vcr_cassettes/retrieve_daily_verse.yml +++ b/spec/vcr_cassettes/retrieve_daily_verse.yml @@ -16,36 +16,63 @@ http_interactions: User-Agent: - Ruby Authorization: - - Basic aWN0QGNzdmFscGhhLm5sOjdjNTRlMzI0NzQ1M2FiYTBiYWFkMDllMDIxYWZjMTNhYWMwYjhiN2M= + - Basic response: status: code: 200 message: OK headers: - Date: - - Mon, 18 Feb 2019 19:40:03 GMT Server: - - Apache - Vary: - - Accept-Encoding - Content-Length: - - '2751' + - nginx + Date: + - Sat, 14 Oct 2023 04:28:55 GMT Content-Type: - - text/html; charset=UTF-8 + - application/json + Content-Length: + - '8507' + Connection: + - keep-alive + Report-To: + - '{"group":"default","max_age":10886400,"endpoints":[{"url":"https://api.jxs.nl/urireport/report.php"}],"include_subdomains":true}' + Nel: + - '{"report_to":"default","max_age":2592000,"include_subdomains":true,"failure_fraction":1.0}' + Permissions-Policy: + - interest-cohort=() + X-Frame-Options: + - sameorigin + X-Content-Type-Options: + - nosniff + Referrer-Policy: + - strict-origin-when-cross-origin X-Varnish: - - 4839335 4899610 + - 1386430 1211403 Age: - - '1503' + - '384' Via: - - 1.1 varnish (Varnish/5.2) + - 1.1 varnish (Varnish/6.0) Accept-Ranges: - bytes - Connection: - - keep-alive body: - encoding: ASCII-8BIT - string: '{"translations":{"nbv":"Nieuwe Bijbelvertaling","nbg":"NBG51","statenvertaling":"Statenvertaling","willibrord":"Willibrord","hsv":"Herziene - Statenvertaling","naardense":"Naardense Bijbel","bgt":"Bijbel in Gewone Taal"},"copyrights":{"willibrord":"De + encoding: UTF-8 + string: '{"_readme":{"how_to_use":"Please visit https:\/\/www.dagelijkswoord.nl\/verspreiden\/json-feed","donatie":"Deze + informatie wordt u gratis aangeboden door Stichting Dagelijks Woord. Wilt + u een bijdrage leveren om het doorontwikkelen van deze app en andere bijbel-diensten + mogelijk te maken, dan kan dat via http:\/\/www.dagelijkswoord.nl\/over\/donatie","use + in an app":"Als u onze content gebruikt in uw app, gaat dat ten koste van + het aantal gebruikers wat onze eigen app gebruikt. Dat is prima, het belangrijkste + is dat mensen Gods Woord lezen. Maar bij minder gebruikers van de app missen + we wel de inkomsten die we hard nodig hebben om onze eigen Bijbel-diensten + door te ontwikkelen. Daarom vragen we u vriendelijk op de eerste niet-zondag + tussen kerst en de jaarwisseling de tekst uit in_app_use.app_text aan gebruikers + te tonen en hierbij de link uit in_app_use.app_link te gebruiken. Dit is niet + verplicht, maar wordt wel zeer op prijs gesteld.","link":"If you''re using + the data from this feed, please be so kind to link to our website.","let op + - nbg21":"De vertaling nbg21 is een typefout en zal per 31 december 2023 uit + de API verdwijnen. Gebruik nbv21 in plaats daarvan."},"in_app_use":{"app_text":"Deze + app maakt gebruik van de Bijbelteksten van Stichting Dagelijks Woord. Steunt + u de doorontwikkeling van Dagelijks Woord met een bijdrage?","app_link":"https:\/\/www.dagelijkswoord.nl\/inbound-link\/donate\/?query_from=%YOURAPPNAME%"},"translations":{"nbv":"Nieuwe + Bijbelvertaling","nbg":"NBG51","statenvertaling":"Statenvertaling","willibrord":"Willibrord","hsv":"Herziene + Statenvertaling","naardense":"Naardense Bijbel","bgt":"Bijbel in Gewone Taal","nbv21":"NBV21","bb":"BasisBijbel","nbg21":"NBV21"},"copyrights":{"willibrord":"De bijbeltekst in deze uitgave is ontleend aan de Willibrordvertaling (herziene editie), (C) Katholieke Bijbelstichting 1995.","statenvertaling":"De bijbeltekst in deze uitgave is ontleend aan de Statenvertaling 1977, (C) Nederlands Bijbelgenootschap @@ -57,100 +84,77 @@ http_interactions: ontleend aan de Bijbel in de Herziene Statenvertaling, (C) Stichting HSV 2010. Alle rechten voorbehouden, (C) Stichting HSV en Uitgeverij Jongbloed - Heerenveen.","bgt":"Deze bijbeltekst komt uit de Bijbel in Gewone Taal, (C) Nederlands Bijbelgenootschap - 2014."},"data":[{"ts":"2019-02-18","source":"Jeremia 29:11-14a","fulltext":"http:\/\/bijbel.dagelijkswoord.nl\/bijbel\/Jeremia+29%3A11-14a?from=json","wpId":"5920","text":{"nbv":"Mijn - plan met jullie staat vast - spreekt de HEER. Ik heb jullie geluk voor ogen, - niet jullie ongeluk: ik zal je een hoopvolle toekomst geven. Jullie zullen - mij aanroepen en tot mij bidden, en ik zal naar jullie luisteren. Jullie zullen - mij zoeken en ook vinden, als jullie mij tenminste met hart en ziel zoeken. - Ik zal me door jullie laten vinden - spreekt de HEER - en ik zal in je lot - een keer brengen. Ik zal jullie samenbrengen uit alle volken en plaatsen waarheen - ik je verbannen heb - spreekt de HEER - en je laten terugkeren naar Jeruzalem, - waaruit ik je heb laten wegvoeren.","nbg":"Want Ik weet, welke gedachten Ik - over u koester, luidt het woord des HEREN, gedachten van vrede en niet van - onheil, om u een hoopvolle toekomst te geven. Dan zult gij Mij aanroepen en - heengaan en tot Mij bidden, en Ik zal naar u horen; dan zult gij Mij zoeken - en vinden, wanneer gij naar Mij vraagt met uw ganse hart. Dan zal Ik Mij door - u laten vinden, luidt het woord des HEREN, en in uw lot een keer brengen; - dan zal Ik u verzamelen uit alle volkeren en van alle plaatsen waarheen Ik - u verstoten heb, luidt het woord des HEREN, en u terugbrengen naar de plaats - vanwaar Ik u in ballingschap heb doen wegvoeren.","statenvertaling":"Want - Ik weet de gedachten, die Ik over u denk, spreekt de HEERE, gedachten des - vredes, en niet des kwaads, dat Ik u geve het einde en de verwachting. Dan - zult gij Mij aanroepen, en henengaan, en tot Mij bidden; en Ik zal naar u - horen. En gij zult Mij zoeken en vinden, wanneer gij naar Mij zult vragen - met uw ganse hart. En Ik zal van ulieden gevonden worden, spreekt de HEERE, - en Ik zal uw gevangenis wenden, en u vergaderen uit al de volken, en uit al - de plaatsen, waarhenen Ik u gedreven heb, spreekt de HEERE; en Ik zal u wederbrengen - tot de plaats, van waar Ik u gevankelijk heb doen wegvoeren.","willibrord":"Ik - ken de plannen die Ik met u heb - godsspraak van de HEER. Ze hebben uw heil - op het oog, niet uw ongeluk, en een hoopvolle toekomst. Als u Mij aanroept - en tot Mij bidt, zal Ik u verhoren. Als u Mij zoekt, met heel uw hart zoekt, - zult u Mij vinden, dan laat Ik mij vinden - godsspraak van de HEER. Ik herstel - u weer in uw vroegere staat; uit de versnippering over alle volken en plaatsen - breng Ik u weer samen - godsspraak van de HEER. Ik breng u terug naar deze - plaats, waaruit Ik u heb weggevoerd.","hsv":"Ik immers, Ik ken de gedachten - die Ik over u koester, spreekt de HEERE. Het zijn gedachten van vrede en niet - van kwaad, namelijk om u toekomst en hoop te geven. Dan zult u Mij aanroepen - en heengaan, u zult tot Mij bidden en Ik zal naar u luisteren. U zult Mij - zoeken en vinden, wanneer u naar Mij zult vragen met heel uw hart. Ik zal - door u gevonden worden, spreekt de HEERE, Ik zal een omkeer brengen in uw - gevangenschap en u bijeenbrengen uit alle volken en uit alle plaatsen waarheen - Ik u verdreven heb, spreekt de HEERE, en Ik zal u terugbrengen naar de plaats - vanwaar Ik u in ballingschap heb gevoerd.","naardense":"Want zelf ken ik de - gedachten het best die ik over u denk, is de tijding van de Ene,- gedachten - van vrede en niet van kwaad: u een toekomst te geven en goede hoop. Roepen - zult ge mij en voortgaan tot mij te bidden,- en ik zal naar u horen; zoeken - zult ge mij en vinden,- wanneer ge naar mij vragen zult met heel uw hart; - ik zal mij door u laten vinden, is de tijding van de Ene, en in uw kerkering - een keer brengen: verzamelen zal ik u uit alle volkeren en uit alle oorden - waarheen ik u heb weggestoten, is de tijding van de Ene; doen terugkeren zal - ik u naar het oord waaruit ik u heb verbannen.","bgt":"Dit is mijn besluit, - dit is mijn plan met jullie: Het zal goed met jullie aflopen, niet slecht. - Ik zorg dat er voor jullie een nieuwe tijd komt. Ik zal jullie nieuwe hoop - geven. In die tijd zullen jullie weer tot mij bidden, en zal ik naar jullie - luisteren. Jullie zullen mij zoeken. En als je mij zoekt met heel je hart, - zul je mij vinden. Ja, jullie zullen mij weer vinden. En ik zal ervoor zorgen - dat het weer goed met jullie gaat. Ik haal jullie allemaal terug, uit alle - landen en alle plaatsen waar ik jullie heen gejaagd heb. Dan zullen jullie - terugkomen in Jeruzalem."}},{"ts":"2019-02-17","source":"2 Timoteus 2:1","fulltext":"http:\/\/bijbel.dagelijkswoord.nl\/bijbel\/2+Timoteus+2%3A1?from=json","wpId":"5919","text":{"nbv":"Mijn - kind, wees sterk door de genade van Christus Jezus.","nbg":"Gij dan, mijn - kind, wees krachtig in de genade van Christus Jezus,","statenvertaling":"Gij - dan, mijn zoon, word gesterkt in de genade, die in Christus Jezus is;","willibrord":"U - dan, mijn kind, wees sterk door de genade van Christus Jezus.","hsv":"U dan, - mijn zoon, word gesterkt in de genade die in Christus Jezus is.","naardense":"Jij - dan, mijn kind, wees krachtig in de genade die is in Christus Jezus,","bgt":"Timote\u00fcs, - mijn zoon, vertrouw erop dat Jezus Christus goed voor je is."}},{"ts":"2019-02-16","source":"1 - Korintiers 15:54-55","fulltext":"http:\/\/bijbel.dagelijkswoord.nl\/bijbel\/1+Korintiers+15%3A54-55?from=json","wpId":"5918","text":{"nbv":"En - wanneer dit vergankelijke lichaam is bekleed met het onvergankelijke, dit - sterfelijke met het onsterfelijke, zal wat geschreven staat in vervulling - gaan: ''De dood is opgeslokt en overwonnen. Dood, waar is je overwinning? - Dood, waar is je angel?''","nbg":"En zodra dit vergankelijke onvergankelijkheid - aangedaan heeft, en dit sterfelijke onsterfelijkheid aangedaan heeft, zal - het woord werkelijkheid worden, dat geschreven is: De dood is verzwolgen in - de overwinning. Dood, waar is uw overwinning? Dood, waar is uw prikkel?","statenvertaling":"En - wanneer dit verderfelijke zal onverderfelijkheid aangedaan hebben, en dit - sterfelijke zal onsterfelijkheid aangedaan hebben, alsdan zal het woord geschieden, - dat geschreven is: De dood is verslonden tot overwinning. Dood, waar is uw - prikkel? Hel, waar is uw overwinning?","willibrord":"En wanneer dit vergankelijke - met onvergankelijkheid is bekleed en dit sterfelijke met onsterfelijkheid, - dan zal het woord van de Schrift in vervulling gaan: De dood is verslonden, - de overwinning is behaald! Dood, waar is je overwinning? Dood, waar is je - angel?","hsv":"En wanneer dit vergankelijke zich met onvergankelijkheid bekleed - zal hebben, en dit sterfelijke zich met onsterfelijkheid bekleed zal hebben, - dan zal het woord geschieden dat geschreven staat: De dood is verslonden tot - overwinning. Dood, waar is uw prikkel? Graf, waar is uw overwinning?","naardense":"Maar - wanneer dit vergankelijke bekleed zal zijn met onvergankelijkheid en dit sterfelijke - bekleed zal zijn met onsterfelijkheid, dan zal het woord geschieden dat geschreven - is: ''verzwolgen is de dood door de overwinning; dood, waar is je overwinning, - dood, waar is je angel?''","bgt":"Ons sterfelijke lichaam zal dus veranderd - worden in een onsterfelijk lichaam. Dan wordt werkelijkheid wat in de heilige - boeken staat: ''De dood is overwonnen en voor altijd verdwenen. De dood heeft - geen macht meer en kan ons geen kwaad meer doen!''"}}],"strings":{"donatie":"Deze - informatie wordt u gratis aangeboden door Stichting Dagelijks Woord. Wilt - u een bijdrage leveren om het doorontwikkelen van deze app en andere bijbel-diensten - mogelijk te maken, dan kan dat via http:\/\/www.dagelijkswoord.nl\/over\/donatie","link":"If - you''re using the data from this feed, please be so kind to link to our website."},"debug_info":{"worker":"work_edge","generated":"2019-02-18 - 19:40:03"}}' - http_version: - recorded_at: Sun, 17 Feb 2019 23:00:00 GMT -recorded_with: VCR 4.0.0 + 2014.","nbv21":"De bijbeltekst in deze uitgave is ontleend aan de NBV21 (C) + Nederlands-Vlaams Bijbelgenootschap 2021","bb":"Het copyright berust bij stichting + BasisBijbel. Alle rechten voorbehouden.","nbg21":"De bijbeltekst in deze uitgave + is ontleend aan de NBV21 (C) Nederlands-Vlaams Bijbelgenootschap 2021"},"data":[{"ts":"2023-10-14","source":"Jakobus + 2:12","fulltext":"https:\/\/bijbel.dagelijkswoord.nl\/bijbel\/Jakobus+2%3A12?from=json","wpId":"7928","text":{"nbv":"Zorg + ervoor dat uw spreken en uw handelen de toets kunnen doorstaan van de wet + die vrijheid brengt.","nbg":"Spreekt z\u00f3 en handelt z\u00f3 als (mensen + past), die door de wet der vrijheid zullen geoordeeld worden.","nbv21":"Zorg + ervoor dat uw spreken en uw handelen de toets kunnen doorstaan van de wet, + die vrijheid brengt.","bb":"Spreek en doe dan z\u00f3, als hoort bij mensen + die door de ''wet van de vrijheid'' (dat is Jezus Christus) geoordeeld zullen + worden.","statenvertaling":"Spreekt alzo, en doet alzo, als die door de wet + der vrijheid zult geoordeeld worden.","willibrord":"Spreek en handel als mensen + die door de wet die vrijmaakt, geoordeeld zullen worden.","hsv":"Spreek z\u00f3 + en handel z\u00f3 als mensen die geoordeeld zullen worden door de wet van + de vrijheid.","naardense":"Z\u00f3 zult ge spreken en z\u00f3 zult ge doen: + als mensen die beoordeeld gaan worden door de Wet der vrijheid.","bgt":"Spreek + en leef dus zoals God het van jullie vraagt. Want hij zal jullie beoordelen. + Hij zal kijken of je geleefd hebt volgens zijn wet, die vrijheid geeft.","nbg21":"Zorg + ervoor dat uw spreken en uw handelen de toets kunnen doorstaan van de wet, + die vrijheid brengt."}},{"ts":"2023-10-13","source":"Johannes 8:31-32","fulltext":"https:\/\/bijbel.dagelijkswoord.nl\/bijbel\/Johannes+8%3A31-32?from=json","wpId":"7927","text":{"nbv":"En + tegen de Joden die in hem geloofden zei Jezus: ''Wanneer u bij mijn woord + blijft, bent u werkelijk mijn leerlingen. U zult de waarheid kennen, en de + waarheid zal u bevrijden.''","nbg":"Jezus dan zeide tot de Joden, die in Hem + geloofden: Als gij in mijn woord blijft, zijt gij waarlijk discipelen van + Mij en gij zult de waarheid verstaan, en de waarheid zal u vrijmaken.","nbv21":"En + tegen de Joden die in Hem geloofden zei Jezus: ''Wanneer u blijft vasthouden + aan wat Ik zeg, bent u werkelijk mijn leerlingen. U zult de waarheid kennen, + en de waarheid zal u bevrijden.''","bb":"Jezus zei tegen de Joden die in Hem + geloofden: Als jullie blijven geloven wat Ik zeg en doen wat Ik zeg, zijn + jullie echte leerlingen van Mij. Dan zullen jullie de waarheid gaan begrijpen, + en de waarheid zal jullie vrijmaken.","statenvertaling":"Jezus dan zeide tot + de Joden, die in Hem geloofden: Indien gijlieden in Mijn woord blijft, zo + zijt gij waarlijk Mijn discipelen; En zult de waarheid verstaan, en de waarheid + zal u vrijmaken.","willibrord":"Tegen die Joden die in Hem geloofden, zei + Jezus: ''Als u vasthoudt aan mijn woord, dan bent u werkelijk leerlingen van + Mij; dan zult u de waarheid leren kennen, en de waarheid zal u vrij maken.''","hsv":"Jezus + dan zei tegen de Joden die in Hem geloofden: Als u in Mijn woord blijft, bent + u werkelijk Mijn discipelen, en u zult de waarheid kennen, en de waarheid + zal u vrijmaken.","naardense":"Toen heeft Jezus gezegd, tot de Judee\u00ebrs + die in hem zijn gaan geloven: g\u00edj, als ge blijft bij mijn woord, zijt + ge waarlijk leerlingen van mij, en zult ge de waarheid kennen; de waarheid + zal u vrijmaken!","bgt":"Jezus zei tegen de Joden die in hem geloofden: ''Mijn + boodschap moet in jullie hart zijn. Alleen dan zijn jullie echt mijn leerlingen. + Dan zullen jullie de waarheid kennen, en daardoor zullen jullie bevrijd worden.''","nbg21":"En + tegen de Joden die in Hem geloofden zei Jezus: ''Wanneer u blijft vasthouden + aan wat Ik zeg, bent u werkelijk mijn leerlingen. U zult de waarheid kennen, + en de waarheid zal u bevrijden.''"}},{"ts":"2023-10-12","source":"Jeremia + 7:23","fulltext":"https:\/\/bijbel.dagelijkswoord.nl\/bijbel\/Jeremia+7%3A23?from=json","wpId":"7926","text":{"nbv":"Wees + mij gehoorzaam, dan zal ik jullie God zijn en zullen jullie mijn volk zijn. + Volg steeds de weg die ik jullie wijs, daar zullen jullie wel bij varen.","nbg":"Hoort + naar mijn stem, dan zal Ik u tot een God en zult gij Mij tot een volk zijn, + en wandelt op de ganse weg die Ik u gebied, opdat het u welga.","nbv21":"Wees + Mij gehoorzaam, dan zal Ik jullie God zijn en zullen jullie mijn volk zijn. + Volg steeds de weg die Ik jullie wijs, en het zal jullie goed gaan.","bb":"Luister + naar Mij en doe wat Ik zeg. Dan zal Ik jullie God zijn en zullen jullie mijn + volk zijn. Doe alles wat Ik zeg. Dan zal het goed met jullie gaan.","statenvertaling":"Maar + deze zaak heb Ik hun geboden, zeggende: Hoort naar Mijn stem, zo zal Ik u + tot een God zijn, en gij zult Mij tot een volk zijn; en wandelt in al den + weg, dien Ik u gebieden zal, opdat het u welga.","willibrord":"Dit alleen + heb Ik bevolen: Luister naar Mij, dan zal Ik uw God zijn en u zult mijn volk + zijn. Volg de weg die Ik u wijs, dan zal het goed gaan.","hsv":"Maar deze + zaak heb Ik hun geboden: Luister naar Mijn stem. Dan zal Ik u tot een God + zijn, en \u00fa zult Mij tot een volk zijn. Bewandel heel de weg die Ik u + gebieden zal en het zal u goed gaan.","naardense":"Hoort naar mijn stem, wezen + zal ik u tot God en gij zult mij tot gemeente wezen; wandelen zult ge over + heel de weg die ik u zal gebieden, opdat het u goedgaat!","bgt":"Luister altijd + naar wat ik zeg. Dan zal ik jullie God zijn, en dan zullen jullie mijn volk + zijn. Ik zal jullie vertellen hoe je moet leven. Als je doet wat ik wil, zal + het goed met jullie gaan.","nbg21":"Wees Mij gehoorzaam, dan zal Ik jullie + God zijn en zullen jullie mijn volk zijn. Volg steeds de weg die Ik jullie + wijs, en het zal jullie goed gaan."}}],"debug_info":{"worker":"work_edge","generated":"2023-10-14T04:22:30+00:00"}}' + recorded_at: Fri, 13 Oct 2023 22:00:00 GMT +recorded_with: VCR 6.1.0