Browse Source

Fixed issue #2 and likely #1

master
Ludovic 'Archivist' Lagouardette 5 years ago
parent
commit
a5acf8a427
2 changed files with 64 additions and 2 deletions
  1. +37
    -1
      spec/sales_backend_spec.cr
  2. +27
    -1
      src/sales_backend/address.cr

+ 37
- 1
spec/sales_backend_spec.cr View File

@ -6,6 +6,42 @@ describe SalesBackend do
String.from_json(Global.response.not_nil!.body).should eq "OK"
end
it "can compare addresses" do
address_str1 = Address.from_json %(
{
"name": "String",
"address1": "String",
"address2": "{type: String, nilable: true}",
"postcode": "00001",
"city": "String",
"country": 2
}
)
address_str2 = Address.from_json %(
{
"name": "String",
"address1": "String",
"address2": "{type: String, nilable: true}",
"postcode": "00002",
"city": "String",
"country": 2
}
)
address_str3 = Address.from_json %(
{
"name": "String",
"address1": "String",
"address2": "{type: String, nilable: true}",
"postcode": "00003",
"city": "String",
"country": 2
}
)
(address_str1<=>address_str1).should eq( 0)
(address_str3<=>address_str2).should eq(1)
(address_str1<=>address_str2).should eq(-1)
end
it "can add a user able to log in and out" do
Dir.mkdir_p Statics.data_path + "user"
usr = User.new("dummy@domain.com")
@ -46,7 +82,7 @@ describe SalesBackend do
Global.response.not_nil!.status_code.should eq(200)
address_state = Array(Address).from_json(Global.response.not_nil!.body)
expected_address_state = Array(Address).from_json(new_address_str)
(address_state.to_json==expected_address_state.to_json).should be_true
(address_state.to_json == expected_address_state.to_json).should be_true
get "/user/tokens", headers
Global.response.not_nil!.status_code.should eq(200)

+ 27
- 1
src/sales_backend/address.cr View File

@ -20,6 +20,32 @@ class Address
is_default: {type: Bool, default: false},
)
def <=> (other : Address)
self.to_json<=>other.to_json
cmp = @name<=>other.name
if cmp==0
cmp = @address1<=>other.address1
if cmp==0
if @address2.nil?
if(other.address2.nil?)
cmp=0
elsif
cmp=-1
end
elsif other.address2.nil?
cmp=1
else
cmp = @address2.not_nil!<=>other.address2.not_nil!
end
if cmp==0
cmp = @postcode<=>other.postcode
if cmp==0
cmp = @city<=>other.city
if cmp==0
cmp = @country<=>other.country
end
end
end
end
end
return cmp
end
end

Loading…
Cancel
Save