Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 2 additions & 9 deletions .github/workflows/ruby.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,8 @@ jobs:
strategy:
fail-fast: false
matrix:
gemfile: ['5.2', '6.0', '6.1', '7.0']
ruby-version: ['2.6', '2.7', '3.0']
exclude:
- gemfile: '5.2'
ruby-version: '2.7'
- gemfile: '5.2'
ruby-version: '3.0'
- gemfile: '7.0'
ruby-version: '2.6'
gemfile: ['7.0', '7.1']
ruby-version: ['3.1', '3.2']

env:
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
Gemfile.lock
gemfiles/*.lock
TAGS
22 changes: 22 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# .rubocop.yml

# We want Exclude directives from different
# config files to get merged, not overwritten
inherit_mode:
merge:
- Exclude

require:
- standard
- standard-custom
- standard-performance
- rubocop-performance

inherit_gem:
standard: config/base.yml
standard-performance: config/base.yml
standard-custom: config/base.yml

AllCops:
SuggestExtensions: false
TargetRubyVersion: 3.2
29 changes: 17 additions & 12 deletions Appraisals
Original file line number Diff line number Diff line change
@@ -1,19 +1,24 @@
appraise '5.2' do
gem 'activerecord', '~> 5.2.0'
gem 'mysql2', '~> 0.4.0'
appraise "5.2" do
gem "activerecord", "~> 5.2.0"
gem "mysql2", "~> 0.4.0"
end

appraise '6.0' do
gem 'activerecord', '~> 6.0.3.3'
gem 'mysql2', '~> 0.4.0'
appraise "6.0" do
gem "activerecord", "~> 6.0.3.3"
gem "mysql2", "~> 0.4.0"
end

appraise '6.1' do
gem 'activerecord', '~> 6.1.0'
gem 'mysql2', '~> 0.5.3'
appraise "6.1" do
gem "activerecord", "~> 6.1.0"
gem "mysql2", "~> 0.5.3"
end

appraise '7.0' do
gem 'activerecord', '~> 7.0.0'
gem 'mysql2', '~> 0.5.3'
appraise "7.0" do
gem "activerecord", "~> 7.0.0"
gem "mysql2", "~> 0.5.3"
end

appraise "7.1" do
gem "activerecord", "~> 7.1.0"
gem "mysql2", "~> 0.5.5"
end
4 changes: 2 additions & 2 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
source 'https://rubygems.org'
source "https://rubygems.org"
gemspec

gem 'appraisal'
gem "appraisal"
6 changes: 3 additions & 3 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
desc 'Run tests'
desc "Run tests"
task :test do |t|
sh 'rspec spec'
sh "rspec spec"
end

task :default => :test
task default: :test
2 changes: 2 additions & 0 deletions gemfiles/.bundle/config
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
---
BUNDLE_RETRY: "1"
9 changes: 0 additions & 9 deletions gemfiles/6.0.gemfile

This file was deleted.

9 changes: 0 additions & 9 deletions gemfiles/6.1.gemfile

This file was deleted.

4 changes: 2 additions & 2 deletions gemfiles/5.2.gemfile → gemfiles/7.1.gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
source "https://rubygems.org"

gem "appraisal"
gem "activerecord", "~> 5.2.0"
gem "mysql2", "~> 0.4.0"
gem "activerecord", "~> 7.1.0"
gem "mysql2", "~> 0.5.5"

gemspec path: "../"
2 changes: 1 addition & 1 deletion lib/seeder/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
class Seeder
VERSION = '1.4.0'
VERSION = "1.5.0"
end
14 changes: 7 additions & 7 deletions seeder.gemspec
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# -*- encoding: utf-8 -*-
require 'rubygems' unless defined? Gem
require "rubygems" unless defined? Gem
require File.dirname(__FILE__) + "/lib/seeder/version"

Gem::Specification.new do |s|
Expand All @@ -13,11 +12,12 @@ Gem::Specification.new do |s|
s.required_rubygems_version = ">= 1.3.6"
s.files = `git ls-files`.split("\n")
s.extra_rdoc_files = ["README.md", "LICENSE.txt"]
s.license = 'MIT'
s.license = "MIT"

s.add_dependency('activerecord', '>= 5.2', '< 7.1')
s.add_dependency("activerecord", ">= 5.2", "< 7.2")

s.add_development_dependency('mysql2', '>= 0.4.4', '< 0.6.0')
s.add_development_dependency('rspec', '~> 3.0')
s.add_development_dependency('rake', '>= 10.4')
s.add_development_dependency("mysql2", ">= 0.4.4", "< 0.6.0")
s.add_development_dependency("rspec", "~> 3.0")
s.add_development_dependency("rake", ">= 10.4")
s.add_development_dependency("standard")
end
35 changes: 17 additions & 18 deletions spec/seeder_spec.rb
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
require 'spec_helper'
require "spec_helper"

describe Seeder do
before(:each) { Grade.delete_all }

let(:seeder) do
Seeder.new(
[{ 'student_id' => 1, 'course_id' => 1, 'grade' => 90 },
{ 'student_id' => 1, 'course_id' => 2, 'grade' => 80 }],
[{"student_id" => 1, "course_id" => 1, "grade" => 90},
{"student_id" => 1, "course_id" => 2, "grade" => 80}],
%w[student_id course_id],
Grade
)
end

describe '.create' do
it 'should call create on a new instance' do
describe ".create" do
it "should call create on a new instance" do
seeder = double
expect(Seeder).to receive(:new).with(:data, :keys, :model)
.and_return(seeder)
Expand All @@ -23,39 +23,39 @@
end
end

describe '#new' do
describe "#new" do
specify { expect(seeder.model).to eq Grade }
specify { expect(seeder.keys).to eq [:student_id, :course_id] }
specify do
expect(seeder.data).to eq(
[{ student_id: 1, course_id: 1, grade: 90 },
{ student_id: 1, course_id: 2, grade: 80 }]
[{student_id: 1, course_id: 1, grade: 90},
{student_id: 1, course_id: 2, grade: 80}]
)
end
end

describe '#delete_outdated_records' do
describe "#delete_outdated_records" do
before do
Grade.create!(student_id: 1, course_id: 3)
Grade.create!(student_id: 1, course_id: 1)
end

it 'should delete outdated records' do
it "should delete outdated records" do
expect { seeder.delete_outdated_records }.to change { Grade.count }.to(1)
expect(Grade.first.course_id).to eq 1
end
end

describe '#update_existing_records' do
describe "#update_existing_records" do
let!(:existing_grade) { Grade.create!(student_id: 1, course_id: 1) }

it 'should delete outdated records' do
it "should delete outdated records" do
expect { seeder.update_existing_records }
.to change { existing_grade.reload.grade }.to(90)
end
end

describe '#create_new_records' do
describe "#create_new_records" do
let!(:existing_grade) { Grade.create!(student_id: 1, course_id: 1) }

it 'should create new records when there are no existing records with
Expand All @@ -65,15 +65,15 @@
end
end

describe '#create' do
it 'calls the delete, update and create methods in order' do
describe "#create" do
it "calls the delete, update and create methods in order" do
expect(seeder).to receive(:delete_outdated_records).ordered
expect(seeder).to receive(:update_existing_records).ordered
expect(seeder).to receive(:create_new_records).ordered
seeder.create
end

it 'aborts when an exception is raised' do
it "aborts when an exception is raised" do
allow(seeder)
.to receive(:create_new_records)
.and_raise(ActiveRecord::RecordInvalid.new(Grade.new))
Expand All @@ -84,7 +84,7 @@
expect(Grade.all.map(&:attributes)).to eq(initial_attributes)
end

it 'produces the appropriate results' do
it "produces the appropriate results" do
grade1 = Grade.create!(student_id: 1, course_id: 3)
grade2 = Grade.create!(student_id: 1, course_id: 1)

Expand All @@ -104,5 +104,4 @@
expect(grade3.grade).to eq(80)
end
end

end
16 changes: 8 additions & 8 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
require 'active_record'
require 'seeder'
require "active_record"
require "seeder"

ActiveRecord::Base.establish_connection(
adapter: 'mysql2',
database: ENV.fetch('DB_NAME', 'polymorpheus_test'),
host: ENV.fetch('DB_HOST', '127.0.0.1'),
password: ENV.fetch('DB_PASSWORD', ''),
port: ENV.fetch('DB_PORT', '3306'),
username: ENV.fetch('DB_USERNAME', 'root')
adapter: "mysql2",
database: ENV.fetch("DB_NAME", "polymorpheus_test"),
host: ENV.fetch("DB_HOST", "127.0.0.1"),
password: ENV.fetch("DB_PASSWORD", ""),
port: ENV.fetch("DB_PORT", "3306"),
username: ENV.fetch("DB_USERNAME", "root")
)

RSpec.configure do |config|
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Patch support for MySQL 5.7+ onto ActiveRecord < 4.1.
if ActiveRecord::VERSION::MAJOR < 4 ||
(ActiveRecord::VERSION::MAJOR == 4 && ActiveRecord::VERSION::MINOR < 1)
(ActiveRecord::VERSION::MAJOR == 4 && ActiveRecord::VERSION::MINOR < 1)

require 'active_record/connection_adapters/abstract_mysql_adapter'
require "active_record/connection_adapters/abstract_mysql_adapter"
class ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter
NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY"
end
Expand Down