Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
398 views
in Technique[技术] by (71.8m points)

assert the size of the list in elixir

I would like to assert list's size. Currently I do it as follows:

assert devices = Repo.all from d in device, where d.uuid == ^attrs.uuid
assert devices.first == devices.last

Is there a better way to do that?

question from:https://stackoverflow.com/questions/37414910/assert-the-size-of-the-list-in-elixir

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Kernel.length/1 will return the size of a list:

length([1,2,3]) #3

You can do this from an Ecto query using:

query = from d in Device, where: d.uuid == ^uuid, select: fragment("count(?)", d.id)
assert  Repo.all(query)== 3

In Ecto 2 you can use Repo.aggregate/4

query = from d in Device, where: d.uuid == ^uuid)
assert Repo.aggregate(query, :count, :id) == 3

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...