|
43 | 43 | end |
44 | 44 |
|
45 | 45 | describe '#create' do |
46 | | - it 'creates creates/indexes a document and returns it' do |
47 | | - stub_request(:post, Typesense::ApiCall.new(typesense.configuration).send(:uri_for, '/collections/companies/documents', typesense.configuration.nodes[0])) |
48 | | - .with(body: document, |
49 | | - headers: { |
50 | | - 'X-Typesense-Api-Key' => typesense.configuration.api_key, |
51 | | - 'Content-Type' => 'application/json' |
52 | | - }) |
53 | | - .to_return(status: 200, body: JSON.dump(document), headers: { 'Content-Type': 'application/json' }) |
| 46 | + context 'when no options are specified' do |
| 47 | + it 'creates creates/indexes a document and returns it' do |
| 48 | + stub_request(:post, Typesense::ApiCall.new(typesense.configuration).send(:uri_for, '/collections/companies/documents', typesense.configuration.nodes[0])) |
| 49 | + .with(body: document, |
| 50 | + headers: { |
| 51 | + 'X-Typesense-Api-Key' => typesense.configuration.api_key, |
| 52 | + 'Content-Type' => 'application/json' |
| 53 | + }) |
| 54 | + .to_return(status: 200, body: JSON.dump(document), headers: { 'Content-Type': 'application/json' }) |
| 55 | + |
| 56 | + result = companies_documents.create(document) |
| 57 | + |
| 58 | + expect(result).to eq(document) |
| 59 | + end |
| 60 | + end |
54 | 61 |
|
55 | | - result = companies_documents.create(document) |
| 62 | + context 'when an option is specified' do |
| 63 | + it 'creates creates/upserts a document and returns it' do |
| 64 | + stub_request(:post, Typesense::ApiCall.new(typesense.configuration).send(:uri_for, '/collections/companies/documents', typesense.configuration.nodes[0])) |
| 65 | + .with(body: document, |
| 66 | + headers: { |
| 67 | + 'X-Typesense-Api-Key' => typesense.configuration.api_key, |
| 68 | + 'Content-Type' => 'application/json' |
| 69 | + }, |
| 70 | + query: { |
| 71 | + 'upsert' => 'true' |
| 72 | + }) |
| 73 | + .to_return(status: 200, body: JSON.dump(document), headers: { 'Content-Type': 'application/json' }) |
56 | 74 |
|
57 | | - expect(result).to eq(document) |
| 75 | + result = companies_documents.create(document, upsert: true) |
| 76 | + |
| 77 | + expect(result).to eq(document) |
| 78 | + end |
58 | 79 | end |
59 | 80 | end |
60 | 81 |
|
61 | 82 | describe '#create_many' do |
62 | | - it 'creates creates/indexes documents in bulk' do |
63 | | - stub_request(:post, Typesense::ApiCall.new(typesense.configuration).send(:uri_for, '/collections/companies/documents/import', typesense.configuration.nodes[0])) |
64 | | - .with(body: "#{JSON.dump(document)}\n#{JSON.dump(document)}", |
65 | | - headers: { |
66 | | - 'X-Typesense-Api-Key' => typesense.configuration.api_key |
67 | | - }) |
68 | | - .to_return(status: 200, body: JSON.dump({ 'success' => true }), headers: { 'Content-Type': 'text/plain' }) |
| 83 | + context 'when no options are specified' do |
| 84 | + it 'creates creates/indexes documents in bulk' do |
| 85 | + stub_request(:post, Typesense::ApiCall.new(typesense.configuration).send(:uri_for, '/collections/companies/documents/import', typesense.configuration.nodes[0])) |
| 86 | + .with(body: "#{JSON.dump(document)}\n#{JSON.dump(document)}", |
| 87 | + headers: { |
| 88 | + 'X-Typesense-Api-Key' => typesense.configuration.api_key |
| 89 | + }) |
| 90 | + .to_return(status: 200, body: JSON.dump({ 'success' => true }), headers: { 'Content-Type': 'text/plain' }) |
| 91 | + |
| 92 | + result = companies_documents.create_many([document, document]) |
| 93 | + |
| 94 | + expect(result).to eq([{ 'success' => true }]) |
| 95 | + end |
| 96 | + end |
| 97 | + |
| 98 | + context 'when an option is specified' do |
| 99 | + it 'creates creates/indexes documents in bulk, with the option' do |
| 100 | + stub_request(:post, Typesense::ApiCall.new(typesense.configuration).send(:uri_for, '/collections/companies/documents/import', typesense.configuration.nodes[0])) |
| 101 | + .with(body: "#{JSON.dump(document)}\n#{JSON.dump(document)}", |
| 102 | + headers: { |
| 103 | + 'X-Typesense-Api-Key' => typesense.configuration.api_key |
| 104 | + }, |
| 105 | + query: { |
| 106 | + 'upsert' => 'true' |
| 107 | + }) |
| 108 | + .to_return(status: 200, body: JSON.dump({ 'success' => true }), headers: { 'Content-Type': 'text/plain' }) |
69 | 109 |
|
70 | | - result = companies_documents.create_many([document, document]) |
| 110 | + result = companies_documents.create_many([document, document], upsert: true) |
71 | 111 |
|
72 | | - expect(result).to eq([{ 'success' => true }]) |
| 112 | + expect(result).to eq([{ 'success' => true }]) |
| 113 | + end |
73 | 114 | end |
74 | 115 | end |
75 | 116 |
|
76 | 117 | describe '#import' do |
77 | | - context 'when upsert is not specified' do |
| 118 | + context 'when no options are specified' do |
78 | 119 | it 'imports documents in JSONL format' do |
79 | 120 | stub_request(:post, Typesense::ApiCall.new(typesense.configuration).send(:uri_for, '/collections/companies/documents/import', typesense.configuration.nodes[0])) |
80 | 121 | .with(body: "#{JSON.dump(document)}\n#{JSON.dump(document)}", |
|
89 | 130 | end |
90 | 131 | end |
91 | 132 |
|
92 | | - context 'when upsert is true' do |
93 | | - it 'imports documents in JSONL format, with upsert query parameter' do |
| 133 | + context 'when an option is specified' do |
| 134 | + it 'imports documents in JSONL format, with the option' do |
94 | 135 | stub_request(:post, Typesense::ApiCall.new(typesense.configuration).send(:uri_for, '/collections/companies/documents/import', typesense.configuration.nodes[0])) |
95 | 136 | .with(body: "#{JSON.dump(document)}\n#{JSON.dump(document)}", |
96 | 137 | headers: { |
|
0 commit comments