Upstream sync
This commit is contained in:
@@ -86,34 +86,36 @@ describe GenerateContractsZipJob do
|
||||
end
|
||||
|
||||
it "generates ZIP containing CSV file with all filtered releases data for filtered releases" do
|
||||
lowercase_plural = subject.constantize.model_name.plural
|
||||
GenerateContractsZipJob.perform_now(project, download, subject, [], '', 'complete')
|
||||
if subject.respond_to?(:complete) && subject.respond_to?(:incomplete)
|
||||
lowercase_plural = subject.constantize.model_name.plural
|
||||
GenerateContractsZipJob.perform_now(project, download, subject, [], '', 'complete')
|
||||
|
||||
complete_releases = project.public_send(lowercase_plural).complete
|
||||
incomplete_releases = project.public_send(lowercase_plural).incomplete
|
||||
complete_releases = project.public_send(lowercase_plural).complete
|
||||
incomplete_releases = project.public_send(lowercase_plural).incomplete
|
||||
|
||||
generated_zip = download.file.blob.download
|
||||
csv_file_name = "#{project.name.parameterize}_#{lowercase_plural.gsub('_', '-')}.csv"
|
||||
Zip::InputStream.open(StringIO.new(generated_zip)) do |io|
|
||||
while entry = io.get_next_entry
|
||||
next unless entry.name == csv_file_name
|
||||
generated_zip = download.file.blob.download
|
||||
csv_file_name = "#{project.name.parameterize}_#{lowercase_plural.gsub('_', '-')}.csv"
|
||||
Zip::InputStream.open(StringIO.new(generated_zip)) do |io|
|
||||
while entry = io.get_next_entry
|
||||
next unless entry.name == csv_file_name
|
||||
|
||||
csv_file = entry.get_input_stream.read
|
||||
csv_file = entry.get_input_stream.read
|
||||
|
||||
release_class = Object.const_get subject
|
||||
release_headers = release_class.csv_headers
|
||||
release_class = Object.const_get subject
|
||||
release_headers = release_class.csv_headers
|
||||
|
||||
release_headers.each do |header|
|
||||
expect(csv_file).to match header
|
||||
expect(csv_file).not_to match translation_missing
|
||||
end
|
||||
release_headers.each do |header|
|
||||
expect(csv_file).to match header
|
||||
expect(csv_file).not_to match translation_missing
|
||||
end
|
||||
|
||||
complete_releases.each do |release|
|
||||
expect(csv_file).to match release.person_first_name
|
||||
end
|
||||
complete_releases.each do |release|
|
||||
expect(csv_file).to match release.person_first_name
|
||||
end
|
||||
|
||||
incomplete_releases.each do |release|
|
||||
expect(csv_file).not_to match release.person_first_name
|
||||
incomplete_releases.each do |release|
|
||||
expect(csv_file).not_to match release.person_first_name
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -164,16 +166,19 @@ describe GenerateContractsZipJob do
|
||||
end
|
||||
|
||||
context "generates ZIP for acquired media releases" do
|
||||
let(:release) { create(:acquired_media_release_with_contract_template, :native, project: project) }
|
||||
let(:release) { create(:acquired_media_release_with_contract_template, :native, project: project, name: "John Doe") }
|
||||
let(:release2) { create(:acquired_media_release_with_contract_template, :native, project: project, name: "Jane Doe") }
|
||||
let(:release3) { create(:acquired_media_release_with_contract_template, :native, project: project, name: "Brad Doe") }
|
||||
subject { 'AcquiredMediaRelease' }
|
||||
|
||||
it_behaves_like "generates ZIP containig CSV file with all releases data"
|
||||
it_behaves_like "generates ZIP containig CSV file with specific releases data"
|
||||
end
|
||||
|
||||
context "generates ZIP for appearance releases" do
|
||||
let(:release) { create(:appearance_release_with_contract_template, :native, project: project, person_name: "John Doe") }
|
||||
let(:incomplete_release) { create(:appearance_release_with_contract_template, project: project, person_name: "Jane Doe") }
|
||||
let(:complete_release) { create(:appearance_release_with_contract_template, :non_native, project: project, person_name: "Brad Doe") }
|
||||
let(:release) { create(:appearance_release_with_contract_template, :native, project: project, person_name: "John") }
|
||||
let(:incomplete_release) { create(:appearance_release_with_contract_template, project: project, person_name: "Jane") }
|
||||
let(:complete_release) { create(:appearance_release_with_contract_template, :non_native, project: project, person_name: "Brad") }
|
||||
subject { 'AppearanceRelease' }
|
||||
|
||||
it_behaves_like "generates ZIP containig CSV file with all releases data"
|
||||
@@ -181,45 +186,63 @@ describe GenerateContractsZipJob do
|
||||
end
|
||||
|
||||
context "generates ZIP for location releases" do
|
||||
let(:release) { create(:location_release_with_contract_template, :native, project: project) }
|
||||
let(:release) { create(:location_release_with_contract_template, :native, project: project, name: "John") }
|
||||
let(:release2) { create(:location_release_with_contract_template, :native, project: project, name: "Jane") }
|
||||
let(:release3) { create(:location_release_with_contract_template, :native, project: project, name: "Brad") }
|
||||
subject { 'LocationRelease' }
|
||||
|
||||
it_behaves_like "generates ZIP containig CSV file with all releases data"
|
||||
it_behaves_like "generates ZIP containig CSV file with specific releases data"
|
||||
end
|
||||
|
||||
context "generates ZIP for material releases" do
|
||||
let(:release) { create(:material_release_with_contract_template, :native, project: project) }
|
||||
let(:release) { create(:material_release_with_contract_template, :native, project: project, name: "John") }
|
||||
let(:release2) { create(:material_release_with_contract_template, :native, project: project, name: "Jane") }
|
||||
let(:release3) { create(:material_release_with_contract_template, :native, project: project, name: "Brad") }
|
||||
subject { 'MaterialRelease' }
|
||||
|
||||
it_behaves_like "generates ZIP containig CSV file with all releases data"
|
||||
it_behaves_like "generates ZIP containig CSV file with specific releases data"
|
||||
end
|
||||
|
||||
context "generates ZIP for medical releases" do
|
||||
let(:release) { create(:medical_release_with_contract_template, :native, project: project) }
|
||||
let(:release) { create(:medical_release_with_contract_template, :native, project: project, person_name: "John Doe") }
|
||||
let(:release2) { create(:medical_release_with_contract_template, :native, project: project, person_name: "Jane Doe") }
|
||||
let(:release3) { create(:medical_release_with_contract_template, :native, project: project, person_name: "Brad Doe") }
|
||||
subject { 'MedicalRelease' }
|
||||
|
||||
it_behaves_like "generates ZIP containig CSV file with all releases data"
|
||||
it_behaves_like "generates ZIP containig CSV file with specific releases data"
|
||||
end
|
||||
|
||||
context "generates ZIP for misc releases" do
|
||||
let(:release) { create(:misc_release_with_contract_template, :native, project: project) }
|
||||
let(:release) { create(:misc_release_with_contract_template, :native, project: project, person_name: "John Doe") }
|
||||
let(:release2) { create(:misc_release_with_contract_template, :native, project: project, person_name: "Jane Doe") }
|
||||
let(:release3) { create(:misc_release_with_contract_template, :native, project: project, person_name: "Brad Doe") }
|
||||
subject { 'MiscRelease' }
|
||||
|
||||
it_behaves_like "generates ZIP containig CSV file with all releases data"
|
||||
it_behaves_like "generates ZIP containig CSV file with specific releases data"
|
||||
end
|
||||
|
||||
context "generates ZIP for music releases" do
|
||||
let(:release) { create(:music_release_with_contract_template, project: project) }
|
||||
let(:release) { create(:music_release_with_contract_template, project: project, name: "John") }
|
||||
let(:release2) { create(:music_release_with_contract_template, project: project, name: "Jane") }
|
||||
let(:release3) { create(:music_release_with_contract_template, project: project, name: "Brad") }
|
||||
subject { 'MusicRelease' }
|
||||
|
||||
it_behaves_like "generates ZIP containig CSV file with all releases data"
|
||||
it_behaves_like "generates ZIP containig CSV file with specific releases data"
|
||||
end
|
||||
|
||||
context "generates ZIP for talent releases" do
|
||||
let(:release) { create(:talent_release_with_contract_template, :native, project: project) }
|
||||
let(:release) { create(:talent_release_with_contract_template, :native, project: project, person_name: "John Doe") }
|
||||
let(:release2) { create(:talent_release_with_contract_template, :native, project: project, person_name: "Jane Doe") }
|
||||
let(:release3) { create(:talent_release_with_contract_template, :native, project: project, person_name: "Brad Doe") }
|
||||
subject { 'TalentRelease' }
|
||||
|
||||
it_behaves_like "generates ZIP containig CSV file with all releases data"
|
||||
it_behaves_like "generates ZIP containig CSV file with specific releases data"
|
||||
end
|
||||
|
||||
context "When there are errors" do
|
||||
|
||||
@@ -23,7 +23,7 @@ describe MatchAppearanceReleasesJob do
|
||||
MatchAppearanceReleasesJob.perform_now project, attachments
|
||||
end
|
||||
|
||||
it "does not create new appearance release if BrayniacAI returns empty matches array" do
|
||||
it "creates a new incomplete appearance release for headshots which cannot be matched by BrayniacAI" do
|
||||
signed_ids = [dummy_appearance_release.person_photo.blob.signed_id]
|
||||
keys = [dummy_appearance_release.person_photo.key]
|
||||
payload = {
|
||||
@@ -44,9 +44,41 @@ describe MatchAppearanceReleasesJob do
|
||||
expect(BrayniacAI::QrMatching).to receive(:create!).with(qr_matching_payload).and_return(qr_matching_mock_response)
|
||||
expect(dummy_matching_request).to receive(:destroy)
|
||||
|
||||
MatchAppearanceReleasesJob.perform_now project, signed_ids
|
||||
expect {
|
||||
MatchAppearanceReleasesJob.perform_now project, signed_ids
|
||||
}.to change{AppearanceRelease.count}.by(1)
|
||||
|
||||
expect(AppearanceRelease.last).to eq dummy_appearance_release
|
||||
expect(AppearanceRelease.last.contract).not_to be_attached
|
||||
expect(AppearanceRelease.last.person_photo).to be_attached
|
||||
end
|
||||
|
||||
it "creates a new incomplete appearance release for contracts which cannot be matched by BrayniacAI" do
|
||||
signed_ids = [dummy_appearance_release.contract.blob.signed_id]
|
||||
keys = [dummy_appearance_release.contract.key]
|
||||
payload = {
|
||||
project: project,
|
||||
attachments: signed_ids
|
||||
}
|
||||
qr_matching_payload = {
|
||||
bucket: '',
|
||||
files: keys,
|
||||
request_id: dummy_matching_request.id
|
||||
}
|
||||
qr_matching_mock_response = double(
|
||||
request_id: dummy_matching_request.id,
|
||||
matches: []
|
||||
)
|
||||
|
||||
expect(MatchingRequest).to receive(:create).with(payload).and_return(dummy_matching_request)
|
||||
expect(BrayniacAI::QrMatching).to receive(:create!).with(qr_matching_payload).and_return(qr_matching_mock_response)
|
||||
expect(dummy_matching_request).to receive(:destroy)
|
||||
|
||||
expect {
|
||||
MatchAppearanceReleasesJob.perform_now project, signed_ids
|
||||
}.to change{AppearanceRelease.count}.by(1)
|
||||
|
||||
expect(AppearanceRelease.last.contract).to be_attached
|
||||
expect(AppearanceRelease.last.person_photo).not_to be_attached
|
||||
end
|
||||
|
||||
it "creates new incomplete appearance release if BrayniacAI returns single headshot match" do
|
||||
@@ -84,6 +116,49 @@ describe MatchAppearanceReleasesJob do
|
||||
expect(AppearanceRelease.last.contract).not_to be_attached
|
||||
end
|
||||
|
||||
it "creates new appearance releases for matches and unmatches at the same time" do
|
||||
signed_ids = [dummy_appearance_release.contract.blob.signed_id, dummy_appearance_release.person_photo.blob.signed_id]
|
||||
keys = [dummy_appearance_release.contract.key, dummy_appearance_release.person_photo.blob.key]
|
||||
payload = {
|
||||
project: project,
|
||||
attachments: signed_ids
|
||||
}
|
||||
qr_matching_payload = {
|
||||
bucket: '',
|
||||
files: keys,
|
||||
request_id: dummy_matching_request.id
|
||||
}
|
||||
mock_match = double(
|
||||
headshots: [],
|
||||
contracts: [keys.first],
|
||||
unknowns: [],
|
||||
identifier: 'some/identifier/123'
|
||||
)
|
||||
matches = [mock_match]
|
||||
qr_matching_mock_response = double(
|
||||
request_id: dummy_matching_request.id,
|
||||
matches: matches
|
||||
)
|
||||
|
||||
expect(MatchingRequest).to receive(:create).with(payload).and_return(dummy_matching_request)
|
||||
expect(BrayniacAI::QrMatching).to receive(:create!).with(qr_matching_payload).and_return(qr_matching_mock_response)
|
||||
expect(dummy_matching_request).to receive(:destroy)
|
||||
|
||||
expect {
|
||||
MatchAppearanceReleasesJob.perform_now project, signed_ids
|
||||
}.to change{AppearanceRelease.count}.by(2)
|
||||
|
||||
matched_release, unmatched_release = AppearanceRelease.last(2)
|
||||
|
||||
expect(matched_release.identifier).to eq mock_match.identifier
|
||||
expect(matched_release.person_photo).not_to be_attached
|
||||
expect(matched_release.contract).to be_attached
|
||||
|
||||
expect(unmatched_release.identifier).to be_nil
|
||||
expect(unmatched_release.person_photo).to be_attached
|
||||
expect(unmatched_release.contract).not_to be_attached
|
||||
end
|
||||
|
||||
it "creates new incomplete appearance release if BrayniacAI returns single contract match" do
|
||||
signed_ids = [dummy_appearance_release.contract.blob.signed_id]
|
||||
keys = [dummy_appearance_release.contract.key]
|
||||
@@ -213,4 +288,4 @@ describe MatchAppearanceReleasesJob do
|
||||
expect(releases[1].contract.attached?).to eq true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user